Latest
Version 1.11.0
Highlights
- Storage, locker, and vehicle trunk now track item metadata as a separate stack — items with different metadata no longer collide under the same unique key (new
metadata_keycolumn and refreshed unique indexes). - Added
ox_targetintegration for job radial actions (Config.JobRadial.oxTarget.enabled) so non-tablet actions can be triggered through ox_target without opening the radial menu. - Added optional tablet item requirement (
Config.Tablet.requireItem+Config.Tablet.item) — when enabled, the tablet is registered as a usable item and required to open. - Added
openCreatorByJobserver export (Sky_Jobs.OpenCreatorByJob) to open the station creator by job key with per-job permission checks.
Notable Changes
- Boss menu salary input rebuilt with an improved
SliderInputcomponent (unit labels, direct numeric entry, validation). - Weapon metadata is now preserved through garage and storage add/remove operations.
- CCTV network is now shared across police sub-jobs.
- Storage metadata-index migration now auto-resolves the correct prefix length from each column's declared type (VARCHAR/CHAR/TEXT/BLOB).
Other Changes
- Added missing translations across all 9 locales (CN, DE, EN, ES, FI, FR, NL, PL, RS).
- Fixed spurious error notification on every shop weapon purchase.
- Download sky_jobs_base from the CFX Portal.
- Create a backup.
- Replace the
/sourcefolder. - Replace the
/config/localesfolder. - In
config/config.lua, update the existingConfig.TabletandConfig.JobRadialblocks:
Config.Tablet = {
enabled = true,
+ requireItem = false, -- If true, the tablet requires the configured item and the item is registered as a usable item to open the tablet.
+ item = "tablet",
prop = { ... }
}
Config.JobRadial = {
- enabled = true,
+ enabled = true, -- Set to false only if you use ox_target for job actions and have both sky_base Config.enableOXTarget = true and the ox_target resource running, otherwise these actions cannot be triggered at all. Tablet access is not available through ox_target and must be handled through the tablet item's usable-item flow.
key = "g",
mode = "hold",
- deadzone = 0.25
+ deadzone = 0.25,
+ oxTarget = {
+ enabled = true -- Registers non-tablet job radial actions as ox_target actions so they can be used without opening the radial menu. Requires sky_base Config.enableOXTarget = true and the ox_target resource. Tablet access stays on the tablet item's usable-item flow.
+ }
}
- If
Config.AutoExecuteQuery = false, run the SQL migration manually:
ALTER TABLE `sky_jobs_vehicle_trunks` ADD COLUMN IF NOT EXISTS `metadata_key` VARCHAR(32) NOT NULL DEFAULT '__nil__';
ALTER TABLE `sky_jobs_storageitems` ADD COLUMN IF NOT EXISTS `metadata_key` VARCHAR(32) NOT NULL DEFAULT '__nil__';
ALTER TABLE `sky_jobs_lockeritems` ADD COLUMN IF NOT EXISTS `metadata_key` VARCHAR(32) NOT NULL DEFAULT '__nil__';
ALTER TABLE `sky_jobs_vehicle_trunks` DROP INDEX `uniq_plate_item`;
ALTER TABLE `sky_jobs_vehicle_trunks` ADD UNIQUE KEY `uniq_plate_item_metadata` (`plate`, `name`, `metadata_key`);
ALTER TABLE `sky_jobs_storageitems` DROP INDEX `uniq_station_item`;
ALTER TABLE `sky_jobs_storageitems` ADD UNIQUE KEY `uniq_station_item_metadata` (`station_id`, `name`(100), `metadata_key`);
ALTER TABLE `sky_jobs_lockeritems` DROP INDEX `uniq_station_player_item`;
ALTER TABLE `sky_jobs_lockeritems` ADD UNIQUE KEY `uniq_station_player_item_metadata` (`station_id`, `player_identifier`(255), `name`(100), `metadata_key`);