The panel
Open it with /jobcreator. What each admin can see and do depends on their ACE permissions.
Overview
What the server has and what needs a decision: jobs ready to use, locations placed, framework jobs, and warnings such as jobs with no ranks, jobs switched off, framework definitions that changed, or missing dependencies.
Jobs
Every job, with its ownership, ranks, locations and access.
Ownership
| Ownership | Meaning |
|---|---|
| Managed | Created here. kyoJobCreator owns the definition |
| Adopted | Imported from the framework and taken over. kyoJobCreator owns it now |
| Linked | The framework owns the definition: name, label and ranks are read, never written. Locations, economy and permissions can still be added. Adopt it to take it over |
Creating a job
Name (technical: lowercase, no spaces, cannot change later), display name, type (law enforcement, EMS, civilian, none), whitelisted or open, on duty by default, pay while off duty, and enabled. A disabled job stays in the panel but is not registered with the framework.
Jobs can also be duplicated, or exported and imported as presets, through the exports.
Job workspace
| Tab | What it does |
|---|---|
| General | Name, display name, type, whitelisted, on duty by default, pay while off duty, enabled |
| Ranks | Create, edit and reorder ranks: label, wage and permissions (boss menu, actions) |
| Locations | The job’s points in the world. See Locations |
| Employees | Hire, dismiss, change rank, personal wage, duty, worked hours |
| Economy | Company account: balance, deposits, withdrawals, ledger, payroll source |
| Actions | Which actions of the F6 menu this job has |
Public locations
Points that belong to no job and are visible to every player: a harvest field, a public wardrobe, a shop open to everyone.
Import
Compares the jobs your framework already has with kyoJobCreator:
| Status | Meaning |
|---|---|
| Not imported | Exists only in the framework |
| Only here | Exists only in kyoJobCreator |
| In sync | Same in both |
| Diverged | Different in each |
| Name clash | Same name, different job |
For each job choose Link, Adopt or Ignore, preview and apply. Nothing is written until you apply.
History
The audit log: who did what, when and where. Searchable by category. A deleted location can be restored from here.
Integrations
What kyoJobCreator detected on your server for every category (menu, notifications, inventory, target, clothing, keys, society, billing, medical, identity), and which features are off because something is missing.
Boss menu (in game)
Employees whose rank has the boss permissions use the boss location of their job:
| Permission | Allows |
|---|---|
boss.menu | Open the boss menu |
boss.hire / boss.fire | Hire and dismiss |
boss.promote | Change ranks |
boss.withdraw / boss.deposit | Move money in and out of the company account |
boss.launder | Launder dirty money (if enabled) |
boss.grades | Change what each rank pays |
boss.wages | Set or stop one person’s wage |
Multijob
With multijob.enabled, a player can hold up to maxJobs jobs and switch between them with /jobs. kyoJobCreator owns the list; the framework still owns the active job.
Actions menu
F6 (command /jobactions, rebindable in FiveM’s key bindings) opens the actions the player’s job and rank allow:
| Action | Permission |
|---|---|
| Restrain | action.cuff |
| Escort | action.escort |
| Put in vehicle | action.vehicle |
| Search | action.search |
| Repair vehicle | action.repair |
| Clean vehicle | action.wash |
| Force lock | action.lockpick |
| Check plate | action.vehicle_owner |
| Impound vehicle | action.impound |
| Treat injuries | action.heal |
| Revive | action.revive |
| Check identity | action.identity |
| Check firearms / driving licence | action.licence |
| Issue invoice | action.bill |
Each action announces itself with /me and /do (see roleplay in config/shared.lua). Some need an adapter: revive and heal need a medical resource, invoices need a billing resource.
F6 conflicts: if
esx_policejoborqb-policejobalso uses F6, both menus open. Change the key of one of them, or setactions.key = ''inconfig/client.luaand let players bind it themselves.