Every server knows the evening where fourteen people are mechanics and nobody is on EMS (no shade to the mechanics). Staff ask in OOC chat, nobody moves, and the next car crash has no medic. Job Demand moves the pay instead, so the players sort it out themselves.
Each job you track gets a target, either a share of the players online or a head count that scales with your population. When a job is short of people its paycheck multiplier climbs, when it's crowded it falls, and it always stays between the limits you set. Changes are smoothed over many minutes, and on a quiet server with a handful of players the effect is scaled down, so pay never jumps around.
It works on top of the paycheck your framework already pays. The salary, interval, society payouts and off duty rules stay exactly as they are, and Job Demand pays the difference right after with its own reason, so your money logs stay readable. Nothing in your framework config changes.
Players type /jobs to see every tracked job with its demand, its multiplier, where it's heading and what someone starting there would earn. Also, unemployed players and players in a crowded job get a short alert when an open job needs people, and they can switch it off.
Staff type /jobdemand for headcount against target per hour, the multiplier history of each job, and total payroll against what flat pay would have cost. You see exactly how much money the system added to your economy, or kept out of it.
Players can't game it either. A raised rate only applies after time in the job and on duty, so hopping into EMS a minute before payday pays the normal amount, and lowered rates apply at once. Duty spam, scripts that reuse the paycheck reason and client events are all handled on the server.
What it does
- Target per job as a share of players online or a scaled head count, with an optional floor
- Minimum and maximum multiplier, globally or per job
- Smoothed changes with a half-life you choose
- Low population scaling, so a quiet server stays at normal pay
- On duty only option (QBCore, Qbox and ESX Legacy job duty)
- Job board for players with demand, multiplier, trend and starting pay
- Optional high demand alerts for players who could switch
- Admin view with headcount per hour, multiplier history, payroll against flat pay and raised rates held back
- Guard against job hopping and duty toggling, stored per character across restarts
- Hourly history in its own tables, created automatically
- Exports: GetMultiplier, GetDemand, GetPlayerMultiplier
- ESX Legacy, Qbox and QBCore, detected automatically
- Config, locales, framework bridge and SQL left open for your own edits


