Version 1.21.0
Highlights
rcore_clothingwardrobe / job-changing-room backend — the configurable wardrobe (introduced in 1.20.0) now supportsrcore_clothing. It is picked up automatically byConfig.Cloakroom.backend = "auto", or you can pin it with"rcore". A clear notification is shown ifrcore_clothingis selected but not running.- Job Configurator enhancements — added an Instant Tuning settings page (Behavior, Marker, Blip, and Locations tabs) with current-position capture and teleport support, clearer Tuning Prices inputs (values rounded to two decimals with a
%/$unit suffix so it is obvious whether a cost is percentage- or money-based), and a transport-mode selector (e.g. Engine Hoist) for Carry Items.
Notable Changes
- Player names in duty / identity displays now prefer the framework RP / character name, falling back to the Steam/FiveM name only when no character name is available.
- Improved job & duty state synchronization — client job/duty state is re-evaluated more reliably on load and when jobs are registered, ESX on-duty / off-duty job aliases stay consistent across related job entries, and jobs now fully refresh after creator location changes (no more stale job states).
- CCTV camera app access is now strictly per-job — jobs sharing a job group (e.g. FIB / LAPD) no longer automatically inherit another job's camera network.
- Added configurable per-job bodycam visibility via the new optional
bodycamViewJobssetting. - Added a client-side event that fires when the helicopter camera is entered or exited, so other scripts can react (e.g. toggle HUD elements).
- Fixed job identification for jobs created through the creator.
Other Changes
- Fixed bodycam saves occasionally getting stuck on "Saving", and item-gated bodycams appearing active without a recording buffer.
- Fixed creator interaction labels falling back to raw point IDs; station-blip-only points no longer spawn interactions.
- Fixed the "salary paid" entry showing a raw key instead of translated text in job logs.
- The UI now waits for localization to finish loading before rendering, avoiding missing-text flashes on first load.
- Added server-side duty diagnostics to help trace duty / multi-job conflicts in support cases.
- Added Portuguese (
pt) locale, and extended panic-button and Job Configurator localization across languages (cn,de,en,es,fi,fr,nl,pl,rs,ru,se).
- Update sky_base first.
- Download sky_jobs_base from the CFX Portal.
- Create a backup.
- Replace the
/sourcefolder. - Replace the
/config/localesfolder (newpt.lua; extended panic-button and Job Configurator strings across languages). - In
config/config.lua(both optional — defaults keep the previous behaviour):Config.Cloakroom.backendnow also accepts"rcore"to force thercore_clothingjob-changing room."auto"detects it automatically.- Add the optional
bodycamViewJobskey to the bodycam block to configure per-job bodycam visibility:
- bodycamItem = "bodycam" + bodycamItem = "bodycam", + + -- Optional per-job bodycam visibility. Key = viewer job, value = jobs whose + -- bodycams it can see. Jobs not listed keep the default network (own job + + -- jobs in the same job group). Leave nil to keep the previous behaviour. + bodycamViewJobs = nil - No SQL migration required.