Installation — ns-ambulancejob
1. Requirements
oxmysql,ox_lib(menus, notifications; recommended)- A target resource:
ox_target(or ns-target),qb-target, or neither (built-in prompts +/patient) - Qbox (
qbx_core), QBCore or ESX ox_inventory(Qbox / ESX) orqb-inventory(QBCore) for the bag supplies. Without metadata support the bags have unlimited supplies.- The ambulance stretcher model comes with the resource (
stream/) and works on every game build.
2. Remove the old medical resources
ns-ambulancejob replaces qbx_medical and qbx_ambulancejob (and ns-deathscreen: the same death screen is
built in). Two resources must never own death at the same time: while qbx_medical or qbx_ambulancejob is
running, ns-ambulancejob stays off and says so in the console; it starts by itself as soon as they are stopped.
If you start whole folders (ensure [qbx]), add stop lines after them:
ensure [qbx]
stop qbx_medical
stop qbx_ambulancejob
ensure [nullsect]
stop ns-deathscreen
Otherwise delete their ensure lines and add ensure ns-ambulancejob after your framework, inventory and target.
On Qbox, set enableHealthInitialization = true in qbx_core/config/server.lua (it is the default). qbx_core then
restores health on spawn when qbx_medical is gone.
3. Permissions
add_ace group.admin ns-ambulancejob.admin allow
Optional Discord log (Config.Features.Logs = true):
set ns_ambulancejob_webhook "https://discord.com/api/webhooks/..."
4. Items (the two bags)
ox_inventory (ox_inventory/data/items.lua):
['bls_kit'] = { label = 'BLS Bag', weight = 3500, stack = false, close = true, description = 'Basic life support bag' },
['als_kit'] = { label = 'ALS Bag', weight = 4500, stack = false, close = true, description = 'Advanced life support bag' },
qb-core (qb-core/shared/items.lua):
bls_kit = { name = 'bls_kit', label = 'BLS Bag', weight = 3500, type = 'item', image = 'bls_kit.png', unique = true, useable = false, shouldClose = true, description = 'Basic life support bag' },
als_kit = { name = 'als_kit', label = 'ALS Bag', weight = 4500, type = 'item', image = 'als_kit.png', unique = true, useable = false, shouldClose = true, description = 'Advanced life support bag' },
Item images are in install/images/ (bls_kit.png, als_kit.png): copy them to your inventory's image folder.
Using a bag item puts it on the ground (registered through the framework's usable items). If your inventory does
not call framework usable items, /dropbag bls|als does the same.
First aid items (0.7): bandage, ifaks, painkillers and firstaid are the items Qbox already ships in
ox_inventory/data/items.lua; ns-ambulancejob makes them usable (Config.FirstAid). Nothing to add unless your
server renamed them.
5. Database
Tables are created automatically on first start (Config.Database.autoMigrate = true). To create them by hand,
import sql/ns-ambulancejob.sql.
6. Job
The job name is ambulance (Qbox / QBCore default). Grade 0 can use the BLS bag. The ALS bag needs grade 1 or
higher (Config.Kits.als.jobs). The helicopter needs grade 2 (Config.Vehicles.air).
The tablet's Management tab is for the job's boss grades (the framework's isboss flag), or set
Config.Boss.grade. On Qbox hiring, grade changes and firing also work for offline staff; on QBCore / ESX only for
staff who are online.
6b. Locations (0.5)
The hospitals, job points and NPC call-out spots in config.lua are only the defaults. Move them in game with
/emseditor (admin): stand on the spot (or look at the mattress for a bed), E saves, Backspace cancels. Changes are
kept in the ns_ambulancejob_sites table and take effect at once; "Back to config.lua" drops them. Upgrading from
0.4: job points now have an id (pillbox, paleto); a point without one gets point1, point2, ...
Hospital MLO (0.8): if you run one of the supported hospital maps, set its preset, e.g.
Config.Presets = { 'gabz_hospital' } (names in config.lua). Sites you already moved in the editor keep your
points: reset them there to take the preset's. The preset has no EMS stash point: place one with /emseditor.
7. Check
- Start the server. The console shows
[ns-ambulancejob] ready (framework=qbox, inventory=ox, kits=ox, dispatch=builtin, ...). - As admin:
/deathpreview down, then/deathpreview off. /medkit bls,/medkit als, then/killon a second player and work the arrest (CPR, AED / monitor). Alone:/emspractice trauma(wounds, skill games),/emspractice arrest(CPR, AED / monitor, ROSC),/emspractice cardiac(VT with a pulse: SYNC cardioversion) and/emspractice chest(listen, needle decompression).- On duty:
/emsopens the tablet./emscallout gunshotposts a test call in front of you: accept it on the board, treat the patient, load him into the ambulance ("Load into ambulance" on the patient) and drive to a hospital ("Hand over patient" at the vehicle). Then write the PCR report on the tablet.
Notes
qbx_radialmenu's EMS entries keep working: check status / revive / treat open the care view on the nearest player, the emergency button sends a panic alert to police and EMS.- Other resources that read
exports.qbx_medical:*, theqbx_medical:deathState/isDeadstate bags, or theisdead/inlaststandmetadata keep working (Config.Features.QbxMedicalCompat).