Jixryo Computers
Desk computers placed anywhere and work laptops for every job and gang. Organizations with roles, hiring, laptops, payroll, doors, messages and files, and a City Hall that opens new ones.
Version 0.1.1 Updated See it on its script page
On this page
Jixryo Computers gives every job and gang in the city its computers: desk computers staff place anywhere, and work laptops issued to members. Every qbx_core job and gang is an organization run from them, with roles on top of the grades, hiring by offer, laptops, payroll, doors, messages and files, and City Hall opens new organizations as new qbx jobs. The server decides everything; the page only shows what the server sent, and every call is checked again.
What players get
- Desk computers. Sit down on the chair, pull up to the desk (the chair rolls in), and the view moves onto the monitor itself. Its desktop is drawn on the glass with the room around it, and your mouse works on it. It plays GTA Online's CEO office desk set as a networked scene, so everyone sees you sit, the chair roll in and you lean back. Anyone may sit; only the organization's people and city staff get its desktop, anyone else a locked screen.
- Laptops. A laptop is an item. Using it while facing a table, your character takes the bag off, sets the laptop on the table and opens it (the Pacific Standard hack set, as a networked scene), and its desktop comes up on the laptop's own screen at once, or the locked screen when it is not yours. Esc steps back, then E uses it again and G packs it away. Getting into a vehicle, ragdolling or dying packs it away at once, and so does the server when the laptop is revoked or given away. The table must be within 12 cm of the height the animation was made for. Its battery is only shown.
- Organizations. Every qbx job and gang (not
unemployedornone). Membership and grades are qbx_core's own, so every script that checks jobs keeps working. On top of the grade sits a role: the owner (the person City Hall named; until then whoever holds the top grade, if it is a boss grade), managers (qbx boss grades) and employees. The owner may do everything; a manager what the owner allows (hire, let go, laptops, doors, cameras and announcements by default; also change grades, run payroll and spend from the account when given); nobody acts on themselves or on the owner, managers act on employees only, and a manager gives grades below their own. - Hiring. By State ID, or someone standing beside you. Only those who may hire can look a State ID up. The person gets the offer on their own screen, now or the next time they come into the city, and joins when they accept. Someone with no job starts working there at once. An offer runs out after 7 days.
- Laptops issued. One active laptop per member, within the organization's allowance (10 by default, set at City Hall). A new laptop goes into the holder's pockets if they stand beside you, else into yours; if they are away it waits for them. A revoked or lost laptop opens to a locked screen, as does someone else's. Letting someone go revokes theirs.
- Staff and payroll. Hours on duty are counted from qbx_core's duty state; members see their own week. Payroll is off by default, since qbx_core already pays everyone on duty every paycheck. Turned on, it pays each member's hours this week at their grade's payment from the organization's account (Jixryo Bank); someone away is paid when they come back.
- Doors. The organization's ox_doorlock doors (doors whose groups name it). You lock and unlock those your grade opens; managers with the doors power can do every one. A door changed from anywhere shows on every open screen.
- Account. Jixryo Bank's balance and latest statement lines for the job or gang. Moving money is the Bank's; the Bank app opens from here when it is on the computer.
- Messages. General, Announcements (posted by those who may) and Managers. The last 200 of each are kept.
- Files. Folders and notes. A note's writer, managers and the owner change it, and a folder goes once it is empty.
- Other apps. The Bank (everyone), Cameras (those with the cameras power) and the MDT (police organizations) open in a computer's window when their resources run, and any resource can add its own page.
What staff get
- City Hall, for city staff (
group.godandgroup.admin): every organization with its owner and counts. New opens a qbx job (a gang for gangs) with 5 grades fromConfig.newOrg, registered withCreateJobson every start; qbx_core'sjobs.luais never written. The owner goes on the top grade and gets a manager laptop. Changing one: the owner (someone already in it), the mark, the colour, business or government, and the laptop allowance. Every City Hall change is audited. - Placing desk computers with
/computers: look at a monitor and press E, or press G to bring one (pick the model, set it down where you look, scroll to turn it, E places it); the same for the chair; then whose computer it is and its name. Only models the computers know work: their glass and their seat were measured from the game files (30 monitors and 31 office chairs inshared/models.lua). The map's own chair at that spot is hidden and replaced by the computer's own. Computers near you changes whose a computer is, renames it or removes it. - Staff on any computer. City staff get any organization's desktop and act as its owner there; every such change is audited.
- Version 0.1.1 runs what happens on login (the duty clock, payroll that waited, job offers, laptops made while away) from qbx_core's server-side
QBCore:Server:PlayerLoaded. 0.1.0 listened to the event players' games send, which FiveM never passed to this resource, so none of it ran. - Known limits, from the README: the laptop's table height comes from the animation's own offsets, so laptops that float or sink in game need measuring there. Cameras opened on a computer cannot go live while you are on the screen (Jixryo Cameras refuses while another camera is showing); watch live from the tablet. Hosted pages like the MDT and the Bank work by request on a computer and do not push updates to it. On qbx_core 1.23.0, changing an offline member's grade or letting them go leaves one extra event handler in qbx_core each time; harmless at normal use, gone after a qbx_core restart.
Install
What it replaces. Nothing by name. It sits on qbx_core's own jobs, gangs and grades, so every script that checks jobs keeps working beside it.
Order. It depends on ox_lib, oxmysql, qbx_core, ox_inventory and Jixryo Core, and uses ox_target (the Jixryo fork, for the chair's Sit down), ox_doorlock (Doors), Jixryo Bank (Account and payroll), Jixryo Cameras (Cameras) and Jixryo MDT (the MDT at police computers) when they run. Start it after them all.
server.cfg ensure ox_target ensure ox_doorlock ensure jixryo_core ensure jixryo_bank ensure jixryo_security ensure jixryo_mdt ensure jixryo_computersThe laptop item. The Jixryo ox_inventory fork has it (
data/items/jackson.lua); upload the fork with this resource. On any other ox_inventory, add it to an item file; each laptop's name and description come from its metadata (for example "LS Customs laptop" and "LS Customs · Jordan Hale · LT-0042").lua ['work_laptop'] = { label = 'Work Laptop', weight = 2500, stack = false, close = true, description = 'A work laptop. It opens only for the person it was issued to.', client = { image = 'laptop.png', export = 'jixryo_computers.useLaptop' }, },Database. The tables make themselves on the first start, as one Jixryo Core migration step:
jixryo_comp_orgs,_laptops,_invites,_log,_messages,_docs,_hours,_payoutsand_stations.City staff are
group.godandgroup.admin(Config.staff). They get City Hall and/computers.Restart the whole server the first time, so every resource sees the new item and the computers' jobs.
How other scripts' calls behave
- It answers as itself only. Its exports live under
jixryo_computers. Membership lives in qbx_core'splayer_groups, so a script that asks qbx_core about a player's job gets the same answer the computers work from. - qbx_core. It reads jobs, gangs and members, puts people on grades and takes them off (
AddPlayerToJob,AddPlayerToGang,RemovePlayerFromJob,RemovePlayerFromGang, the primary job or gang for someone with none), registers City Hall's organizations withCreateJobsandCreateGangswithout committing, and listens for its job, gang, duty and load events. When qbx_core restarts, City Hall's organizations are registered again. - ox_doorlock. Doors are read with
getAllDoorsandgetDoor, switched withsetDoorState, andox_doorlock:stateChangedrefreshes the screens of the organizations that own the door. - Jixryo Bank. The account's balance and payroll go through
GetGroupBalanceandRemoveGroupMoney; the statement's last 25 lines are read from the Bank's own tables, read only. - Hosted pages.
Config.hostedputs other resources' pages on the desktop without a call from them: the Bank for everyone, Cameras for the cameras power, the MDT for police organizations. A page written for the tablet's app frame works here as it is. - Jixryo Phone reads this resource's stations table so every desk computer is a phone charger.
- It uses Jixryo Core's permission, validation, rate limit, inventory, player, HUD and audit modules, ox_inventory's slots and ox_target's zones.
- Who sits where is published to every game as the global state
jxcSeats.
Its own API
Client exports:
| Export | What it does |
|---|---|
AddApp({ id, name, ui, icon?, orgs?, roles?, devices? }) | Puts your page on the computers' desktops. id is letters, digits, _ and - (up to 32), name 1 to 24 characters, ui and icon pages served from a resource (https://cfx-nui-<resource>/...). orgs limits it to those organizations, roles to owner, manager or employee, devices to desk or laptop. Returns true, or false and why. The page asks its own resource for everything, and that resource checks the player. Apps go when their resource stops. |
RemoveApp(id) | Takes it off; only the resource that added it. |
SendAppMessage(id, payload) | Pushes into your page while a desktop is up; only the resource that added it. |
useLaptop | The laptop item's client export; ox_inventory calls it when the item is used. |
Events:
| Event | Direction | What it carries |
|---|---|---|
jixryo_computers:client:changed | to the organization's open screens | what changed (members, laptops, powers, messages, files, doors, account, org); each page fetches what it shows again |
jixryo_computers:client:kicked | to one player | the screen was closed from the server, with why |
jixryo_computers:client:offer | to one player | a job offer to answer on their own screen |
jixryo_computers:client:stations | to every game | the desk computers |
jxcSeats | global state | which chair is taken by whom |
The screen's own calls go through one server callback (jixryo_computers:server:act, with the action's name), and the laptop, chair, station and offer calls have their own; they are not an API, and the server checks every one.
Commands and keybinds
| Command or key | Who | What it does |
|---|---|---|
/computers | city staff | Place a computer, or the computers near you (change whose it is, rename, remove) |
| E, G, Backspace while placing | city staff | E uses the monitor or chair you look at, G brings one (scroll turns it, Shift for finer steps, E places it, Backspace goes back), Backspace cancels |
| Third eye on the chair, Sit down | anyone | Sits down; the pill shows "Sitting down…" |
| Seated: G, F, E | the person in the chair | Stand up, fidget, pull up to the desk |
| Pulled up: G, E, F | the person in the chair | Stand up, lean back, use the computer |
| On the screen: Esc | Steps back to the desk | |
| Using the laptop item | its holder, facing a table | Sets it up and opens it |
| Laptop away from the screen: Esc, E, G | its holder | Esc steps back, E uses it again, G packs it away |
Configuration
config.lua:
| Key | Default | What it does |
|---|---|---|
item | 'work_laptop' | The laptop item, one per person, bound to its organization and holder |
staff | group.god, group.admin | City staff: City Hall, the placer, any computer |
skip | unemployed, none | Jobs and gangs that are no organization |
government | types leo, ems, gov, doj; jobs government, judge | Which jobs are government offices; other jobs are businesses, gangs gangs |
defaultPowers | hire, fire, laptops, doors, cameras, announce | What managers may do until the owner changes it |
laptops | limit 10, maxLimit 50, handRange 3.0 | Active laptops per organization, the most City Hall may allow, how close the holder stands to get it straight away |
newOrg | 5 job grades (Trainee 50 to Owner 150, the top two boss grades), 5 gang grades (Associate to Boss), defaultDuty false, offDutyPay false, 8 colours | What City Hall opens |
payroll | enabled false, rate 1.0 | Payroll from the account; a grade's payment per hour on duty |
messages | keep 200, length 400 | Messages kept per channel, and their length |
files | keep 300, name 40, text 4000 | Folders and notes per organization, name and text lengths |
log | keep 300 | Log lines per organization |
invites | days 7 | An offer nobody answers goes away after this |
stations | drawDistance 30.0, sitDistance 2.2 | How near a desk computer gets its chair and props, and the server's check when someone sits |
chairAnims | the CEO office set (male and female), driver ex_prop_offchair_exec_01 | The sitting scene and the chair it was made for |
laptopAnim | the Pacific Standard hack set, laptop hei_prop_hst_laptop, the heist bag, reach 1.4, tolerance 0.12 | The laptop scene, how far ahead a table is looked for, how far its height may differ |
camera | fov 42.0, fill 0.64, ease 650 | The camera in front of the glass: the screen's share of the view and the move's time |
hosted | Bank (everyone), Cameras (cameras power), MDT (police, sheriff, bcso, sasp) | Other resources' pages that open as apps |
Security
- One gate for every screen call. The session is re-checked (a laptop still in your pockets and still active; a desk computer with you still in its chair and at it), who you are in the organization is recomputed (grade and role), the call is rate limited and one runs at a time per player. An unknown action is refused, and a call that fails closes nothing and answers with an error.
- A laptop's metadata is only a label. What it opens is read from the database every time: its holder, its status and whether they are still in the organization. Anyone else, a revoked or lost laptop, or a laptop whose organization is gone gets the locked screen, which says whose it is and why. A laptop handed away stops working at once. City staff open any organization's laptop.
- Roles. The owner may do everything; a manager what the owner gave managers; an employee none of it. Only the owner makes or unmakes managers and changes what managers may do. Nobody acts on themselves or on the owner, managers act on employees only, grades go only below your own, and the top grade is the owner's. An employee laptop opens the employee desktop, whatever the holder's grade.
- Hiring. The State ID is looked up only by those who may hire. The offer is accepted on the person's own screen, within 7 days, onto a grade that still exists.
- Laptops respect the allowance and one per member; managers issue employee laptops to employees only, and only the owner revokes a manager laptop. Revoking closes the holder's open screen.
- Messages and files. Channels by role, announcements by power, text cleaned and cut to length, the oldest trimmed. A note is changed or deleted by its writer, managers and the owner; a folder must be empty first.
- Doors. Only the organization's own doors, each opened by grade or by the doors power, through ox_doorlock.
- Money. The balance and statement show to the owner and to managers with the account or payroll power. Payroll needs the power, the setting on, the bank running and enough in the account.
- City Hall is staff only, and the owner it names must already be a member. Every change is audited, as are payroll runs, placed, changed and removed computers, and anything city staff do on a computer of an organization they are not in.
- Desk computers. Only staff place them, from known models, standing within 30 m, with the chair at the monitor's desk. One person per chair, within 2.2 m when they sit; standing up, leaving or the computer being removed frees it and closes the desktop.
- The client never decides. It draws what the server sent and relays the page's calls.
Tests
Two suites in dev-tools/luarun/tests, sharing jixryo_computers.setup.lua (a real database with Jixryo Core's real validate, perm and db modules, qbx_core's jobs, gangs and player_groups, ox_doorlock and Jixryo Bank stood in). Both run on 2026-10-31.
| Suite | Result | What it covers |
|---|---|---|
jixryo_computers.lua | 21 passed, 0 failed | The tables; organizations from jobs and gangs and their kinds; the owner rule; opening a laptop (holder, thief, revoked, lost, never set up, let go); an employee laptop for a manager; what each role sees; roles and grades; letting people go; hiring and offers; laptops issued, delivered late and revoked; powers; messages; files; doors; the account and payroll; the login path through qbx_core's server-side event; duty hours; City Hall; desk computers and their chairs; the session check on every call. |
jixryo_computers.client.lua | 8 passed, 0 failed | A stand-in player's game against the real server: the chair near you (the map's hidden, ours in its place, Sit down, taken for everyone); the sitting scene with the executive chair under the station's; the keys from sitting to the desktop and back; someone else's locked screen; the laptop set down at the scene's height, used, stepped back from and packed away; a table too high, too low or missing; the server closing an open laptop; a job offer answered on your screen. |
cd dev-tools/luarun
node run.mjs ../../jixryo_scripts/jixryo_computers tests/jixryo_computers.lua
node run.mjs ../../jixryo_scripts/jixryo_computers tests/jixryo_computers.client.luaThe README also records that the page is checked with dev-tools/nui/cdp-game.mjs.
Check it in game
- Start with the laptop item added. The console shows the database step applied once.
/computers, Place a computer: pick a desk monitor (it outlines), then its chair, then your job. The map's chair swaps for the computer's own.- Walk up and press E on Sit down: the pill, then the seated keys. E rolls the chair in, F moves the view onto the monitor with the desktop fitting its glass, Esc steps back, E leans back, G stands up. A second player sees all of it, and the chair moves for them too.
- At the desktop as the owner: Organization › Members, make an employee a manager, change a grade, let someone go. Offer someone beside you a job: they accept on their screen and are in the job. Issue a laptop to someone beside you: it lands in their pockets.
- Use the laptop at a table: the bag, the laptop out, the lid up, the desktop on its screen. Esc, E, Esc, G: packed away. At a counter that is too high: "That is too high to set it on."
- Someone else's laptop shows the locked screen with whose it is. Revoke a laptop while it is open: it closes and is packed away.
- Doors: lock and unlock a door of your job from the desk. ox_doorlock's door changes for everyone.
- City Hall as staff: New, with a State ID as owner. A new job exists (
/setjoblists it) and its owner has a manager laptop. Restart qbx_core: the job is still there. - The Bank and Cameras appear on the dock when those resources run, and open in a window.