[ESX,QBCORE,QBOX] Advanced Fire System(Fire Panel, Strobe Light, Pull Down, Inspections )
- Escrowed
- Lifetime Updates
- Discord Support
- Instant Delivery
π₯ MikeScript Fire β MS_Fire
A complete fire alarm and firefighter system for FiveM. Real Fire Alarm Control Panel, NFPA-style synced strobes, working sprinklers, firefighter inspection minigame, and a custom prop bundle. ESX Legacy, QBCore, Qbox, and ox_inventory are auto-detected β no manual switch.
Support Discord: https://discord.gg/nEzMzNUqnr
Why this script
Most fire scripts are a button you press to spawn a fire and a /silence command. This one ships an actual system β drawn zones with polygon boundaries, devices wired through panels, NFPA-compliant strobes audio-locked to a real LCD readout, sprinklers with timing that depends on whether a smoke detector is in the zone, weekly inspection cycles, expiration tracking on hardware, and a firefighter loop that means something.
If your server runs structured fire RP, this is the spine.
What you get
-
Custom 3D props bundled β fire panel, manual pull station, alarm/strobe (registered via
DLC_ITYP_REQUEST, swap to GTA defaults with one config line) -
Working FACP with arrow-pad navigation, F1βF4 function keys, 4-digit keypad password, and a green LCD that scrolls actual event logs
-
Sprinklers that matter β slow fire spread, extinguish burning peds, with realistic activation timing based on whether a smoke detector is wired
-
2 Hz NFPA-style strobes audio-locked to the alarm tone β strobes flash exactly when each beep plays, no drift over loops
-
Wire-connect inspection minigame for weekly device certification
-
In-game
/firesetupUI β draw zones, place devices, wire panels, no SQL editing -
Live dispatch with map blip and source readout to the firefighter job
-
Wall extinguisher lifecycle β take, spray, return; expired mounts need firefighter replacement before reuse
-
Inspection tracking β buildings sorted by urgency in
/firemenu, due dates surfaced -
Tablet animation when firefighters open the building overview
-
Hydrant inspections β world fire hydrants need weekly firefighter checks
-
Translation-ready β English and French ship by default, drop a file to add a language
How it actually works
Every device lives inside a drawn zone polygon. Zones live inside a building. A building has one panel that receives signals from any zone you wire to it.
Place a smoke detector in a zone β fire in that zone β detector trips β panel sounds the alarm and dispatches the firefighter job. Place a sprinkler too β it activates after a configurable delay, slows the spread, and stays on until the panel is reset or water is cut from the panel.
If a zone has no detector, it stays silent β but if it has a sprinkler, the sprinkler will eventually trip on heat, just slower (mirrors real heat-fuse residential systems, ~35 seconds vs. ~10 seconds with a detector).
The FACP keypad enforces a 4-digit code per panel, stored server-side. Passwords are stripped from broadcasts so other players can't sniff them. System Reset and Cut Water are gated by the code; only firefighters can use them.
Pull station to strobe to sprinkler chain
Pull a fire alarm β server validates distance, cooldown, and zone-is-wired β alarm activates β all clients in range get the synced strobe + audio β firefighter dispatch fires with the source baked in (Pull Station Z3 (by John Doe)). Sprinklers join after their delay. Firefighter arrives, opens the FACP with their 4-digit code, hits F2 Silence to mute the audible signal, kills the fire, then F3 Reset to clear the alarm state. Or F4 Reboot for a full panel self-test.
Multi-framework β auto-detected
| Framework | Detected via | Status |
| -------------------------------- | -------------- | --------------------------------------------- |
| ESX Legacy | es_extended | Supported |
| QBCore | qb-core | Supported |
| Qbox | qbx_core | Supported |
| ox_inventory (any of the above) | ox_inventory | Uses stock WEAPON_FIREEXTINGUISHER natively |
Override any of them in config.lua if you renamed a core. No code edits needed.
What's open vs. encrypted
| Open (editable) | Encrypted (protected) |
| -------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| config.lua β every toggle, job name, ammo count, beep timing | All server logic β alarm activation, fire spread, dispatch, password verification |
| locales/en.lua and fr.lua | All client logic β FACP NUI driver, fire effects, sprinkler logic, placement preview |
| sql/install.sql | Inspection minigame, zone polygon math, dispatch, hydrant tracking |
| shared/bridge.lua β framework adapter | Locale lookup |
| All html/* β NUI HTML/CSS/JS, audio, images | Server-side validation and rate limiting |
Commands
| Command | Permission | What it does |
| -------------- | ---------------------------------- | ---------------------------------------------------- |
| /firesetup | Admin or top-rank firefighter | Open the device-placement UI |
| /firemenu | Firefighter (or all, configurable) | Building overview with GPS and inspection due dates |
| /firewire | Admin | Wire zones to panels |
| /firestop | Admin | Emergency stop of fires (all to clear server-wide) |
| /firerefresh | Anyone | Re-sync devices from the server |
Dependencies
Required:
-
oxmysql -
ox_target -
One of:
es_extended,qb-core,qbx_core
Recommended:
-
ox_inventory(auto-detected β best weapon ammo persistence)
Built-in custom props
Three prop archetypes ship with the resource:
-
sensei_firepanelβ the FACP control panel -
sensei_firepulldownβ the manual pull station -
sensei_firealarmβ the strobe / alarm horn
Don't like them? Replace any model hash in config.lua with a vanilla GTA hash. No prop is hardcoded in encrypted code.
Performance
The script is built for busy servers.
- Granular sync events β per-device deltas on placement, move, status change instead of full re-broadcasts
-
Indexed device caches β strobe and sprinkler hot loops use
DevicesByZone/DevicesByBuildingindexes - Ammo-based extinguisher tracking β no wallclock timer wasting ticks
- Native fire scan early-exits when no building is within 200 m of the player
- Extinguisher tick idles at 2 s when the player isn't holding the weapon
Tested clean on 64-slot servers with 100+ placed devices.
Frequently asked
Does this work without ox_inventory? Yes. ESX legacy inventory and QB-Inventory are both supported through the bridge. ox_inventory is auto-detected and used preferentially when present.
Can civilians use it? Civilians can pull alarms and grab wall extinguishers. Inspection, panel access, and replacement are firefighter-job-locked. /firemenu is firefighter-only by default but configurable to public for evacuation map use.
What if I want different props? Drop your .ydr and .ytyp into stream/, register the .ytyp via data_file 'DLC_ITYP_REQUEST' in fxmanifest.lua, change one line in config.lua. Bundled props are removable.
Will it conflict with my existing fire scripts? No. Wall extinguishers issued by this script are tagged with an msfire_managed = true metadata flag. The script only manages extinguishers it issued; items from other resources are left alone.
Can I edit the panel UI? Yes. The entire html/ folder ships unencrypted. Rebrand colors, swap the audio, change the LCD font, redo the layout.
Does it ship encrypted? Yes, via Cfx Asset Escrow. Server logic, client logic, fire/panel/setup behavior, and the database layer are protected. Configuration, translations, the framework bridge, the entire NUI, and the SQL schema are open.
How do firefighters get the panel code? First firefighter at the panel sets it (4 digits). Once set, it can only be changed by entering the current code or by a server admin. Stored server-side; never broadcast.
Does it integrate with custom dispatch (CallsignSimple, ps-mdt, etc.)? The default dispatch uses simple map blips to the firefighter job. To integrate custom dispatch, edit the MSBridge.GetAllPlayers() consumer in the dispatch path β the bridge is open.
Tested with
- ESX Legacy 1.10.x
- QBCore latest
- Qbox latest
- ox_inventory 2.40+
- ox_target 1.4+
- oxmysql 2.7+
Support
- Discord: https://discord.gg/nEzMzNUqnr
- Tebex ticket: above
- Issues / feature requests: open a ticket or post in the Discord
Install in 5 minutes
- Drop
MS_Fire/into yourresources/folder - Add
ensure oxmysqlandensure ox_targetbeforeensure MS_Fireinserver.cfg - Run
sql/install.sql(auto-migrates on first start; the items snippet for ESX/QB inventories needs a manual paste) - Set your firefighter job names in
config.lua -
/firesetupin-game β draw a zone β place a panel + detector + pull station + sprinkler β wire the zone β you're live
Watch the script come alive
No edits, no marketing fluff β actual in-game footage of every system included.
Ready to upgrade your server?
39.99 USD • one-time
Secure checkout via Tebex • Instant delivery • Lifetime updates