Update InstructionsA guided update for server owners1.10.01.11.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update Base to 1.40.0 and Jobs Base to 1.43.0 before installing sky_firejob1.11.0. These instructions cover 1.10.0 → 1.11.0; complete earlier migrations first when upgrading from an older version. Stop the server and back up the resource, database, customized files and saved configurator/creator data.
Phase 2 of 5
Replace files
Install the matching 1.11.0 package. Update every path in Changed Files, delete and reinsert sky_firejob/source/*, and replace sky_firejob/config/locales/* completely. Remove every exact path listed under Removed Files and apply any listed renames. Preserve unrelated files, writable data and your own custom assets; merge the configuration changes in this tab into customized public files.
Replace source/* and fxmanifest.lua from the same download even when optional diagnostics remain off. The profiler only instruments Lua inside source/ and adds its manifest entries; public configuration, integration and compatibility files must match the uninstrumented package. Apply the separate functional public-file changes listed for this release. If an older profiler package modified public files, restore those once from the clean new package and reapply your edits.
Phase 3 of 5
Merge config
No public configuration values, blocks, items or Fire-specific database schema change. Keep existing /jobconfig overrides, mission settings, oil-spill behavior and HUD preferences. The HUD editor input correction and oil checks require the matching new runtime and UI files, not new settings.
Optional performance diagnostics
Extra profiler information remains disabled by default. Normal use needs no diagnostic setting. For a support recording, add setr sky_profiler 1 to server.cfg before the Sky ensure lines and restart the server. In the server console, run profiler record 1000, wait for profiler status to report completion, then run profiler saveJSON sky-release-profile.json. Share that file only when requested by support. Set setr sky_profiler 0 and restart again to disable the extra information. This is not a /jobconfig option; enabling it does not start a recording or upload data automatically.
Phase 4 of 5
SQL & items
No Fire-specific migration or new items are required. Preserve mission and creator data. Complete any shared Jobs Base 1.43.0 database migrations as part of the dependency update; they do not require clearing Fire data.
Phase 5 of 5
Restart & test
Confirm version 1.11.0. Open the HUD editor, drag and save an element, then close it and confirm normal player/camera controls return. Test an oil spill with a nearby player, including entering its area quickly and returning after revival. Check images, saved missions and startup logs.
Version 1.10.0
Update sky_base to 1.39.0 and sky_jobs_base to 1.42.0 before installing sky_firejob1.10.0.
Highlights
Added a clear warning when a mission starts successfully but its emergency dispatch cannot be created, including steps to correct the problem.
Notable Changes
Improved mission feedback so a running mission stays visible and controllable when its dispatch fails.
Improved error messages with translated explanations and readable multi-line instructions.
Other Changes
Removed the duplicate console error for a failed mission dispatch so the detailed Jobs Base explanation is easier to find.
Added optional performance diagnostics to help support investigate lag and delays, with diagnostics disabled by default.
Changed Files
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.9.11.10.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update sky_base to 1.39.0 and sky_jobs_base to 1.42.0 before installing sky_firejob1.10.0. These steps cover 1.9.1 → 1.10.0. Follow earlier update instructions first when upgrading from an older version. Stop the server and back up the resource, database, custom settings, and saved configurator data.
Phase 2 of 5
Replace files
Install the matching 1.10.0 package. Update every path listed in Changed Files, delete and reinsert sky_firejob/source/*, and replace sky_firejob/config/locales/* completely. Merge the configuration changes in this tab into your customized files. Preserve writable data and generated user content.
Required profiler files
For the profiler update, replace the complete sky_firejob/source/* tree and sky_firejob/fxmanifest.lua from the same download, even if diagnostics stay disabled. Delete the old source/ folder before copying the new one.
The profiler builder leaves configuration, integration and compatibility files unchanged. Apply any separate configuration or integration changes listed for this release as usual.
If you previously installed an older profiler package that also modified files outside source/, restore those affected files once from the unmodified versions in the new download and reapply your custom edits. Later profiler-only updates do not require this step.
Phase 3 of 5
Merge config
No values or blocks in sky_firejob/config/config.lua change in this release. Keep your custom configuration and saved /jobconfig settings. Replace all Fire locales and update Jobs Base to 1.42.0 for the matching dispatch explanations.
If a mission starts with a dispatch warning, it is already running. Use its active mission controls to manage or stop it. Follow the displayed instructions: open /missioncreator, select the named mission, and check its receiving department and response plan. Review the plan under that department in /jobconfig; dispatch-center coverage is maintained in sky_jobs_base/config/config.lua. Resolve the cause before starting another copy of the mission.
Optional performance diagnostics
Sky's extra profiler information is disabled by default. This update does not start recordings or send data automatically. No configuration change is required for normal use. If support needs a performance recording, add the following line to server.cfg before the Sky ensure lines, then restart the server:
server.cfg
setr sky_profiler 1
This global setting is configured in server.cfg; it is not managed by /jobconfig. The previous state with no setting remains disabled. Set the value to 1 only when you want the additional diagnostics.
Run profiler record 1000 in the server console for a server delay, or in the player's F8 console for a client problem. Reproduce the issue during the recording. Wait until profiler status reports that recording has stopped, then run profiler saveJSON sky-profile.json in the same console to save the capture. These are the standard FiveM profiler commands.
After diagnostics, change the line to setr sky_profiler 0 and restart again. Keep the new package files installed; disabling diagnostics does not require editing Lua or removing manifest entries.
Phase 4 of 5
SQL & items
No SQL schema, inventory item, image, or provider-secret change is introduced. Keep saved mission definitions, active operational data, and department settings. Replace all Fire locales so the new guidance is available in your selected language.
Phase 5 of 5
Restart & test
Start a correctly configured mission and check its dispatch. In staging, use a mission with an invalid response-plan selection to verify that the mission remains manageable and the warning names the cause and repair steps. Correct the selection and confirm the next dispatch can be created.
Version 1.9.1
Update sky_jobs_base to 1.41.1 and use sky_base1.38.0 before updating sky_firejob.
Highlights
Fixed an issue where automatic missions kept an outdated waiting interval after their settings changed.
Notable Changes
Fixed an issue where Fire could overwrite the off-duty settings of a job shared with another service.
Improved scenario alerts so response plans use the configured responsible job.
Other Changes
Updated scenario status labels to distinguish scenarios available in the hub from local scenarios.
Changed Files
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.9.01.9.1
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update sky_jobs_base to 1.41.1 and use sky_base1.38.0 before updating sky_firejob. These steps cover 1.9.0 → 1.9.1; complete earlier release instructions first if you are upgrading from an older version. Stop the server and back up the resource, database, saved Job Configurator settings and custom configuration. Preserve generated reports and other writable data.
Phase 2 of 5
Replace files
Install 1.9.1 as a matching package. Update every path in Changed Files, delete and reinsert sky_firejob/source/*, and replace sky_firejob/config/locales/* completely. Merge the configuration instructions in this tab into customized files; retain intentional settings and persistent data.
Phase 3 of 5
Merge config
No public config.lua value or new /jobconfig setting is introduced in this patch. Keep your saved automatic-mission enablement, interval and chance values. Changes to the interval now reschedule the pending check, disabling automatic missions cancels it, and the current chance is used when a check becomes due.
For a job shared with Ambulance or another service, update Jobs Base to 1.41.1 and review Config.PrimaryJobGroups in sky_jobs_base/config/config.lua using its own update guide. This global Jobs Base setting selects the shared duty and organization owner; it is not a Fire /jobconfig setting. Keep each service's existing station catalogs, and check the chosen owner's Dispatch configuration and each scenario's responsible job and response-plan selection.
Phase 4 of 5
SQL & items
Replace all sky_firejob/config/locales/* for the clearer hub/local status labels. No SQL schema, inventory item, image, stream asset or provider secret change is required. Preserve scenarios, incidents, equipment data and saved configuration.
Phase 5 of 5
Restart & test
Start providers, Base, Jobs Base and Fire in that order. Change an automatic-mission interval, disable and re-enable the scheduler, verify the selected scenario response plan and check shared-job duty behavior. Confirm the hub/local labels in the scenario manager.
Version 1.9.0
Update sky_base to 1.38.0 and sky_jobs_base to 1.41.0 before updating sky_firejob.
Highlights
Added player-configurable fire, editor, helicopter-bucket, deck-gun, and vehicle-HUD key bindings, including separate mouse and controller controls.
Fixed an issue where hydrant supply hoses were missing for other players or players joining later.
Changed pump-related vehicle engine damage to be disabled by default and explicitly enabled by the server operator.
Notable Changes
Fixed an issue where delayed fire, scenario, and equipment updates could restore removed objects or replace newer state.
Fixed an issue where vehicle air-cylinder storage was blocked when refill stations were disabled.
Fixed an issue where the configured foam canister could not be used from the inventory to refill equipment.
Other Changes
Fixed an issue where pressing Escape in an open shared dropdown could also close its surrounding dialog.
Improved foam-refill cancellation and item validation after a live configuration change.
Improved separation of shipped Fire defaults and imported customer settings.
Updated translations for air-cylinder storage requirements and the optional pump-damage setting.
Changed Files
sky_firejob/config/config.lua
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.8.01.9.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update sky_base to 1.38.0 and sky_jobs_base to 1.41.0 before updating sky_firejob. Stop the server and back up the complete sky_firejob resource, its database and inventory data, saved Job Configurator settings where applicable, and intentional public configuration edits. Preserve writable reports and other generated data outside the replaceable source files.
Phase 2 of 5
Replace files
Install 1.9.0 as a consistent package. Replace every file listed in Changed Files, delete and reinsert sky_firejob/source/*, and replace sky_firejob/config/locales/* completely. Merge the public configuration changes listed in this tab into your customized files; do not copy old configuration files over the new package wholesale. Keep the manifest, built UI, runtime and dependencies from the matching release set.
Phase 3 of 5
Merge config
In sky_firejob/config/config.lua, add the complete Config.Keybinds block. This table and its paths were absent in 1.8.0; 1.9.0 uses the following string defaults instead of scattered settings or fixed controls. Preserve your chosen keys when transferring old settings.
With Config.UseJobConfigurator = true, open /jobconfig → this resource → General → Keybinds. Every key inside the block is also its exact saved setting ID; for example Config.Keybinds.fireInteriorExtinguishersControl38 is saved under the same final name. Saved overrides take precedence over the generated defaults. Numeric overrides migrate to their corresponding QWERTY key, and -1 migrates to an empty string. An empty string means no initial binding. Players retain their own assignments in Settings → Key Bindings → FiveM; changing a server default does not overwrite those assignments.
With Config.UseJobConfigurator = false, edit these paths in the file and restart the resource. Keep mouse/controller prefixes exactly as shown. Command permissions and Config.AutoExecuteQuery remain file settings; their reordering does not change their values.
Add the new Config.Hose.vehiclePumpBehavior.engineDamageEnabled path in sky_firejob/config/config.lua:
With /jobconfig, review the saved Hose → Vehicle pump behavior → Engine damage setting. Saved overrides take precedence over the default; explicitly enable it only if pump overheating and dry running should damage the vehicle. Without /jobconfig, maintain the file value. Existing neighboring values remain warningTemperature = 100.0, criticalTemperature = 115.0, damageTemperature = 110.0, and maxEngineDamagePerSecond = 12.0; temperature warnings and pump behavior still operate when engine damage is disabled. No incident job list, reward, hose model offset, or dispatch-recipient value changes in this release.
Air-cylinder storage still requires its configured bottle item and pressure saving. The refill-station feature itself may now be disabled. Keep your existing cylinder item, pressure-saving and foam-canister settings, and check their effective saved /jobconfig overrides. Foam inventory use now follows the same existing refill validation and cancellation flow. No replacement item name or new refill setting is required. Config.UseJobConfigurator, command permissions and Config.AutoExecuteQuery were only moved to the top of the file; their defaults are unchanged.
Phase 4 of 5
SQL & items
No new Fire SQL schema, inventory item, image, production stream asset, or secret is introduced. Preserve existing cylinders and pressure metadata, configured foam items, incidents and equipment data. Replace the manifest and full source folder together; the updated manifest loads the generated Fire defaults and shared key/synchronization helpers. Install Base 1.38.0 too for the Jaksam slot correction when using that inventory.
Phase 5 of 5
Restart & test
Restart Base, Jobs Base and Fire. Rebind helicopter, editor, HUD and deck-gun actions and test both mouse and controller spraying. Join after a hydrant supply hose is connected and confirm both nearby players see it. Remove equipment during synchronization and confirm it stays removed. With pressure saving and the bottle item enabled, open air storage while refill stations are disabled. Use and cancel a foam refill. Test pump overheating/dry running with engine damage disabled, then explicitly enabled, and check the effective saved setting.
Version 1.8.0
Update sky_base to 1.37.0 and sky_jobs_base to 1.40.0 before updating sky_firejob.
Highlights
Added a validated server export for creating regular synchronized fires from trusted resources.
Improved pump operations with configured panel, intake, and outlet positions plus synchronized nozzle, deck-gun, decal, and water-monitor effects.
Added per-mission dispatchJobs routing with fallback to the global Fire dispatch list and then all configured Fire jobs.
Improved SCBA inventory handling so exact slots persist and usable-item registrations refresh after configuration changes.
Notable Changes
Improved hydrant supply so the selected pump vehicle is used, carried hose state is preserved when detection briefly misses, and server validation completes before connection.
Improved external LB Tablet and RoadPad lifecycle handling and fixed scrolling in longer Fire reports.
Fixed the pump-panel interface so NUI focus is released reliably.
Improved automatic tree incidents so their synchronized state remains stable.
Improved creator refresh behavior so a saved configuration cannot trigger recursive refreshes.
Other Changes
Changed staffing requirements so configured minimum on-duty counts also apply to prop ignition.
Removed continuous idle vehicle polling from synchronized water-effect handling.
Updated number inputs so browser spinner controls match the tablet interface.
Updated bundled locales for pump operations, supply validation, mission dispatch, SCBA, external tablets, and synchronized effects.
Changed Files
sky_firejob/README.md
sky_firejob/config/config.lua
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.7.01.8.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Install Base 1.37.0 and Jobs Base 1.40.0, stop the server, and back up the complete resource, Job Configurator tables, configured Fire missions, Fire report data, and deliberate edits to pump, scenario, dispatch, SCBA, and external-tablet settings.
Install 1.8.0 as one clean package. Its manifest, frontend, locales, shared effects, and source files must match.
Phase 2 of 5
Replace files
Delete and reinsert the complete resource. At minimum replace fxmanifest.lua, README.md, config/config.lua, the complete config/locales and source directories, and the built frontend.
Phase 3 of 5
Merge config
Mission entries below Config.FireScenarioCreator.randomTrigger.missions now support dispatchJobs in addition to key, enabled, minOnDuty, and jobs:
The global Config.FireScenarioCreator.dispatch.jobs list.
Every configured Fire job when both lists are empty.
The global dispatch list and other shipped defaults do not change. Job Configurator migration initializes existing mission dispatchJobs from each mission's current jobs value. Review every saved mission after the update; an explicitly empty list intentionally activates the fallback chain.
Phase 4 of 5
SQL & items
No Fire SQL schema change, new inventory item, image, or production stream asset is required. Existing Fire reports, scenarios, SCBA data, and equipment configuration are reused. The new regular-fire export is a trusted server integration and requires no database row or client event exposure.
Phase 5 of 5
Restart & test
Start Base, Jobs Base, and Fire in order. Confirm an under-staffed player cannot ignite a configured prop fire and an adequately staffed player can. From a trusted server resource, call the regular-fire export with valid and invalid data and verify validation plus synchronization. Test pump controls at configured panel/intake/outlet offsets, nozzle/deck-gun/decal/water-monitor visibility across clients, and low idle cost without an active operation. Connect a hydrant to the selected pump while briefly leaving detection range. Verify mission-specific, global, and all-Fire-job dispatch fallbacks; exact-slot SCBA restore after a config refresh; LB Tablet/RoadPad reloads; long-report scrolling; pump-panel focus release; automatic tree incidents; and a single creator refresh after saving.
Version 1.7.0
Update sky_base to 1.36.0 and sky_jobs_base to 1.39.0 before updating sky_firejob.
Highlights
Added persistent Fire incident reports with an owning job, configurable report catalogues, evidence, involved people, hazards, actions, equipment, and current-scene location capture.
Added cross-job Fire report sharing so selected partner departments receive read-only access while the owning department retains edit control.
Improved the report editor with compact adjustable sections, searchable configured fields, localized labels, and clear source-job context for shared reports.
Notable Changes
Improved mission creation so current form values and transforms save automatically and vehicle fires keep their configured scale when progression is disabled.
Improved rescue repairs so synchronized glass and doors reset correctly, doorless vehicles can be accessed directly, and rear-seat victims in two-door vehicles use a front-door fallback.
Improved SCBA storage so putting away an equipped bottle saves a bounded remaining pressure value, clears active server state, and follows the normal unequip/HUD flow.
Improved water-monitor and helicopter-bucket placement with one-time server authorization before a client may create the configured prop.
Fixed an issue where players without the required Fire access could see the placeable-extinguisher pickup action.
Other Changes
Improved startup migration and direct shared-service usage so report, rescue, prop, and equipment state initializes in the intended order.
Improved shared tablet controls and theme behavior while removing browser filter effects that could render inconsistently in FiveM CEF.
Updated English, German, Italian, and Serbian report, rescue, mission, SCBA, and sharing translations.
Changed Files
sky_firejob/config/config.lua
sky_firejob/config/locales/*
sky_firejob/import.sql
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.6.11.7.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Before updating, install Base 1.36.0 and Jobs Base 1.39.0, stop the server, and back up the resource, intentional config edits, Job Configurator tables, and all sky_fire_* tables.
Install 1.7.0 as one clean package. Its UI, runtime, locales, config defaults, and schema must match.
Phase 2 of 5
Replace files
Delete and reinsert the complete resource. At minimum replace config/config.lua, import.sql, the complete config/locales and source directories, and the built UI supplied with the package.
Phase 3 of 5
Merge config
Add the complete new report catalogue, which was absent in 1.6.1:
/jobconfig does not manage Config.Reports; edit these plaintext lists to match department procedures. Normal configured Fire jobs still come from Config.Jobs or Job Configurator. Report sharing uses the existing Jobs Base Share configuration for each job and is separate from the catalogue lists. Do not add a partner job to Config.Reports; select it in the sharing settings instead.
Phase 4 of 5
SQL & items
With Config.AutoExecuteQuery = true, the built-in migration updates report ownership and sharing. Otherwise execute the complete bundled import.sql, including:
migration.sql
ALTER TABLE `sky_fire_reports`
ADD COLUMN IF NOT EXISTS `owner_job` VARCHAR(50) NULL AFTER `report_type`,
ADD COLUMN IF NOT EXISTS `shared_with_jobs` TEXT NULL AFTER `owner_job`,
ADD INDEX IF NOT EXISTS `idx_owner_updated` (`owner_job`, `updated_at`);
UPDATE `sky_fire_reports` reports
INNER JOIN `sky_jobs` jobs ON jobs.id = reports.job_id
SET reports.owner_job = jobs.job
WHERE reports.owner_job IS NULL OR reports.owner_job = '';
New installations create owner_job VARCHAR(50) NULL and shared_with_jobs TEXT NULL in sky_fire_reports and include KEY idx_owner_updated (owner_job, updated_at). The schema inherits the active database charset and collation. Existing rows without a matching sky_jobs.id cannot be backfilled automatically and should be reviewed before enabling sharing.
No new inventory item, image, stream asset, or provider credential is required.
Phase 5 of 5
Restart & test
The console reports Base 1.36.0, Jobs Base 1.39.0, and Fire 1.7.0 in that order.
sky_fire_reports contains owner_job, shared_with_jobs, and idx_owner_updated, and existing rows have the expected owner.
Each configured report type, status, hazard, action, and equipment value appears and is searchable.
The owning job can edit its report while a selected partner job sees the same report read-only with source context.
Current-scene capture, evidence, people, hazards, actions, equipment, and report persistence work after restart.
Mission form values/transforms autosave and vehicle-fire scale remains configured when progression is disabled.
Doorless and two-door rescue cases work and repaired glass/doors synchronize.
Storing equipped SCBA preserves bounded remaining pressure and clears active HUD/server state.
Water-monitor and helicopter-bucket props require one-time server authorization.
Unauthorized players cannot see or use the placeable-extinguisher pickup action.
Version 1.6.1
Update sky_base to 1.35.1 and sky_jobs_base to 1.38.1 before updating sky_firejob.
Highlights
Improved the built-in frontend fallback catalogue so missing translated creator, pump, dispatch, mission, and tablet keys remain readable.
Notable Changes
Fixed an issue where a complete 1.6.0 feature installation could still show blank or placeholder Fire labels.
Other Changes
Updated the package manifest for the 1.6.1 compatibility set.
Changed Files
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
Update InstructionsA guided update for server owners1.6.01.6.1
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update Base to 1.35.1 and Jobs Base to 1.38.1, stop the server, and back up Fire.
Install 1.6.1 as one clean package; a .1 manifest beside the .0 built UI is a mixed update.
Phase 2 of 5
Replace files
Delete and reinsert the resource. Replace fxmanifest.lua, the built UI, and config/locales completely.
Phase 3 of 5
Merge config
No public config value or /jobconfig key changed in 1.6.1.
Phase 4 of 5
SQL & items
No SQL, item, image, production stream asset, or provider credential changed.
Phase 5 of 5
Restart & test
Base 1.35.1, Jobs Base 1.38.1, and Fire 1.6.1 start in order.
Creator, pump, dispatch, mission, and tablet labels fall back to readable English when a translation key is absent.
Version 1.6.0
Update sky_base to 1.35.0 and sky_jobs_base to 1.38.0 before updating sky_firejob.
Highlights
Dispatch response-plan requirements - scenario drafts can select an existing Jobs Base response plan; automatic missions use its current eligibility/minimum-crew result and dispatches carry its keyword code.
Configured Fire job coverage - hose/pump access, cross-resource Fire targets, player carry, tablet registration, and placeable-extinguisher removal consistently follow the configured Fire jobs.
Valve-aware pump hydraulics - enhanced pump panels start with closed intake/tank valves, controls remain locked while off, and an external source supplies water only through an open connected intake.
Fire creator job permissions - /skyfiremenu supports explicit framework/admin groups and explicit framework job names, with the same permission rechecked by creator callbacks.
Safer data migrations - the hydrant setting moves from GPM to liters per second without discarding saved overrides, and oil-source plates expand from 16 to 64 characters.
Notable Changes
Scenario create, copy, and update reject missing, stale, or mismatched response-plan job/code pairs. Scenario Hub imports deliberately start with the requirement disabled instead of trusting external identifiers.
Configured Fire jobs are resolved consistently for hose/pump access, cross-resource fire targets, player carry, tablet registration, and placeable-extinguisher removal. Extinguisher removal now rechecks the configured job and duty rules on the server.
The response-plan selector refreshes dynamic Jobs Base options, and Fire creator, pump, hydrant, extinguisher, and tablet text uses the shared language store across the bundled locales.
Other Changes
Simple pump panels retain their compact legacy defaults; the closed-valve change applies to enhanced controls where each intake/tank path is operated explicitly.
Existing tankSupplyGpm and pumpSupplyGpm settings remain in GPM. Only hydrant output is renamed and converted to liters per second.
No new inventory item, image, or production stream asset is required by 1.6.0.
Changed Files
sky_firejob/README.md
sky_firejob/config/config.lua
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/import.sql
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.5.01.6.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update Base to 1.35.0 and Jobs Base to 1.38.0. Stop the server; back up the complete Fire resource, saved scenario drafts/published scenarios, Job Configurator data, and all Fire tables.
Install 1.6.0 as one complete package. The pump/HUD logic, response-plan UI/runtime, generated defaults, locales, manifest, and SQL migration must match.
Phase 2 of 5
Replace files
Delete and reinsert the complete resource. Replace README.md, config/config.lua, all config/locales, fxmanifest.lua, import.sql, source, and the built UI. No new item image or production stream file is added.
Phase 3 of 5
Merge config
Replace the old flat Config.CommandPermissions.skyfiremenu = { "god", "superadmin", "admin" } with:
config/config.lua
Config.CommandPermissions.skyfiremenu = {
groups = { "god", "superadmin", "admin" },
jobs = {}
}
groups uses the existing framework/admin permission bridge. An empty jobs list grants no job-based access. Each added row must be an exact current framework job name; the server rechecks the same combined permission for the command and creator callbacks. Job permission does not implicitly include every configured Fire job.
Replace only the hydrant-output member inside Config.Hose.vehiclePumpBehavior.hydraulics:
config/config.lua
-- 1.5.0: remove this field
hydrantSupplyGpm = 1600.0,
-- 1.6.0: add this field
hydrantSupplyLitersPerSecond = 100.0,
Do not rename tankSupplyGpm or pumpSupplyGpm. For /jobconfig, remove hoseVehiclePumpHydraulicsHydrantSupplyGpm and use hoseVehiclePumpHydraulicsHydrantSupplyLitersPerSecond; the shipped migration converts a saved old-only override by × 0.0630902, preserves an already-present new value, and removes the old key.
Response-plan requirements are saved per scenario, not in config.lua or /jobconfig. Select an exact plan from the current Jobs Base catalog. Enabled stale/removed plan pairs are rejected; no requirement preserves the existing scenario minOnDuty path, and imported Hub scenarios start disabled.
Enhanced pump panels now initialize explicit intake and tank-to-pump valves closed and keep controls locked while the pump is off. Simple panels retain their compact defaults. No configuration migration is needed for those state semantics.
Phase 4 of 5
SQL & items
With automatic migration disabled, execute the complete new import.sql. The exact release migration is:
migration.sql
ALTER TABLE `sky_fire_oil_spills`
MODIFY COLUMN `source_plate` VARCHAR(64) NULL;
UPDATE `sky_jobs_configurator_settings`
SET `settings` = JSON_REMOVE(
JSON_SET(
`settings`,
'$.hoseVehiclePumpHydraulicsHydrantSupplyLitersPerSecond',
CAST(JSON_UNQUOTE(JSON_EXTRACT(
`settings`,
'$.hoseVehiclePumpHydraulicsHydrantSupplyGpm'
)) AS DECIMAL(20, 6)) * 0.0630902
),
'$.hoseVehiclePumpHydraulicsHydrantSupplyGpm'
),
`revision` = `revision` + 1
WHERE `config_key` = 'sky_firejob'
AND JSON_VALID(`settings`)
AND JSON_CONTAINS_PATH(`settings`, 'one', '$.hoseVehiclePumpHydraulicsHydrantSupplyGpm')
AND NOT JSON_CONTAINS_PATH(`settings`, 'one', '$.hoseVehiclePumpHydraulicsHydrantSupplyLitersPerSecond')
AND JSON_UNQUOTE(JSON_EXTRACT(
`settings`,
'$.hoseVehiclePumpHydraulicsHydrantSupplyGpm'
)) REGEXP '^-?[0-9]+([.][0-9]+)?$';
UPDATE `sky_jobs_configurator_settings`
SET `settings` = JSON_REMOVE(`settings`, '$.hoseVehiclePumpHydraulicsHydrantSupplyGpm'),
`revision` = `revision` + 1
WHERE `config_key` = 'sky_firejob'
AND JSON_VALID(`settings`)
AND JSON_CONTAINS_PATH(`settings`, 'one', '$.hoseVehiclePumpHydraulicsHydrantSupplyGpm')
AND JSON_CONTAINS_PATH(`settings`, 'one', '$.hoseVehiclePumpHydraulicsHydrantSupplyLitersPerSecond');
Automatic migration errors are intentionally visible and stop an unsafe silent reset. Manual SQL leaves an invalid old-only numeric value in place for explicit repair. The schema keeps ENGINE=InnoDB where required and inherits database charset/collation. There are no new tables or item definitions.
Phase 5 of 5
Restart & test
Base 1.35.0, Jobs Base 1.38.0, and Fire 1.6.0 start in that order without migration errors.
Group-only and exact job-based /skyfiremenu access match the new permission table, and unauthorized creator callbacks fail.
Scenario create/copy/update accepts a current response plan, rejects a removed/stale pair, and automatic missions honor its minimum crew; a scenario without a plan still uses minOnDuty.
Existing hydrant and portable-pump connections still work, enhanced pump valves start closed, controls stay locked while off, and an open connected intake changes supply, HUD, tank fill, or external vehicle transfer.
Configured Fire job/duty rules apply to hose, pump, extinguisher removal, tablet, carry, and cross-resource Fire actions.
The old saved GPM key is gone, its old-only value was converted by 0.0630902, and an existing new L/s value was preserved.
sky_fire_oil_spills.source_plate is VARCHAR(64).
Version 1.5.0
Update sky_base to 1.34.0 and sky_jobs_base to 1.37.0 before updating sky_firejob.
Highlights
Configurable wildfire protective mask - a new item, clothing requirement, HUD state, and Job Configurator section reduce normal smoke exposure while intentionally retaining weak toxic-smoke protection and no heat protection.
More responsive hose handling - held nozzles update independently from background route simulation, while laid routes remove redundant straight-line points and sample stable ground positions for smoother rendering.
Cross-job oil cleanup - additional configured jobs can receive only the oil-cleanup actions, with authoritative job and duty validation on client and server.
Objective-specific society rewards - fire, oil, tree, and rescue objectives can each pay the configured society independently from other scenario reward paths.
Notable Changes
Pump controls fall back to the vehicle area when a model has no saved panel position; explicitly configured models continue using their editor-defined panel target.
Scenario vehicles remain frozen at their saved transform until runtime needs them, and aircraft fire effects are capped so tall model bounds no longer place flames too high.
Scenario Hub publishing uses the production service, server-side thumbnail uploads, and the packaged Lua 5.4-compatible signing module with verified SHA/HMAC vectors; no private credential is exposed in public configuration.
Other Changes
All newly added and revised user-facing feedback follows the selected locale; Italian was added and German, English, and Serbian were updated.
Shared form buttons, fields, selectors, switches, checkboxes, ranges, and date ranges were synchronized with Jobs Base.
Focused regression coverage was expanded across the release.
Update InstructionsA guided update for server owners1.4.01.5.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Stop the server after both dependencies are current. Back up the complete Fire resource, custom clothing values, shops, hose vehicle entries, cleanup access, reward settings, and saved /jobconfig overrides.
Install one complete 1.5.0 package. The mask item, clothing checks, HUD, locale, generated settings, server validation, hose runtime, manifest, and image must match.
Phase 2 of 5
Replace files
Replace fxmanifest.lua, source, the complete built UI, and config/locales. Copy config/inventory/fire_protective_mask.png. Merge the public values below into the new config/config.lua or configure their saved equivalents after startup.
Phase 3 of 5
Merge config
Add the mask to each intended Config.Jobs[*].shop; this row was absent in 1.4.0:
This entire shipped table is Absent -> New. requiredProps and femaleRequiredProps are supported optional fields and exact /jobconfig keys, but they are not shipped config rows. Omit them when no prop is required, or add the following explicit empty defaults with identical behavior:
A multiplier of 0.15 leaves 15% of normal smoke exposure. The 0.85 toxic multiplier deliberately leaves 85% of toxic exposure; SCBA remains required. The mask does not change heat exposure.
Apply the remaining public config changes:
Config path
1.5.0 shipped value / action
Hose vehicle pumpPanelConfigured
Absent -> New: a legacy non-default panel is inferred when the flag is absent; otherwise absent/false falls back to the vehicle area, and the editor saves explicit true
Config.OilSpills.cleanup.allowedJobs
Absent -> New: { "mechanic" }; configured Fire jobs remain authorized automatically
Config.OilSpills.cleanup.allowedJobs only adds non-Fire jobs. An empty {} means no additional jobs, while every configured Fire job remains authorized. Existing Config.OilSpills.cleanup.requireOnDuty = true applies to both configured Fire jobs and extra whitelist entries.
Replace the complete reward block so the four new switches stay beside their existing neighbors:
config/config.lua
Config.SocietyRewards = {
fire = {
enabled = true,
scenarioEnabled = true,
jobs = {}
},
oil = {
enabled = true,
scenarioEnabled = true,
jobs = {}
},
tree = {
enabled = true,
scenarioEnabled = true,
jobs = {}
},
rescue = {
enabled = true,
scenarioEnabled = true,
jobs = {}
}
}
Each scenarioEnabled field is Absent -> New: true. enabled controls all payments; scenarioEnabled separately gates Mission Creator objective payments. Empty jobs first uses the applicable incident recipients and then all configured Fire jobs: mission objectives use Config.FireScenarioCreator.dispatch.jobs, ordinary tree incidents use Config.TreeIncident.dispatch.jobs, and ordinary fire, oil, and rescue completions use Config.FireSystem.dispatch.jobs. Default amounts remain fire 250, oil 150, tree 500, and rescue 750 unless saved job rows override them.
For hose vehicles, pumpPanelConfigured is an editor-managed hidden flag. A legacy entry with no flag is inferred as configured only when pumpPanelX, pumpPanelY, and pumpPanelZ all exist and at least one coordinate or pumpPanelSize differs from the default offset/size. Every other absent flag, and every explicit false, validly falls back to the vehicle area. For a precise target, open the vehicle card's Hose Control access action (pumpPanelAccess) on that actual model; saving writes pumpPanelX, pumpPanelY, pumpPanelZ, pumpPanelSize, and explicit pumpPanelConfigured = true.
Set pumpDischargeCount (1-4) and pumpIntakeCount (1-2), then use the actions pumpOutlet1Connection through pumpOutlet4Connection and pumpIntake1Connection through pumpIntake2Connection. Each active action saves its Label, X, Y, Z, Rx, Ry, and Rz values under the matching pumpOutletN* or pumpIntakeN* prefix. Never copy the packaged model's panel, intake, outlet, or rotation values to another model; edit and save the actual vehicle.
Fire reward: societyRewardFireEnabled, societyRewardFireScenarioEnabled, and societyRewardFireJobs.
Oil reward: societyRewardOilEnabled, societyRewardOilScenarioEnabled, and societyRewardOilJobs.
Tree reward: societyRewardTreeEnabled, societyRewardTreeScenarioEnabled, and societyRewardTreeJobs.
Rescue reward: societyRewardRescueEnabled, societyRewardRescueScenarioEnabled, and societyRewardRescueJobs.
Saved values override Lua defaults. Review both shipped mask component lists; the two prop keys may remain absent or empty unless prop variants are required. Save each affected vehicle card after using its panel/intake/outlet actions.
Phase 4 of 5
SQL & items
No SQL migration is required. Register the non-consumable fire_protective_mask item according to the active inventory and install config/inventory/fire_protective_mask.png. Keep the item name identical in the inventory, Fire shop, and protective-mask config. This release adds no other inventory item or image.
Scenario Hub deployment credentials remain server-only. Preserve the packaged runtime and configure credentials only through the protected deployment path; never paste a secret into config, logs, support messages, or public documentation. Restart sky_base, sky_jobs_base, and sky_firejob in that order.
Phase 5 of 5
Restart & test
Base 1.34.0, Jobs Base 1.37.0, and Fire 1.5.0 start in order.
The protective mask can be bought/used, validates the intended clothing, updates the HUD, reduces normal smoke, and does not replace SCBA or heat gear.
Authorized extra jobs see only cleanup actions and lose access when job/duty requirements fail.
Fire, oil, tree, and rescue society rewards follow their individual scenarioEnabled and enabled values.
A legacy non-default pump panel is inferred without the new flag, an editor-saved panel uses explicit true, and every unconfigured or explicit-false model remains accessible through the vehicle-area fallback.
Held and laid hoses remain responsive, grounded, smooth, and synchronized over long routes.
Scenario vehicles retain saved positions and aircraft effects remain at a plausible height.
Scenario publishing and thumbnail uploads succeed without exposing credentials.
Equipment and placement feedback follows the selected locale.
Version 1.4.0
Update sky_base to 1.33.0 and sky_jobs_base to 1.36.0 before updating sky_firejob.
Highlights
Accurate 100-meter hose routes - attack and monitor hoses retain their laid path, follow outdoor terrain and MLO floors, keep stable truck-side bends, and render smoother corners without deleting long routes.
Configured pump interaction points - pump panels, intakes, discharges, monitor supply, and vehicle-transfer actions use the editor-defined positions and rotations for each vehicle model.
Reliable water-monitor supply - the nearest outlet is reserved while the hose is carried, remains occupied after connection, and is released correctly on every abort or disconnect path.
All configured Fire jobs supported - permissions, dispatch recipients, rewards, maintenance, creator triggers, and exported actions derive from the active Fire job configuration instead of a hard-coded job name.
Signed Scenario Hub requests - remote Scenario Hub traffic now uses server-side request signing and provides safe diagnostics for availability and signature mismatches.
Notable Changes
Vehicle entrapment uses the configured body/engine damage thresholds instead of obsolete speed thresholds.
Enhanced pumps shut down when fuel reaches zero and cannot be re-engaged until refueled.
Grounded nozzles have configurable placement, rotation, interaction distance, target size, deployment distance, and handling animation.
Vehicle water-transfer actions share the pump target and use the nearest configured intake/outlet geometry.
Fire dispatch preserves the initiating player, and rejected dispatch creation is logged clearly.
Fire carry uses the central Jobs Base runtime and can explicitly allow or reject carrier vehicles.
The breathing HUD keeps its SCBA gauge, mask overlay, and heat warnings while hiding the removed equipment silhouette.
Added a complete Serbian locale and ordered NUI image-source support.
Other Changes
Updated the streamed hose material for a matte cloth appearance.
Deterministic config loading prevents duplicate registration, and blip values are normalized before reaching FiveM natives.
Added focused regression coverage for configured jobs, pump targets/rotation, transfer targets, dispatch, hose sync, entrapment, radial exports, and rewards.
Changed Files
sky_firejob/config/config.lua
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/README.md
sky_firejob/source/* — delete and reinsert
sky_firejob/stream/sky_hose_segment.ydr
Update InstructionsA guided update for server owners1.3.11.4.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Back up the complete Fire resource and intentional configuration. Install cleanly so runtime, UI, job configuration, HMAC support, manifest, and streamed hose model are from the same package.
Phase 2 of 5
Replace files
Replace fxmanifest.lua, source, built UI, locales, README, tests, and stream/sky_hose_segment.ydr. Keep source/server/vendor/sha2.lua in the package.
Phase 3 of 5
Merge config
Without /jobconfig, apply all of these public changes:
Changed to {}; empty means all configured Fire jobs
Config.FireScenarioCreator.dispatch.jobs
Changed to {}; empty means all configured Fire jobs
Config.SocietyRewards.fire/oil/tree/rescue.jobs
Changed to {}; rewards derive from configured Fire jobs and saved Job Configurator values
Config.TreeIncident.dispatch.jobs
Changed to {}; empty means all configured Fire jobs
Config.FireSystem.dispatch.jobs
Changed to {}; empty means all configured Fire jobs
For every entry in Config.Hose.vehicles, keep the current editor-saved pump panel X/Y/Z/size, each active pumpOutletN position and rotation (X/Y/Z/Rx/Ry/Rz), and each active pumpIntakeN position and rotation. The shipped example now uses three discharges rather than four. Do not copy the example coordinates to a different vehicle model; position them through /jobconfig or the vehicle editor.
With /jobconfig, review and save Hose nozzle placement/animation, deployment and maximum length, target size/distance, per-vehicle panel/intake/outlet geometry, Carry vehicle behavior, entrapment detection, incident dispatch, extinguisher maintenance, and reward recipients. The empty job lists intentionally select the current configured Fire jobs.
Phase 4 of 5
SQL & items
No SQL migration, inventory item, or image registration is required. Replace stream/sky_hose_segment.ydr; mixed clients can otherwise render a different hose material than 1.4.0 clients.
Scenario Hub signing requires the deployment secret and key version to match the Public API. Never place the secret in public config, changelog, support messages, or AI knowledge.
Phase 5 of 5
Restart & test
Base 1.33.0, Jobs Base 1.36.0, and Fire 1.4.0 are running.
Every configured Fire job receives intended radial actions, dispatches, rewards, maintenance, and creator access.
Pump targets appear at editor-defined points on each configured vehicle model.
Monitor and transfer hoses reserve and render the intended nearest ports.
A routed hose remains grounded and connected across slopes, MLO floors, and long paths up to 100 meters.
The enhanced pump shuts down at zero fuel.
Damage-based entrapment, Fire dispatch, Scenario Hub availability, carry, and image fallbacks work correctly.
The updated streamed hose has the intended matte cloth appearance.
Version 1.3.1
Update sky_base to 1.32.1 and sky_jobs_base to 1.35.1 before updating sky_firejob.
Highlights
Simple and enhanced firetruck pump panels - choose automatic one-intake/one-discharge operation or a full manual panel with configurable pressure, RPM, tank feed/fill, up to two intakes, and up to four hose discharges.
Realistic pump hydraulics and stress - supply capacity, hose friction, cavitation, dry running, fuel consumption, heat, overload warnings, pressure loss, and gradual engine damage now respond to live pump use.
Per-vehicle pump configuration - /jobconfig can configure pump mode, tanks, intake/outlet counts, custom port labels, and attachment positions through dedicated vehicle cards and connection editors.
Placeable attack hoses - firefighters can lay their attack nozzle and hose on the ground, retrieve it later, and keep the grounded hose synchronized for nearby players.
Restored protective-gear HUD - the breathing display again shows the complete firefighter equipment silhouette with clear missing-item highlights.
Notable Changes
Pump outlets control their own hose assignment and flow state, while the panel updates live as supply, tank, fuel, valve, and stress values change.
Vehicle deck-gun controls appear only when the configured turret exists on the spawned vehicle.
Portable drafting uses a server-authoritative natural-water allowlist and supports longer, submerged intake lines.
Grounded hoses align with the nozzle, follow MLO floors, and clean up when their vehicle disappears.
Tank filling, pump supply, water monitors, deck guns, and hose flow now respect the active valve, pressure, and source state.
Players can be rescued through vehicle doors that were already missing before entrapment state synchronized.
Fire water operations and exported actions recognize every Fire job configured through the in-game configurator.
Incident Reports and other embedded Fire apps fill the shared tablet correctly.
Air-bottle storage closes with Escape and gauge-based interfaces initialize more reliably.
Other Changes
Reduced client work for death checks, hose pathing, pump state, fuel, temperature, and damage updates while preserving responsive controls.
Improved English action feedback and completed German Fire and pump-panel translations.
Added regression coverage for pump modes, hydraulics, overload, connections, hose synchronization, tablet handoff, authorization, and locale parity.
Update InstructionsA guided update for server owners1.3.01.3.1
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Stop the server after updating both base resources. Create these backups:
Back up
Safe location
Complete sky_firejob folder
Outside the live resources folder
Customized config/editor/function files
Separate custom-config folder
Do not overlay 1.3.1 on 1.3.0. The pump runtime and interface were expanded substantially.
Phase 2 of 5
Replace files
Install the complete package:
Action
Current server path
New package / destination
Delete
resources/[sky]/sky_firejob
Remove only after the backup exists
Copy
—
Copy the complete new sky_firejob folder
Keep from new release
fxmanifest.lua, source, and source/html
Required for both pump panels, hydraulics, hose placement, rescue, and tablet fixes
Keep from new release
config/locales
Contains the current English and German UI copy
Keep from new release
Rebuilt frontend assets
Contains the pump gauges, panel views, and protective-gear HUD imagery
Merge only your values
Backed-up config/editor/function files
Reapply intentional customizations inside the matching new files
Phase 3 of 5
Merge config
Start with the newconfig/config.lua. The complete public 1.3.0 → 1.3.1 config migration is listed below.
These three values are not managed by /jobconfig and must be present in Config.Hose.pump on every server:
Config path
Shipped value / required action
Config.Hose.pump.intakeExtraLength
5.0
Config.Hose.pump.intakeSubmergeDepth
0.55
Config.Hose.pump.waterSourceAreas
Add one or more trusted { coords, radius, zTolerance } areas that cover the natural-water locations where drafting is allowed
Replace the shipped example area with locations appropriate for your map:
Config.Hose.pump.naturalWaterEnabled remains the existing master switch. When enabled, drafting outside waterSourceAreas is rejected.
Add the complete new blocks:
Config path
Shipped value
Config.Hose.pumpPanelStyle
"enhanced"; use "simple" for automatic one-intake/one-discharge operation
Config.Hose.pumpControl.minPressure
50
Config.Hose.pumpControl.maxPressure
600
Config.Hose.pumpControl.pressureStep
25
Config.Hose.pumpControl.presetPressure
300
Config.Hose.pumpControl.idlePressure
100
Config.Hose.pumpControl.idleRpm
700
Config.Hose.pumpControl.maxRpm
3150
Config.Hose.pumpControl.tankFillLitersPerSecond
40.0
/jobconfig manages these values under Pump Panel.
Keep the existing enabled, immobilizeTransferVehicles, keepEngineOnDuringTransfer, keepEngineOnDuringPump, rpmEnabled, and activeRpm values, then add or update:
Add the complete Config.Hose.vehiclePumpBehavior.hydraulics block:
Field
Shipped value
tankIntakePressure / tankSupplyGpm
35.0 / 1200.0
hydrantIntakePressure / hydrantSupplyGpm
150.0 / 1600.0
pumpIntakePressure / pumpSupplyGpm
100.0 / 900.0
cavitationStartRatio
0.85
frictionLossPsiPerTenMeters
10.0
/jobconfig manages these values under Pump Panel → Hydraulics.
Add these fields to every entry in Config.Hose.vehicles:
Vehicle field
Shipped value
pumpIntakeCount
2
pumpDischargeCount
4
pumpOutlet1Label
"Discharge Rear"
pumpOutlet2Label
"#1 Discharge"
pumpOutlet3Label
"#2 Discharge"
pumpOutlet4Label
"#3 Discharge"
pumpIntake1Label
"#1 Intake"
pumpIntake2Label
"#2 Intake"
The new /jobconfig vehicle cards manage counts, labels, and individual intake/outlet attachment positions. Existing hose and hydrant offsets remain valid fallbacks until you save dedicated port positions.
If you use /jobconfig, open the Fire job and review Pump Panel:
panel mode and pressure/RPM limits
engine retention, fuel, heat, damage, and hydraulics
every pump vehicle's intake/outlet counts, labels, and attachment positions
Save the job after reviewing it. Still edit the three portable-drafting values from section 1 manually.
No old public block was removed. Config.Hose.vehiclePumpBehavior.updateMs is the only existing shipped value changed by this patch.
Phase 4 of 5
SQL & items
No SQL migration and no new inventory item or inventory image are required for 1.3.1.
The console reports Base 1.32.1, Jobs Base 1.35.1, and Fire 1.3.1.
Simple mode exposes one intake and one discharge; enhanced mode exposes the configured ports.
Tank feed/fill, hydrant intake, portable pump intake, hose outlets, water monitor, and deck gun respect live valve and pressure state.
Fuel use, temperature, cavitation, overload warnings, and damage respond to pump load.
Natural drafting works inside every configured waterSourceAreas entry and is rejected outside them.
A firefighter can lay down and retrieve an attack hose, including inside an MLO.
Missing vehicle doors allow the intended rescue flow.
Incident Reports fill the shared tablet and air-bottle storage closes with Escape.
The protective-gear HUD shows helmet, mask, jacket, trousers, and boots correctly.
Version 1.3.0
Update sky_base to 1.32.0 and sky_jobs_base to 1.35.0 before updating sky_firejob.
Highlights
Placeable persistent extinguisher mounts - authorized firefighters can use a mounting kit to place complete extinguishers on walls or the ground, remove them through controlled interactions, and preserve their position, rotation, fill, condition, and inventory metadata across restarts.
Player carry for Fire crews - on-duty firefighters can carry and release nearby players through synchronized animations, with configurable distance and movement rules.
More reliable multi-patient rescue - any accessible trapped patient can be treated, extracted, and handed to a moving ambulance independently of the order used for other occupants.
Accurate incident completion - resolved fires, oil spills, tree incidents, and rescue objectives now complete their owning Mission Creator scenario consistently.
Notable Changes
Hose and nozzle props use authoritative shared state so other players and cinematic recordings see the same equipment.
Hard braking alone no longer traps occupants; crash reports require relevant collision evidence.
Trapped-player UI can show a localized top-down door overview with closed, open, damaged, and usable-exit states.
Protective gear can define separate male and female breathing and heat-protection clothing.
Mission Creator vehicle selection includes localized GTA vehicle categories, and placement gizmos remain interactive without position drift.
Fire Reports open inside the shared tablet, and firefighters can use shared bodycam/dashcam access supplied by Jobs Base.
Oil-spill editor size and cleanup state persist correctly through save and autosave.
Water Monitor radial actions appear reliably, and locally supplied fire vehicles synchronize correctly for other players.
Patient and caller dialogue renders reliably in a compact in-world rescue speech display.
Other Changes
Added the extinguisher mount model, texture, collision, archetype, inventory image, and localized setup text.
Reduced idle work for fire, hose, water-transfer, pump, and extinguisher systems.
Updated the resource version to 1.3.0.
Update InstructionsA guided update for server owners1.2.01.3.0
Guided update
Update sky_firejob safely
Complete the five phases in order. Your progress is kept while this page remains open.
0 / 5phases complete
Phase 1 of 5
Prepare
Update sky_base to 1.32.0 and sky_jobs_base to 1.35.0, then stop the server.
Back up
Safe location
Complete sky_firejob folder
Outside the live resources folder
Database
A restorable SQL dump
Customized config/editor/function files
Separate custom-config folder
Do not overlay this release. The resource now includes a rebuilt interface and new streamed extinguisher-mount assets.
Phase 2 of 5
Replace files
Install the complete package:
Action
Current server path
New package / destination
Delete
resources/[sky]/sky_firejob
Remove only after both backups exist
Copy
—
Copy the new sky_firejob folder to resources/[sky]/sky_firejob
Keep from new release
fxmanifest.lua, source, and source/html
Loads version 1.3.0, player carry, and the current interface
Keep from new release
Complete stream folder
Installs the mount model, texture, archetype, and collision
Keep from new release
config/locales
Contains the current Fire and setup text
Keep from new release
config/inventory/fire_extinguisher_mount_kit.png
Copy to your inventory later if required
Merge only if customized
Old config/editor/function edits
Reapply intentional changes inside the matching new files
Confirm that stream contains sky_fire_exting_mount.ydr, .ytd, .ytyp, and _col.ybn.
Phase 3 of 5
Merge config
Start with the newconfig/config.lua; it already contains every required block. Transfer your old server values into it instead of replacing the file. The complete 1.2.0 → 1.3.0 public config migration is grouped below.
Keep the complete new Config.PlayerCarry block. /jobconfig does not manage it.
Change these values only when you deliberately want different carry access, animations, or player alignment.
Keep these new values directly under Config.InteriorExtinguishers:
Field
Shipped default
fullAmmo
2000
emptyMountModel
"sky_fire_exting_mount"
emptyMountStreamDistance
100.0
emptyMountOffset
{ x = 0.0, y = -0.03, z = 0.0 }
emptyMountHeadingOffset
0.0
Keep the complete new Config.InteriorExtinguishers.placement block:
Field
Shipped default
enabled / requireOnDuty
true / true
item
"fire_extinguisher_mount_kit"
model
"prop_fire_exting_3a"
consumeItem / returnItemOnRemove
true / true
zOffset
0.0
streamDistance / pickupDistance
150.0 / 2.5
dynamic / wallPlacement
false / true
wallOffset / wallHeadingOffset
0.01 / 0.0
allowedJobs
{}
An empty allowedJobs list uses the normal Fire access rules; populate it only when placement should be restricted further.
Keep both complete blocks:
Config path
Shipped default
maintenance.enabled
true
maintenance.requireOnDuty
true
maintenance.allowedJobs
{ "firefighter" }
maintenance.emptyThresholdPercent
1.0
stock.enabled
true
stock.allowMountRestock
true
stock.storageStationId
""
stock.storageJob / stock.storageGrade
"firefighter" / 0
stock.extinguisherItem / stock.extinguisherAmount
"WEAPON_FIREEXTINGUISHER" / 1
stock.storageStationId = "" leaves station storage unassigned. Set a real station ID before expecting stock-based restocking.
Add the mount kit only to Fire shops that should sell it:
config/config.lua
{ name = "fire_extinguisher_mount_kit", label = "Fire Extinguisher Mount Kit", price = 250 }
/jobconfig manages placement, maintenance, and Fire shop rows. The stock block remains a manual config.
Add doorOverviewEnabled = true under Config.VehicleRescue.playerEntrapment.
Keep these three new entries under Config.FireSystem.protectiveGear.breathing.femaleRequiredComponents:
Component
gearKey
Label
Drawable / texture
1
"mask"
"breathing mask"
0 / 0
5
"other"
"air tank"
48 / 0
7
"other"
"breathing harness"
32 / 0
There is no new breathing femaleRequiredProps list. Keep these entries under heat.femaleRequiredComponents:
Component
gearKey
Label
Drawable / texture
3
"top"
"firefighter arms"
111 / 0
4
"pants"
"firefighter pants"
42 / 0
6
"shoes"
"firefighter boots"
13 / 0
8
"top"
"firefighter undershirt"
44 / 0
9
"top"
"firefighter vest"
0 / 0
10
"other"
"firefighter decals"
15 / 0
11
"top"
"firefighter jacket"
70 / 0
Keep one heat.femaleRequiredProps entry: prop = 0, gearKey = "helmet", label "firefighter helmet", drawable = 44, and texture = 0.
If you use /jobconfig, open the Fire job and review:
Extinguisher Placement and Maintenance
allowed jobs, empty-mount model/render distance/offset/heading, wall alignment, and custom mounts
Door Overview
the mount kit in every intended Fire shop
male and female Protective Gear
Then save. These parts still remain manual: Config.PlayerCarry, Config.InteriorExtinguishers.stock, streamed assets, SQL, and the inventory item/image.
Phase 4 of 5
SQL & items
Choose exactly one database path:
Your setting
Required action
Config.AutoExecuteQuery = true
Do not import SQL manually. The first start upgrades the extinguisher table.
Config.AutoExecuteQuery = false
Run the new sky_firejob/import.sql once while the server is stopped.
The migration keeps existing sky_fire_extinguishers rows and adds rx, ry, rz, fill_level, item_metadata, condition_status, is_taken, is_custom, last_inspected_by, last_inspected_at, and idx_inspection_due (is_taken, last_inspected_at). Do not drop the table.
Register fire_extinguisher_mount_kit in your active inventory unless the item already exists. The resource does not create the inventory item definition automatically. Copy config/inventory/fire_extinguisher_mount_kit.png into the inventory image folder.
The console reports Fire 1.3.0 without SQL, dependency, or missing-stream errors.
A mount can be placed on a wall and ground, removed, and returned as an item.
Extinguisher take/restock, fill, condition, and restart persistence work.
Stock-based restocking uses the configured station, job, grade, item, and amount.
Player carry synchronizes and releases correctly.
Hose/nozzle props are visible to a second client.
Hard braking alone does not trap players; real collisions and unordered multi-patient rescue work.
Fire, oil, tree, and rescue objectives complete; oil-spill edits persist.
Male and female protective gear rules and the trapped-player door overview display correctly.
Version 1.2.0
Update sky_base to 1.31.0 and sky_jobs_base to 1.34.0 before updating sky_firejob.
Highlights
Vehicle-to-vehicle water transfer - firefighters can connect compatible vehicles with a hose and transfer tank water through a synchronized, server-controlled workflow that pauses safely when the target tank is full.
Operational pump behavior - connected vehicles can be immobilized, engines can remain running, and configurable pump RPM behavior applies while hoses, cannons, or water monitors are actively spraying.
Interior extinguisher pickup system - configured world extinguishers can be collected, persisted, restored, and restricted by duty or job access.
Configurable society rewards - completed fire, oil-spill, tree, and rescue work can reward the society account of the completing player's configured Fire job.
Automatic Missions configuration - every creator mission can define whether it starts automatically, which jobs qualify, and whether duty is required, while new missions remain manual by default.
Notable Changes
Protective clothing requirements can now identify gear as helmet, mask, top, pants, shoes, or other equipment and display clearer missing-gear feedback.
Fire Stations and custom clothing labels can be managed more clearly in Job Configurator.
Tree incidents synchronize chainsaw props, avoid duplicate log pieces, and clean up logs and incident blips more reliably.
Rescue missions validate entities more carefully and limit completion notifications to the relevant participants.
Rear-door vehicle-rescue minigames use the correct visual scale.
Added the Full Dark tablet theme and PNG/WebP item-image support.
Other Changes
Improved configurator reliability during persisted oil-spill updates.
Updated the resource version to 1.2.0.
Update sky_base to 1.31.0 and sky_jobs_base to 1.34.0.
Download sky_firejob from the CFX Portal and create a database and resource backup.
Replace the /source folder, including the rebuilt interface under /source/html.
Replace /fxmanifest.lua so the new extinguisher, water-transfer, pump, reward, and version 1.2.0 scripts are loaded.
Replace /config/locales.
If you do not use /jobconfig, merge every changed /config/config.lua block manually:
Add the complete Config.InteriorExtinguishers block, including enabled, item/label, duty and job access, interaction/scan/restore distances, pickup/restore durations, allowed jobs, and the extinguisher model list.
Under Config.Hose, add the complete vehicleTransfer block with its enable/duty rules, transfer rate/tick, connect and hose distances, external-source and disconnect behavior, and source/target offsets.
Under Config.Hose, add the complete vehiclePumpBehavior block with transfer immobilization, engine behavior, RPM controls, and update timing.
Add societyAccount = "society_firefighter" to the shipped Fire job in Config.Jobs, or use the society account that belongs to each custom Fire job.
Add the complete Config.SocietyRewards block and configure the enabled state, eligible job rows, and reward amount separately for fire, oil, tree, and rescue work.
Under Config.FireScenarioCreator.random, remove defaultMinOnDuty and manualOnlyScenarios, then add missions = {}. Mission rows now carry their own automatic-start, duty, and job rules.
Add the appropriate gearKey to every entry under Config.FireSystem.protectiveGear.breathing.requiredComponents, heat.requiredComponents, and heat.requiredProps. Supported categories are helmet, mask, top, pants, shoes, and other.
If you use /jobconfig, verify Interior Extinguishers, Vehicle Water Transfer, Pump Behavior, Society Rewards, Protective Gear, and Automatic Missions before saving. Keep the complete shipped config blocks available as runtime defaults.
Run the updated /import.sql if automatic query execution is disabled. It creates sky_fire_extinguishers for persistent interior extinguisher state.
Ensure the configured extinguisher item or weapon is available through your inventory setup.
Restart sky_firejob after both base resources and test vehicle water transfer, pump behavior, extinguisher pickup/restore, society payouts for every mission type, protective gear checks, automatic mission filters, and tree/rescue cleanup.
Version 1.1.0
Update sky_base to 1.30.0 and sky_jobs_base to 1.33.0 before updating sky_firejob.
Highlights
Portable water monitor - firefighters can place, aim, supply, operate, and recover a synchronized water monitor that consumes truck-tank or external water and extinguishes fires through server-authoritative hit validation.
Operational helicopter bucket - configurable helicopter buckets can attach on the ground, fill from water, synchronize their movement, and perform validated high-capacity water drops.
Expanded fire simulation - configurable extinguishing agents, vehicle fuel-fire rules, reignition, long-range rendering, consolidated smoke, ambient 3D sounds, and standalone incident dispatches deepen fire behavior.
Reliable vehicle rescue flow - glass and spreader actions use the configured occupant side, tool minigames, and server validation. The obsolete seatbelt minigame step was removed, so an accessible patient proceeds directly to extraction from the vehicle.
Improved hose runtime - the hose uses configurable performance modes, smoother segmented geometry, better synchronization, and more stable nozzle/vehicle attachment behavior.
Notable Changes
Added synchronized firetruck cannon streams and authoritative cleanup for deployed firefighting equipment.
Added shared 3D sound playback for fires, flares, chainsaws, and configured effects.
Added item-based glass hammer and spreader actions to mission rescue workflows.
Added radial action submenus with one dynamic rescue action per vehicle side.
Added persisted mission-creator edits, improved gizmo controls, and more reliable scenario/entity cleanup.
Added server-side validation for player entrapment and reliable completion after every trapped patient is delivered.
Vehicle fires remain exterior incidents, stale entrapment clears when its vehicle disappears, and resource-owned props are removed on stop.
Completed the English/German Job Configurator coverage and the bundled runtime locale catalogues.
Other Changes
Simplified water equipment configuration and moved stable geometry values into shared runtime definitions.
Added the water monitor model to creator prop selection with PNG preview support.
Normalized streamed metadata declarations and removed an invalid duplicate nozzle archetype.
Updated the resource version to 1.1.0.
Update sky_base to 1.30.0 and sky_jobs_base to 1.33.0.
Download sky_firejob from the CFX Portal and create a resource backup.
Replace the /source folder, including the rebuilt interface under /source/html.
Replace /fxmanifest.lua so the new water equipment, sound, cleanup, stream declarations, and version 1.1.0 are loaded.
Replace /stream and /meta to install the current equipment models and metadata.
Replace /config/locales.
If you do not use /jobconfig, merge these /config/config.lua changes manually:
Copy the complete new Config.WaterMonitor block and add { name = "water_monitor", label = "Water Monitor", price = 750 } to every Fire Job shop that should sell it.
Replace the complete Config.HeliBucket block so item/command use, ground attachment, model-specific offsets, rope settings, capacity, filling, and validated dump behavior use the current values.
Merge the complete new Hose geometry/performance fields, including performanceMode = "performance", segment/nozzle/vehicle offsets, update distances, and timing.
Under Config.OilSpills, add bindDurationMs, sweepDurationMs, absorbentMinigame, and sweepMinigame.
Under Config.VehicleRescue, add the current minigames.glass and minigames.spreader blocks. Remove any old seatbelt-minigame configuration because extraction now starts directly after vehicle access is available.
Under Config.TrappedPatientRescue, add interactionDistance = 2.2, ambulanceDropoffRadius = 3.0, and the current treatment duration.
Under Config.FireSystem, add/merge syncDistance, dispatch, render, effects.sounds, and reignition.
Add the Config.FireSystem.materials.vehicle_fuel extinguishing-agent rules; the shipped default blocks water and the water monitor while allowing foam and extinguishers.
If you use /jobconfig, verify the same water equipment, hose, oil-spill, rescue, dispatch, render, sound, reignition, and extinguishing-agent settings before saving. Model geometry and runtime-only config fields must still be merged from the shipped config.lua.
Replace /config/editor/props.lua, then restore any custom creator prop entries.
Register the water_monitor item manually if your inventory requires explicit item registration; keep it in the configured Fire Job shop if it should be purchasable.
Restart sky_firejob after both base resources and test hoses, the water monitor, bucket filling/dumping, fire agents/reignition, rescue extraction without the seatbelt step, standalone dispatches, and cleanup after a resource restart.