Before updating, make sure sky_base and sky_jobs_base are up to date.
Current
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.