Before updating, make sure sky_base and sky_jobs_base are up to date.
Current
Version 1.16.1
Highlights
Fixed an issue where Fire failed to initialize when shared dependencies took more than 60 seconds to load.
Notable Changes
Improved Fire startup so a failed migration is reported without aborting the entire initializer.
Other Changes
Updated the release package to keep its own dependency bootstrap editable for support.
Changed Files
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.16.01.16.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
These instructions cover sky_firejob1.16.0 → the refreshed 1.16.1 package. If you installed an earlier 1.16.1 download today, download the current 1.16.1 package again and apply these steps. The manifest version stays the same, so the version number alone does not identify the refreshed package. Back up resources, the database, custom configuration, translations and saved Job Configurator/Creator data. Validate on staging and stop the server for replacement. Install the refreshed Base 1.45.1, then Jobs Base 1.48.1, then the matching updates for your installed jobs and Crime. Complete earlier migrations first when upgrading from an older version.
Phase 2 of 5
Replace files
Use the complete 1.16.1 package. Delete the entire sky_firejob/source/ folder and insert its new version, then replace sky_firejob/fxmanifest.lua from the same package. Do not merge old generated interface files. Refresh the complete sky_firejob/config/locales/ tree and merge custom translations. Keep your existing selected language in sky_base/config/config.lua.
The dependency bootstrap ships as an editable file. Use the supplied file; do not restore an older custom bootstrap. Base also keeps its callback files editable for support. Install the source and manifest together.
Phase 3 of 5
Merge config
No plaintext configuration options, Job Configurator keys or defaults are added, removed or reset by this hotfix. Keep your existing configuration, jobs, grades, locations and saved overrides. /jobconfig does not replace runtime files, install schema or reload changed manifests. No configuration import or reset is required.
Optional diagnostics are disabled by default. If support requests a recording, put setr sky_profiler 1 before the Sky ensure lines in server.cfg, restart the server, run profiler record 1000, wait for profiler status to show completion, then run profiler saveJSON sky-startup-hotfix.json. Disable with setr sky_profiler 0 and another full server restart. This is not a /jobconfig setting; no recording or upload starts automatically.
Phase 4 of 5
SQL & items
SQL: No new table, column or manual SQL update is introduced by this patch. Existing failed migrations still need their original database error repaired; continuing startup does not create a missing schema. Keep the existing automatic/manual migration policy. Do not replay a full import, clear tables, force success markers or reset saved job/Creator data. Items: No new definitions or inventory registrations. Assets: No new item images, models or stream assets; keep existing assets. Earlier release requirements still apply for older installations.
Phase 5 of 5
Restart & test
Perform a full server restart after replacement so the changed manifests and file lists are reloaded. Start the framework, database connector and selected providers first, then Base 1.45.1, Jobs Base 1.48.1 and the installed consumers. Unrelated clothing, vehicle and map packs can remain after Sky in server.cfg. Reconnect clients. Open the Fire tablet and check your configured locations and normal duty workflow. A long dependency wait now continues until initialization completes; it no longer aborts at 60 seconds. Database migration warnings remain actionable, and failure to read saved settings remains a visible initialization error. Collect the first error, preceding lines and actual installed versions if a feature remains unavailable.
Version 1.16.0
Highlights
Added an optional three-way hose divider with inventory placement, separate branch valves, supply connections and a nearby setup checklist.
Added a selectable EU hose nozzle alongside the existing normal nozzle, with model previews in the Job Configurator.
Added central invoice management to the Fire Explorer, including payment progress and eligible installment plans.
Notable Changes
Fixed an issue where moving vehicle fires could stop responding to hose hits at their current position.
Changed the default vehicle-fuel settings so hose water can extinguish those fires without triggering a worsening water reaction.
Changed the default Fire billing mode to use the provider selected in Sky Base, while retaining the existing local cash/card payment mode.
Added gang selectors to the existing access lists for fire equipment, extinguisher work and oil cleanup.
Improved the mission asset picker with a shared catalogue, category filters and custom model entry.
Fixed an issue where failed Mission Hub loads appeared as an empty list by showing the error, a retry action and fresh results when reopened.
Fixed an issue where reloading the interface during mission editing could leave the editor camera and player controls active.
Other Changes
Improved the trapped-player vehicle display with clearer vehicle artwork, door positions and readable door-status labels.
Improved invoice receipts and printer controls so longer documents remain readable within the device screen.
Added shared price-catalogue choices and preserved invoice retry references after failed replies.
Improved shared-document browsing by grouping authorized documents by type and their associated citizen or vehicle.
Improved tablet form fields with content-sized descriptions and clearer select actions.
Fixed an issue where startup requests could arrive before Fire menus, settings and tablet callbacks were ready.
Fixed an issue where saved divider settings or an interface reload could leave divider interactions and the checklist out of sync.
Fixed an issue where divider branch hoses used the truck's position instead of the divider's position when placed on the ground.
Fixed an issue where incomplete divider positions or branch values could be accepted.
Fixed an issue where the new nozzle weapon metadata could fail to load because its text encoding declaration was invalid.
Update InstructionsA guided update for server owners1.15.11.16.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
These instructions cover sky_firejob1.15.1 → 1.16.0. Before replacing files, confirm that your customer download platform provides the versions below and check each downloaded resource's fxmanifest.lua; published documentation or a source tag alone does not establish that its customer download has been uploaded. Complete earlier migrations first if upgrading from an older version. Back up the database, resources, custom config, translations and saved Job Configurator/Creator data. Validate the update on staging before applying it to your production server. Stop the server during replacement. Install Sky Base 1.45.0, then Sky Jobs Base 1.48.0, then the matching releases for your installed jobs and Crime. Keep provider dependencies and optional integrations compatible; preserve saved overrides and existing records.
Phase 2 of 5
Replace files
Use the complete 1.16.0 release package. Delete the entire sky_firejob/source/ folder and insert its new version; do not merge old generated interface files. Replace sky_firejob/fxmanifest.lua from the same package. Refresh the complete sky_firejob/config/locales/ tree and merge your custom translations into the new files. Keep your selected shared language in sky_base/config/config.lua. Install the following shipped paths from that package, merging custom configuration into the updated public files rather than restoring old complete files:
In sky_firejob/config/config.lua, preserve your existing vehicle placements, job lists, incident settings and rewards. No old configuration block or option is removed in this release.
If you manage settings through /jobconfig, select Firejob and review Billing, Hose, Vehicle Fires, Oil Cleanup, Interior Extinguishers, Water Monitor, Water Bucket and Rescue Cushion. Existing saved settings remain effective; replacing config.lua does not overwrite them. Save the values you want there. For installations without /jobconfig, merge the following exact changes into config.lua.
Billing. The shipped Config.Billing.mode changes from "consent" to "framework". "framework" uses the provider selected by Config.billing in sky_base/config/config.lua; with "sky", invoices use Sky Billing. "consent" remains available for the existing local cash/card prompt. Keep your enabled/range/maxAmount/reasons values. The old default block was:
In /jobconfig → Firejob → Billing, the equivalent setting is fireBillingMode; choose "framework" to adopt the provider flow or keep "consent" intentionally. The other existing settings are fireBillingEnabled, fireBillingRange, fireBillingMaxAmount and fireBillingReasons. Invoices being issued are distinct from their being paid; only confirmed payment becomes society income.
Hose. Three settings were absent from the old Config.Hose table. Add these complete new entries inside that existing table; retain every other hose field:
The default nozzle remains the normal nozzle. Set nozzleModel = "hohlstrahlrohr" for the EU nozzle. Set dividing = true only when you want the three-way divider. hollowNozzleGroundOffset is the EU nozzle's vertical ground correction; the existing groundedNozzleOffset = -0.38 remains the normal nozzle correction. In /jobconfig → Firejob → Hose, use hoseNozzleModel under Nozzle, hoseDividing under General and hoseHollowNozzleGroundOffset under Nozzle → Ground Placement. The model selector offers Normal nozzle and EU nozzle; custom model names are not accepted. Changing the nozzle model returns deployed attack hoses, so switch it while equipment is not in use. Config.Hose.vehicles, its pump panel/intake/outlet geometry and all existing vehicle definitions have no net configuration change in this release; keep the model-specific coordinates you already configured.
Vehicle fuel fires. In Config.FireSystem.materials.vehicle_fuel, the old complete public override was:
The new waterReaction table is fully shown above; the previous public block had no such table and inherited an enabled water reaction. Only its enabled value changes; preserve any intentional custom reaction tuning. Water means the hose/nozzle, firetruck cannon and helicopter bucket. Portable Water Monitor water remains disabled for this material. The effective default changes are water false → true, waterEffectiveness 0.0 → 0.65, waterReaction.enabled true → false; foam, Water Monitor and extinguisher permissions remain unchanged. In /jobconfig → Firejob → Vehicle Fires, set vehicleFiresCanExtinguishWater = true, vehicleFiresWaterEffectiveness = 0.65 and vehicleFiresWaterReactionEnabled = false to adopt those defaults. Keep vehicleFiresCanExtinguishFoam = true, vehicleFiresCanExtinguishExtinguisher = true, vehicleFiresCanExtinguishWaterMonitor = false and vehicleFiresFoamEffectiveness = 1.35, unless you intentionally customized them. Existing reaction tuning keys vehicleFiresWaterReactionChance, vehicleFiresWaterReactionInterval, vehicleFiresWaterReactionExplosionChance, vehicleFiresWaterReactionSpreadCount and vehicleFiresWaterReactionSmokeIncrease retain their meaning. If you selected another material for Config.VehicleFires.material, these settings affect that selected material rather than automatically replacing it with vehicle_fuel.
Optional gang access. Existing exact job names and job groups remain valid. The following existing selector lists now also accept gang:<internal_name> where your configured gang integration supplies membership:
Config.OilSpills.cleanup.allowedJobs ↔ oilCleanupAllowedJobs: additional access alongside all configured Firejob jobs. An empty list grants no additional selectors; it does not remove configured Firejob access.
Config.InteriorExtinguishers.allowedJobs ↔ interiorExtinguishersAllowedJobs: an empty list allows every job, with requireOnDuty still enforced.
Config.InteriorExtinguishers.noDutyJobs ↔ interiorExtinguishersNoDutyJobs: exempt selectors may take/restock extinguishers without job duty; an empty list provides no exemptions.
Config.InteriorExtinguishers.maintenance.allowedJobs ↔ interiorExtinguishersMaintenanceAllowedJobs: additional access alongside configured Firejob jobs; an empty list adds nobody.
Config.InteriorExtinguishers.placement.allowedJobs ↔ interiorExtinguishersPlacementAllowedJobs: an empty list allows every job, with placement.requireOnDuty still enforced.
Config.WaterMonitor.allowedJobs ↔ waterMonitorAllowedJobs: an empty list uses configured Firejob jobs.
Config.HeliBucket.allowedJobs ↔ heliBucketAllowedJobs: an empty list uses configured Firejob jobs.
Config.RescueCushion.allowedJobs ↔ rescueCushionAllowedJobs: an empty list uses configured Firejob jobs.
Keep the corresponding requireOnDuty settings for job-based access. Gang membership is checked independently of job duty. No selector/default list migration is required; only add gang selectors if desired. This equipment access does not grant the new divider workflow to gangs: that workflow requires an on-duty configured Firejob job.
Replace sky_firejob/config/init.lua from the same download. If you customized sky_firejob/config/sv_functions.lua, retain your dispatch hook while merging its new leading readiness line:
if not Citizen.Await(SkyJobsReady) then return end
Do not copy an older init or hook file back over the updated dependency initialization.
Use the matching updated sky_jobs_base together with Firejob. The additional configuration update routing does not change Firejob setting keys, defaults, saved overrides, inventory setup or SQL requirements.
Truck pump connections required by the divider. The vehicle geometry fields in Config.Hose.vehicles retain their existing names and defaults. Configure each intended truck in /jobconfig → Firejob → Pump Panel → Vehicles (table hoseVehicles). In its row, use Hose Control access (pumpPanelAccess) to place the operating panel; this writes pumpPanelConfigured, pumpPanelX, pumpPanelY, pumpPanelZ and pumpPanelSize. Set pumpIntakeCount (up to 2) and place each enabled pumpIntakeN* connection; set pumpDischargeCount (up to 4) and place each enabled pumpOutletN* connection. Preserve your truck-specific coordinates. In plaintext mode merge these same panel/intake/outlet fields from the supplied vehicle definition and set their coordinates for that actual vehicle. Do not copy example coordinates from a different truck. A divider requires the configured supply connection and pump; installing the item alone does not configure a truck.
Optional diagnostics are disabled by default. If support requests a recording, put setr sky_profiler 1 before the Sky ensure lines in server.cfg, then restart the server. Run profiler record 1000, wait for profiler status to show that recording has completed, then run profiler saveJSON sky-release-profile.json. Disable diagnostics with setr sky_profiler 0 and another server restart. This is not a /jobconfig setting; no recording or upload starts automatically.
For an older explicit profiler package, replace any previously modified public config/provider/compatibility files with the supplied versions and merge your intentional customizations. In this release package, profiler preparation preserves all files outside source/ byte for byte except fxmanifest.lua; the functional config changes listed in this guide still require their own merge.
Phase 4 of 5
SQL & items
Database. Firejob has no new database table, column or manual SQL migration in this release. Do not re-import or reset its existing database for the divider/nozzle update.
Equipment assets. Replace the four weapon metadata files sky_firejob/meta/pedpersonality.meta, weaponanimations.meta, weaponarchetypes.meta and weapons.meta together. Install sky_firejob/stream/w_am_hohlstrahlrohr.ydr and all five files in sky_firejob/stream/dividing_breeching/: sky_dividing_breeching.ydr, sky_dividing_breeching.ytyp, sky_dividing_tap_1.ydr, sky_dividing_tap_2.ydr and sky_dividing_tap_3.ydr. The EU nozzle now uses weapon name WEAPON_SKY_HOSE_EU and streamed model w_am_hohlstrahlrohr; the configuration choice stays "hohlstrahlrohr". Update any custom code that references the earlier development name WEAPON_SKY_HOHLSTRAHLROHR. Keep the original normal-nozzle model. Update the complete source folder and fxmanifest.lua from that same download even if you keep the normal nozzle and divider disabled.
Divider placement and items. Keep the divider disabled until your inventory has registered an item named fire_dividing_breeching. Copy sky_firejob/config/inventory/fire_dividing_breeching.png from the download to your inventory's item-image directory and associate it with that exact item name. Firejob supplies the icon but no provider-specific item-definition template; register the item using your inventory's normal item catalogue rather than replacing that catalogue or copying an unrelated Jobs Base item. Do not configure a second usable-item handler: Firejob registers its own through Sky Base. Once enabled, an on-duty configured Firejob member uses that item to place the divider; placement consumes one item and radial removal returns one. The former /dividing placement command is no longer available. At a configured operational fire vehicle, take its supply hose through the radial menu, connect it to the divider, take an attack hose from the same vehicle and connect an available branch. Operate the divider's valves and the supplying truck pump; the nearby checklist shows the remaining connection/valve steps. Close unused open outlets to avoid wasting water. Do not assume /jobconfig installs the inventory item, its icon or the streamed assets.
Billing provider. For Sky Billing, use the coordinated sky_base 1.45.0 and sky_jobs_base 1.48.0 updates and select Config.billing = "sky" in sky_base/config/config.lua. Explicit external providers stay supported through mode = "framework"; the local mode = "consent" remains available. The shared invoice catalogue and installment eligibility come from Jobs Base's Billing settings, not a new Firejob SQL table. Install/update Jobs Base's billing database using its own instructions before testing Fire invoices. Installments are only offered for eligible invoices; do not promise them for every provider or invoice.
Locales and interface assets. Replace sky_firejob/config/locales/* completely, preserving any custom wording separately, and install the NUI build in the same source-folder replacement. The global language continues to come from Sky Base's Config.locale. The new HUD artwork is included in the built interface; it is not an inventory-image install. This release does not newly add Hungarian as a language.
Manual ox_inventory example for the optional divider. If you enable Config.Hose.dividing, merge the following entry into ox_inventory/data/items.lua. This is an example, not a supplied installer or mandatory label/weight; choose those two values for your server. Keep consume = 0, omit a second client Use handler, and let Sky consume one divider only after placement succeeds and return it when it is removed. Copy sky_firejob/config/inventory/fire_dividing_breeching.png to ox_inventory/web/images/fire_dividing_breeching.png, then restart the inventory before the dependent Sky resources.
['fire_dividing_breeching'] = {
label = 'Fire hose divider',
weight = 1000, -- Example weight: choose your server value.
stack = true,
close = true,
consume = 0,
},
For a different inventory, use its installed catalogue format and image path while retaining the same item ID and reusable Use behavior. The EU hose nozzle does not need an additional inventory weapon entry: the hose runtime equips the selected nozzle weapon.
Phase 5 of 5
Restart & test
Start your framework, database connector and configured providers first, then Base, Jobs Base and the updated job resources in dependency order. Reconnect clients. After a complete restart, check an on-duty Firejob character can open the tablet and mission editor without startup errors. Confirm the effective Billing and Vehicle Fires settings in /jobconfig if enabled; issue one test invoice and verify its confirmed payment appears in the correct society account. With the divider enabled, give one registered fire_dividing_breeching item to an on-duty Firejob character, place it by using the item, connect its supply and one attack hose, open the appropriate valves and test water flow; remove it through the radial menu afterward and confirm the inventory item is returned. Switch between normal and EU nozzles when hoses are not deployed and check the held/grounded nozzle model. Test a moving burning vehicle, a failed Mission Hub request with its retry action and an interface reload during mission editing. Existing job selectors should retain their previous access/duty behavior; test any optional gang selector with an actual member.
After deploying the matching Jobs Base and Firejob, save one Firejob setting, then one unrelated resource's setting. Confirm Fire equipment settings, item availability and Fire tablet access still follow the Firejob profile. Restart Firejob and recheck the saved value.
If a check fails, keep the update on staging and collect the installed resource versions, selected provider, effective saved setting and the first relevant startup or action error. A successful source test, build or copy does not establish live FiveM, provider or customer acceptance.
Version 1.15.1
Highlights
Fixed an issue where the Fire file explorer failed to open inside the shared tablet.
Notable Changes
Changed Fire startup back to the previous shared-dependency loading behavior.
Improved hose aiming synchronization and temporary pump and scenario-prop cleanup.
Other Changes
Updated the bundled Hungarian translations.
Changed Files
sky_firejob/config/locales/*
sky_firejob/fxmanifest.lua
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.15.01.15.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
These instructions cover sky_firejob1.15.0 → 1.15.1. Complete earlier migrations first if upgrading from an older version. Back up the database, resources, custom configuration and saved job/Creator data. Stop the server for the coordinated update. Install Base 1.44.1, then Jobs Base 1.47.1, then the matching hotfixes for your installed Sky jobs and Crime.
Phase 2 of 5
Replace files
Use the 1.15.1 download. Delete the entire sky_firejob/source/ folder and insert the new folder. Replace sky_firejob/fxmanifest.lua from that same package. Refresh the complete sky_firejob/config/locales/ tree and reapply custom translations. Keep the new source and manifest together; do not merge old generated interface files into them.
Phase 3 of 5
Merge config
No configuration values or Job Configurator setting keys are added, removed or reset by this hotfix. Keep your current settings and saved overrides. Hungarian uses the existing Config.locale = "hu" setting in sky_base/config/config.lua; leave your selected language unchanged if you do not want to switch. Update the matching Base, Jobs Base and installed resource locale folders together.
Optional diagnostics stay disabled by default. If support requests a recording, put setr sky_profiler 1 before the Sky ensure lines in server.cfg, restart, run profiler record 1000, wait for profiler status to show completion, then run profiler saveJSON sky-hotfix-profile.json. Disable with setr sky_profiler 0 and another restart. This is not a /jobconfig option; nothing is recorded or uploaded automatically.
Phase 4 of 5
SQL & items
No new SQL import, item definition, inventory image or stream asset is required for this hotfix. Keep saved job/Creator data; do not reset or reimport it. Required earlier migrations still apply when upgrading from an older release.
Phase 5 of 5
Restart & test
Start your framework, database connector and configured providers first, then Base 1.44.1, Jobs Base 1.47.1 and the updated jobs/Crime. Reconnect clients. Open the Fire file explorer from the shared tablet and check hose aiming with another player, pump pickup and scenario-preview cleanup. If startup still fails, collect the first error and its preceding log lines together with the installed versions.
Version 1.15.0
Highlights
Added editable SCBA refill-point appearance and interaction settings to the Job Configurator.
Fixed an issue where saving automatic missions could lose the mission identity or apply an activation change to the wrong mission.
Notable Changes
Fixed an issue where Fire station map icons ignored individual departments' saved names and display settings.
Fixed an issue where fallen-tree marker, map-icon and interaction-range settings did not affect the active incident.
Fixed an issue where fallen-tree cleanup tried to remove nearby map icons instead of only its own recorded icons.
Other Changes
Added Hungarian translations for Fire menus and messages.
Improved scene-visual cleanup when duty access changes, the player logs out or a tree incident enters its clearing phase.
Improved startup dependency loading and database-wait diagnostics for protected resource packages.
Improved keyboard selection and accessibility in shared tablet dropdowns.
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.14.01.15.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
These instructions cover sky_firejob1.14.0 → 1.15.0. Complete earlier required migrations first if upgrading from an older version. Stop the server for the coordinated update and back up the database, resource files, customized configuration and saved job/Creator data. Install Base 1.44.0 first, then Jobs Base 1.47.0, then sky_firejob1.15.0 and the matching updates for your other installed Sky jobs. The updated manifest requires the matching Base and Jobs Base imports; do not combine it with older dependency folders.
Phase 2 of 5
Replace files
Use the matching 1.15.0 package. Delete the complete old sky_firejob/source/ folder and insert the new folder. Replace sky_firejob/fxmanifest.lua from the same download. Refresh the entire sky_firejob/config/locales/ tree and merge your custom translations back. Do not merge old generated interface files into the new source/ folder.
Merge the new SCBA interaction definition into sky_firejob/config/config.lua as described below. No SQL file, inventory definition or stream asset changes in this release, and no files outside source/ are removed or renamed.
Phase 3 of 5
Merge config
Hungarian language
Refresh the complete resource locale folder from this download, including hu.lua, and carry over your custom translations. To use Hungarian, set the existing Config.locale value to "hu" in sky_base/config/config.lua; its supplied default remains "en". Keep your current value if you are not changing language. This is the shared Sky language setting, so update the matching Base, Jobs Base and installed job locale folders together. Jobs Base supplies the Hungarian /jobconfig translations too. No new /jobconfig language setting, saved-job reset or database migration is required for this language addition. Apply the normal restart and reconnect steps at the end of this update.
New plaintext block: In sky_firejob/config/config.lua, Config.Interactions.air_refill_station was previously absent because the SCBA refill point was defined internally. Add this full block after Config.FireStationBlip if you do not already have a Config.Interactions table:
If your file already defines Config.Interactions, insert only the air_refill_station entry into that table; do not replace your other entries. These values preserve the previous SCBA defaults: marker on, blip/NPC off, range 1.8. Labels continue to come from the installed locale unless deliberately customized. No existing config block is removed.
With /jobconfig: After starting the updated resources, open Fire → Interactions → SCBA refill station (air_refill_station). This is an interaction definition with saved interaction overrides, not a new standalone switch. Review marker, blip, NPC, label and distance in that editor; an old plaintext edit does not replace saved overrides. Existing refill locations remain in the Fire station's Locations area and do not need to be recreated.
Station blips: Existing Config.FireStationBlip and Config.Jobs[*].blip retain their values. Complete saved names, prefixes, visibility and display settings now take effect. New/imported jobs without their own blip inherit Fire Station Blip; existing per-job overrides stay authoritative. Review each department's blip in the job editor.
Fallen trees:Config.TreeIncident has no new required field or changed default. Existing marker/blip settings now render, and interactionDistance now controls the radial range instead of the old hardcoded 5.0. Its shipped value remains 2.5. Review the existing Trees settings: treeEnabled, treeRequireOnDuty, treeInteractionDistance, treeBlipSprite, treeBlipColor, treeBlipScale, treeBlipLabel, treeMarkerType, treeMarkerSize, treeMarkerHeight, treeMarkerR, treeMarkerG, treeMarkerB, treeMarkerA. An explicitly empty blip label and zero color/alpha values remain meaningful. Keep your saved overrides; tree activation stays in the radial menu.
Automatic Missions: Existing scenarioAutomaticMissions rows keep their mission keys when saved, including newly listed or differently ordered missions. No new setting key, mission import or data reset is needed. Reopen Automatic Missions, review the intended enabled states and save once if a previous attempt failed or affected the wrong row. Unrelated mission settings remain unchanged.
No Config.Hose.vehicles panel/intake/outlet changes, incident/reward configuration changes, extinguisher access-policy changes or breathing-bottle storage migration are introduced by 1.14.0 → 1.15.0. The earlier bottle retrieval and SQL instructions apply only when upgrading through 1.14.0 from an older version.
Optional performance diagnostics
Extra profiler information remains disabled by default. If support requests a 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 until profiler status reports completion, then run profiler saveJSON sky-release-profile.json. Share the file only when requested. To disable the extra information, change the line to setr sky_profiler 0 and restart again. This is not a /jobconfig setting; enabling it does not record or upload anything automatically.
Keep source/ and fxmanifest.lua from the same download even when diagnostics are disabled. Profiler processing changes only source Lua and the manifest. If an older profiler package changed public files outside source/, restore those files once from the clean current download and reapply your own customizations.
Phase 4 of 5
SQL & items
No Fire SQL migration, table/column type/default change, new item, inventory image, streamed model, hose-vehicle coordinate edit or permission-ID migration is required for this release. Keep existing saved missions, bottle storage and department data. The SCBA interaction block is configuration; it does not add another inventory item or require replacing refill locations.
Phase 5 of 5
Restart & test
Start providers/framework, Base 1.44.0, Jobs Base 1.47.0 and Fire 1.15.0, then reconnect. Check the installed versions and resolve startup errors. Change one department's station blip, then change an SCBA point's label/marker/NPC and range; save/reopen and verify that its existing refill action still works.
During a test tree incident, check the saved scene visuals and radial range, duty loss, clearing phase and completion. Nearby unrelated map icons must remain. In Automatic Missions, change one mission's enabled state, save, reopen and restart; verify the same mission remains selected and other rows retain their settings. Check keyboard selection in tablet dropdowns. These are installation checks for your actual provider and game environment, separate from automated source tests.
Version 1.14.0
Highlights
Improved vehicle breathing-bottle storage so bottle slots, pressure and item details can be restored after a restart for the same vehicle plate.
Notable Changes
Changed empty interior-extinguisher job lists to allow every job while retaining the configured duty requirement and explicit exceptions.
Fixed an issue where invoice receipts with an empty item list could fail to display.
Other Changes
Added playback for video records opened in the shared document viewer.
Fixed an issue where select menus inside dialogs could appear behind the dialog or lose its focus scope.
Improved scaling of shared tablet controls, signatures and document views across screen resolutions.
Changed Files
sky_firejob/fxmanifest.lua
sky_firejob/config/config.lua
sky_firejob/import.sql
sky_firejob/config/locales/*
sky_firejob/source/* — delete and reinsert
Update InstructionsA guided update for server owners1.13.01.14.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 stopping the old version, remove every breathing bottle from vehicle bottle storage. Old live vehicle-state contents are not imported into the new storage. Already lost contents cannot be reconstructed.
These instructions cover sky_firejob1.13.0 → 1.14.0. Complete earlier required migrations first if upgrading from an older release. Stop the server for the coordinated update and back up the resource, database, customized configuration and saved job/creator settings. Install Base 1.43.0 first, then Jobs Base 1.46.0, then the matching installed job releases.
Phase 2 of 5
Replace files
Use the matching 1.14.0 package. Delete the old sky_firejob/source/ directory completely and insert the new directory. Replace sky_firejob/fxmanifest.lua from the same package. Refresh the entire sky_firejob/config/locales/ tree and merge your custom translations back. Replace sky_firejob/import.sql and merge the config/config.lua access-policy comment and settings described here. Merely copying SQL does not execute it.
Do not merge old generated interface files into the new source/ directory.
Phase 3 of 5
Merge config
Prepare file changes while the server is stopped. Perform the /jobconfig, Creator and other in-game actions described in this section after starting the updated resources in step 5, during maintenance and before admitting players.
allowedJobs = {}, -- Empty allows every job; requireOnDuty still applies.
The value is unchanged; behavior changes. Previously an empty list fell back to configured Fire jobs. It now accepts any job subject to duty rules. The unchanged relevant shipped values are:
noDutyJobs is checked first: listed jobs bypass both the duty requirement and the normal allowed-job filter. This is an explicit exception list, not just another default allowed-job list. To allow unrestricted pickup/restocking use allowedJobs = {} and requireOnDuty = false. To retain a department-only policy, provide your actual department job names in allowedJobs and review noDutyJobs; do not silently remove an intentional exception.
Exact /jobconfig resource/section: sky_firejob, Interior Extinguishers -> General -> Access. Keys: interiorExtinguishersAllowedJobs, interiorExtinguishersRequireOnDuty, interiorExtinguishersNoDutyJobs. The first and third are job rows converted to/from string lists. Saved values remain overrides; the empty saved list gets the new empty-list meaning. Placement and maintenance permissions are unchanged. No new setting key is introduced.
Optional Lore Billing
With Base 1.43.0, use the existing provider setting in sky_base/config/config.lua: change Config.billing from "auto"/your selected provider to "lore" for an explicit choice, or keep "auto" when Lore should be detected. Start lore-billing before Sky Base so automatic detection sees it. Install/retain Lore's own documented setup separately; Fire does not install the provider or its schema.
Fire's existing shipped default in sky_firejob/config/config.lua remains Config.Billing.mode = "consent". To send through Lore, deliberately select "framework" instead. This is an optional setup choice; the Fire default remains unchanged.
Without /jobconfig:
Config.Billing = {
enabled = true,
mode = "framework", -- previously "consent" if using the shipped default
range = 6.0,
maxAmount = 50000,
reasons = {} -- Preserve your own existing presets.
}
This block shows the existing defaults with only the mode switched; keep custom range, maximum and reasons instead of replacing them. With /jobconfig, set Billing mode to Framework using exact key fireBillingMode; verify fireBillingEnabled is true. A saved fireBillingMode override takes precedence over a plaintext edit. billing.mode is not the Fire setting key.
Fire validates staff access, target distance, integer amount and reason. The configured department needs a valid society account. The new Base adapter relays a society invoice through the online issuing player's Lore client context and needs issuer and recipient online. Dispatch is not a provider persistence acknowledgment; the Sky return value alone does not confirm a stored invoice. Verify actual invoice delivery in Lore during the installation check.
The verified Lore version requires Qbox (qbx_core), ox_lib, oxmysql and Renewed-Banking. Install/start those dependencies before Lore. The Sky adapter does not add another framework bridge to the external provider.
Optional performance diagnostics
Extra profiler information is disabled by default. If support requests a recording, add setr sky_profiler 1 to server.cfg before the Sky ensure lines and restart. In the server console, run profiler record 1000, wait until profiler status reports completion, then run profiler saveJSON sky-release-profile.json. To disable the extra information, use setr sky_profiler 0 and restart. This is not a /jobconfig setting. Enabling it does not start recording or upload anything automatically.
Keep source/ and fxmanifest.lua from the same download even when diagnostics are disabled. Profiler processing changes only source Lua and the manifest; public configuration and provider files remain unchanged by that processing. If an older profiler package altered files outside source/, restore those once from the current download and reapply your own customizations.
Phase 4 of 5
SQL & items
New table, created automatically or with this manual SQL block:
CREATE TABLE IF NOT EXISTS `sky_fire_air_storage` (
`plate` VARCHAR(64) NOT NULL,
`slots` LONGTEXT NOT NULL,
PRIMARY KEY (`plate`)
) ENGINE=InnoDB;
Neither column has a default; neither path forces charset/collation. Existing Config.AutoExecuteQuery = true creates the table on startup. With false, run that single CREATE TABLE statement manually before starting the updated Fire resource. /jobconfig does not install SQL.
Old entity-state storage is deliberately not imported. Owners must retrieve bottles before the first update/restart of the old implementation if they want to preserve those live contents. Already lost old contents cannot be reconstructed. New storage uses the uppercase plate with all whitespace removed; stable unique plates matter. Changing the plate selects different storage; two vehicles with the same normalized plate share that storage identity. Existing vehicle model/slot-count configuration is unchanged, and slots temporarily above capacity are retained in SQL.
No Config.Hose.vehicles panel/intake/outlet edits, incident/reward changes, inventory item additions, new images, stream files or permission-ID migration occur in this release. Complete older migrations separately only when upgrading from an earlier version.
Phase 5 of 5
Restart & test
Start providers/framework, Base 1.43.0, Jobs Base 1.46.0 and Fire 1.14.0, then reconnect and check SQL startup errors. Return the retrieved bottles after startup. Store a partly used bottle in a non-first slot, restart the resource and then server, respawn the same plate and retrieve it once. Check pressure and another player attempting the same slot. Test an ordinary job against your selected extinguisher access policy. Check invoice receipts and, if selected, actual delivery in Lore. These are installation checks to perform on your server.
Version 1.13.0
Update Base to 1.42.0 and Jobs Base to 1.45.0 before installing Firejob 1.13.0.
Highlights
Added Fire department invoices from the radial menu, with a paper preview, multiple preset reasons and recipient payment by Cash or Card.
Added File Explorer to the Fire tablet, bringing Incident Reports and documents shared by other departments into one place.
Added Print and Share actions for saved incident reports, including explicit recipient selection and read-only access for receiving jobs.
Notable Changes
Fixed an issue where simultaneous report edits or sharing changes could overwrite another user's work; conflicting saves now retain the draft and offer the current report.
Improved civilian references in incident reports so selected characters can be linked accurately while existing written names remain readable.
Optimized scenario loading, Fire settings and extinguisher updates to transfer changed information instead of repeatedly sending complete collections.
Improved incident-report spacing, tags and controls inside File Explorer.
Other Changes
Improved form readability on large displays and kept selection lists above open dialogs.
Updated the oil-spill setting description to explain that automatic collision and wear spills require a connected vehicle system.
Added translated invoice, Explorer, sharing and report-conflict messages in all bundled languages.
Changed Files
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.12.01.13.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
These instructions cover 1.12.0 → 1.13.0. Complete earlier migrations first if upgrading from an older version. Stop the server and back up the database, resource, custom configuration and saved creator/configurator data. Update sky_base to 1.42.0, then sky_jobs_base to 1.45.0, including their own migration and inventory steps, before Firejob.
Phase 2 of 5
Replace files
Install the matching 1.13.0 download. Delete and reinsert sky_firejob/source/*; replace sky_firejob/fxmanifest.lua, sky_firejob/import.sql and the complete sky_firejob/config/locales/*. Merge the Billing block into your customized sky_firejob/config/config.lua. Preserve other customized configuration, saved scenarios and assets. There are no removed or renamed customer paths outside source/ in this release.
Use source/* and fxmanifest.lua from the same download even with diagnostics disabled. Profiler builds may instrument only Lua inside source/ and the manifest. If an older profiler package changed public files, restore those once from the clean new package and reapply your customizations. The new invoice graphics and Explorer UI are included in source/*; no separate Fire stream or inventory assets are added.
Phase 3 of 5
Merge config
Merge the new complete block into sky_firejob/config/config.lua; Config.Billing did not exist in 1.12.0:
enabled allows invoices; mode = "consent" lets the recipient choose Cash or Card or decline; range is the maximum recipient distance in metres; maxAmount caps a whole-number invoice total. An empty reasons list means there are no preset reasons: staff can enter a reason manually. To add presets, use entries such as { reason = "Service description", amount = 100 }; multiple presets and notes can be combined.
With /jobconfig, open Fire → Billing and review fireBillingEnabled, fireBillingMode, fireBillingRange, fireBillingMaxAmount and fireBillingReasons. Their defaults are respectively true, "consent", 6.0, 50000 and an empty list. Saved overrides remain effective. Development-era "instant" values automatically become "consent"; no automatic debit mode remains. "framework" explicitly uses the billing provider selected in Sky Base. Verify each issuing job's existing society account; internal payments need the configured banking integration to credit that account. Issuing an external invoice does not prove it was paid.
File Explorer and report access
The Fire tablet now opens File Explorer, with Incident Reports as a directory. The existing Fire job, duty and tablet-app restrictions apply; no new Fire permission ID is required. Review restrictions for fire_files and fire_reports if your server limits tablet apps by rank. Reports received from another job appear in Shared Documents and remain read-only. Save an owned incident report before using Print or Share. Share explicitly selects registered recipient jobs, and removing a recipient revokes its digital access. Existing per-report recipient lists are retained; old job-wide record-sharing rules no longer grant access. Check the recipients of existing reports rather than deleting or reimporting them. Selected civilians are linked by their verified character identity; older free-text names remain descriptive.
The Explorer itself needs no additional Fire configuration, item, asset or Creator import after installing the coordinated release and SQL. DOJ is optional: its documents appear only when the corresponding resource and authorized shares are available. Normal Fire reports, sharing and printing do not require DOJ.
For printing, complete the Jobs Base 1.45.0 printer and inventory update: register job_document with its supplied image in a metadata-capable inventory, retain or configure an accessible printer, and provide its configured paper. The printed item is a permanent copy of the saved report; revoking a digital share does not recall an already printed copy. Optional document images are configured in Jobs Base's Config.Printers.documentAppearance or the job's /jobconfig document-appearance extension, not in Fire's Config.Reports.
No Fire job lists, incident/reward settings or Config.Hose.vehicles fields change in this release. Keep existing pump panel, intake and outlet calibration. The oil-spill setting only enables spills, slipping and cleanup; automatic collision or wear triggers still require Sky Mechanic or another connected resource.
Optional performance diagnostics
The optional profiler is disabled by default. To make a support recording, put setr sky_profiler 1 in server.cfg before the Sky ensure lines and restart. Run profiler record 1000 in the server console, wait until profiler status reports completion, then run profiler saveJSON sky-release-profile.json. Share that file only when requested. Set setr sky_profiler 0 and restart to disable the extra information. This is not a /jobconfig setting and does not start recordings or upload data automatically.
Phase 4 of 5
SQL & items
SQL: The Fire report table needs a wider report ID and separate report/sharing revision counters. With Config.AutoExecuteQuery = true, allow the normal startup migration to finish. If automatic migration is disabled, run this non-destructive block from sky_firejob/import.sql against the existing database before starting Firejob:
ALTER TABLE `sky_fire_reports`
MODIFY `report_id` VARCHAR(40) NOT NULL,
ADD COLUMN IF NOT EXISTS `revision` INT NOT NULL DEFAULT 1,
ADD COLUMN IF NOT EXISTS `share_revision` INT NOT NULL DEFAULT 1;
The old report_id was VARCHAR(32); both revision columns are new. Existing reports and explicit recipients remain in place. Do not clear the table. Also complete the Jobs Base 1.45.0 migrations for shared and printed documents.
Items and assets: Fire adds no standalone item, image or stream file. Optional report printing uses the Jobs Base job_document item, supplied image, metadata-capable inventory, accessible printer and its paper supply. Invoice payment uses its own on-screen receipt and does not require the report-printing item. Keep existing Fire inventories and scenario data; no Fire Creator import is required.
Phase 5 of 5
Restart & test
Start database, framework and configured inventory/provider resources first, then Base 1.42.0, Jobs Base 1.45.0, Firejob 1.13.0 and the remaining updated jobs. Resolve startup/SQL errors before allowing normal play. Confirm Fire Explorer opens, Incident Reports retains existing records, and app restrictions still apply. Save and edit a report with two authorized users: a stale save should show a conflict while retaining the draft. Share a saved report with a second job, read it there, revoke access and check that the digital copy disappears. Print a report through an available printer and open the resulting item if printing is enabled. Test Cash, Card, decline and insufficient funds with two players, checking the society balance and Boss Menu payment entry; test the external provider separately if selected. Check scenario editing and fire-extinguisher pickup/restock after reconnecting.
Version 1.12.0
Update Base to 1.41.0 and Jobs Base to 1.44.0 before installing sky_firejob1.12.0.
Highlights
Added selectable flame and smoke styles to the fire menu and mission creator, including natural, colored and vehicle-fire variants.
Added growing menu fires with a configurable starting size and time to reach their full size.
Added directional fire sounds that follow the fire location, with configurable volume and audible distance.
Added live controls for flame size, smoke size, smoke opacity and smoke response to wind.
Notable Changes
Improved fire placement so flames and mission previews retain their selected contact point on the ground or a wall.
Fixed an issue where fire could spread without a verified surface or continue spreading away from a wall into open air.
Improved large-incident rendering with shared flame and smoke limits that leave room for firefighting water effects.
Optimized fire and hazard checks for scenes containing many or distant fires.
Added a configurable server-side Dispatch integration for individual fires and missions.
Changed the default vehicle-fire appearance to use the new vehicle flame style and removed bus shells from the random vehicle-wreck pool.
Other Changes
Improved smoke appearance with denser columns and wind behavior that follows the selected visual preset.
Fixed an issue where fire HUD panels could leave opaque rectangles around their warnings in FiveM.
Fixed an issue where reloading a packaged Fire tablet page could lose its route.
Added translations for the new fire-effect controls in all 15 supported languages, with English fallback for older untranslated Fire text.
Update InstructionsA guided update for server owners1.11.01.12.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.41.0 and Jobs Base to 1.44.0 before installing sky_firejob1.12.0. These instructions cover 1.11.0 → 1.12.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.12.0 download. Update every path in Changed Files, delete and reinsert sky_firejob/source/*, and replace sky_firejob/config/locales/* completely. Remove the exact paths under Removed Files and apply any listed renames. Preserve unrelated files, writable data and custom assets; merge the configuration changes in this tab into your customized public files.
Replace source/* and fxmanifest.lua from the same download even when optional diagnostics remain off. Profiler instrumentation is confined to Lua in source/ and the generated manifest. Public configuration, integration and compatibility files match the uninstrumented source; their functional changes are listed separately for this release. If an older profiler package modified public files, restore those once from the clean new package and reapply your own edits.
Phase 3 of 5
Merge config
Merge these changes into sky_firejob/config/config.lua. With /jobconfig, use Fire → Settings → Fire system; the exact stored keys are listed below. Saved overrides remain authoritative. Appearance controls do not change smoke-poisoning strength.
File path under Config.FireSystem
Previous value
New value
/jobconfig key
render.flameScaleMultiplier
Absent
1.0
fireFlameScaleMultiplier
render.smokeScaleMultiplier
Absent
1.0
fireSmokeScaleMultiplier
render.smokeDensityMultiplier
Absent
1.0
fireSmokeDensityMultiplier
render.smokeWindResponse
Absent
"normal"
fireSmokeWindResponse
ignition.startScale
Absent
0.2
fireIgnitionStartScale
ignition.growthSeconds
Absent
40.0
fireIgnitionGrowthSeconds
effects.sounds.fireAmbient.volume
1.0
0.65
fireSoundFireAmbientVolume
effects.sounds.fireAmbient.range
10.0
40.0
fireSoundFireAmbientRange
The ambient-sound switch remains enabled by default (fireSoundFireAmbientEnabled). Wind choices are none, gentle, normal and strong; the new choice applies to packaged smoke. Add the new ignition table and render values, and change the two sound values inside their existing parents:
The shared Fire defaults also add client-wide visual limits of 96 flame sources and 24 smoke sources, exposed as fireMaxFlameSources and fireMaxSmokeSources. File-based servers may override Config.FireSystem.render.maxFlameSources and Config.FireSystem.render.maxSmokeSources; otherwise the shared defaults supply them. These limit visible effects, not the number of saved incidents. Flame and smoke visibility distances remain 1000 m in the shipped file; the existing shared visibility setting controls both when /jobconfig is used.
The new sky_firejob/config/sv_functions.lua supplies the Dispatch hook. Install the complete file. Its default continues to send alerts through Jobs Base, so no external provider is required. Only customize Config.Functions.sendDispatch if forwarding alerts to another system; retain the documented success/failure result and handle that provider's alert cleanup. This Lua function remains file-based and is intentionally outside /jobconfig.
Choose flame and smoke variants in /skyfiremenu or in the mission creator. Existing saved missions keep their choices/default profiles; do not delete or reimport them to obtain the new selectors. Starting size and growth duration affect newly created menu fires. No job list, incident-reward setting or hose-vehicle geometry changes in this release.
Optional performance diagnostics
Extra profiler information remains disabled by default. 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 when requested by support. Set setr sky_profiler 0 and restart again to disable the extra information. This is not a /jobconfig setting; enabling it does not start a recording or upload data automatically.
Phase 4 of 5
SQL & items
No SQL migration or new inventory item is required. Install every new particle file listed in Changed Files and the complete source/* folder, which includes the fire audio and its attribution. Keep existing missions, hydrants, vehicle/hose setup and saved configurator values. Additional languages translate the new effect controls; older text without a translation uses English.
Phase 5 of 5
Restart & test
Restart the database, framework and any edited inventory first, then Base, Jobs Base and the installed job resources. Confirm 1.12.0 and resolve startup errors before admitting players. Create a small growing fire, select each flame/smoke style and verify ground and wall contact. Check directional sound at different distances, then adjust sound and smoke settings through /jobconfig. Test a large incident with water jets, smoke exposure and extinguishing. Edit and reload a saved mission to confirm its effect choices remain intact. If using a custom Dispatch provider, test both individual fires and missions.
Version 1.11.0
Update Base to 1.40.0 and Jobs Base to 1.43.0 before installing sky_firejob1.11.0.
Highlights
Fixed an issue where moving HUD elements could also move the player or camera.
Notable Changes
Optimized oil-spill contact checks to avoid unnecessary background work while retaining slip behavior.
Other Changes
Updated bundled Fire Job images with smaller files.
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.