NullSect
Systems nominal

Docs / Ambulance Job / Installation

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) or qb-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

  1. Start the server. The console shows [ns-ambulancejob] ready (framework=qbox, inventory=ox, kits=ox, dispatch=builtin, ...).
  2. As admin: /deathpreview down, then /deathpreview off.
  3. /medkit bls, /medkit als, then /kill on 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).
  4. On duty: /ems opens the tablet. /emscallout gunshot posts 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:*, the qbx_medical:deathState / isDead state bags, or the isdead / inlaststand metadata keep working (Config.Features.QbxMedicalCompat).

Cart

Your cart is empty.