QBX Installation
Install oxide-ems on Qbox — ox_inventory items, disabling qbx_ambulancejob while keeping qbx_medical, and the Qbox shim.
Qbox (qbx_core) specific steps for oxide-ems. Follow Installation first — this page only covers what differs on Qbox.
Disable qbx_ambulancejob — but keep qbx_medical
This is the one thing Qbox does differently from QBCore and ESX.
Qbox splits the ambulance job in two: qbx_medical owns the downed and dead state, and qbx_ambulancejob was the job on top of it. oxide-ems replaces only the job.
Remove qbx_ambulancejob:
If you start resources one by one, remove or comment out the line:
# ensure qbx_ambulancejobIf you start a whole folder (ensure [qbx]), the resource starts because it is inside that folder, so removing a line is not enough. Move the folder out:
resources/[qbx]/qbx_ambulancejob -> resources/[disabled]/qbx_ambulancejobDo not add ensure [disabled] to your config. Anything in there stays off.
Leave qbx_medical exactly where it is and running. oxide-ems detects it, defers the death lifecycle to it, and layers on top. Removing it will break the downed state on your server.
What oxide-ems does and does not run on Qbox
Owned by qbx_medical | Owned by oxide-ems |
|---|---|
| The laststand phase and its bleedout timer | The downed screen overlay |
| The dead phase and the respawn hold | The hospital respawn teleport and cutscene |
Injuries, bleeding and the damage effects behind ifaks / bandage / painkillers | Everything else — departments, duty, beds, surgery, x-ray, fleet, dispatch |
Because qbx_medical owns the timers, the Laststand time, Respawn available after, Respawn hold time and Respawn control ID settings under Field Care → Downed have no effect on Qbox. Change those in qbx_medical's own config.
Lose items on respawn does apply on Qbox — that one is enforced by oxide-ems on every framework.
Without qbx_ambulancejob, nothing would teleport a respawning player to a hospital — they would simply get up where they fell. oxide-ems takes that job over: on respawn it revives through qbx_medical, charges the check-in fee if you have one set, and runs the fade-out teleport to the nearest hospital respawn point you placed.
Place at least one hospital respawn point. Without one, players respawn where they died and a warning is logged once.
Register the items
Open ox_inventory/data/items.lua and paste these into the list. These are the exact names oxide-ems looks for — do not rename them:
-- Oxide EMS
['medical_bag'] = { label = 'Medical Bag', weight = 3000, stack = false, close = true, description = 'A packed EMS bag. Use it to unpack the supplies inside.' },
['medical_bandage'] = { label = 'Medical Bandage', weight = 100, stack = true, close = true, description = 'A sterile bandage used to stop bleeding.' },
['medical_splint'] = { label = 'Splint', weight = 300, stack = true, close = true, description = 'A rigid splint used to set fractures.' },
['medical_surgical_kit'] = { label = 'Surgical Kit', weight = 1500, stack = true, close = true, description = 'A sterile kit required for surgical procedures.' },oxide-medical needs three cure items as well. If you are installing both (and you should be), add these too:
-- Oxide Medical
['antacid'] = { label = 'Antacid', weight = 100, stack = true, close = true, description = 'Relieves nausea and stomach sickness.' },
['antibiotics'] = { label = 'Antibiotics', weight = 100, stack = true, close = true, description = 'Treats bacterial infections.' },
['antiviral'] = { label = 'Antiviral', weight = 100, stack = true, close = true, description = 'Treats viral infections.' },Weights, labels and descriptions are sensible defaults — change them to taste. The item names must stay as written. Restart ox_inventory (or the server) after saving.
Items you already have
ox_inventory ships bandage, painkillers, firstaid and ifaks. oxide-ems re-registers all four as usable items, driving qbx_medical's own effect exports so they behave exactly as they did under qbx_ambulancejob — including the stacking painkiller effect that suppresses damage effects for up to three doses, one decaying per minute.
firstaid is also the default item medics need to revive and stabilize. Change it under Field Care in /ems settings, or enter none there to require no item at all.
Nothing else is missing
Every item in the medical bag's default contents is either registered in the step above or already stock in ox_inventory. The bag also hands over one firstaid — it works out your framework's first-aid item automatically, so there is no extra item to register.
Copy the images
Copy every .png from oxide-ems/itemimages/ into:
ox_inventory/web/images/Set up the EMS job
The department's internal name in /ems admin must match a job in qbx_core/shared/jobs.lua. Stock Qbox ships an ambulance job, so naming the department ambulance needs no change.
Qbox job names are lowercase. Use lowercase for the department's internal name.
If you name the department something else, add a matching job to qbx_core/shared/jobs.lua first, so other Qbox resources recognise it.
Restart the whole server
Not restart oxide-ems. The stretcher prop is streamed and needs a full server start to register. See Installation — Restart the whole server.
What the Qbox shim keeps working
| Surface | Who uses it |
|---|---|
qbx_medical:server:playerRespawned | The hospital respawn teleport that qbx_ambulancejob used to provide |
hospital:server:emergencyAlert | qbx_radialmenu's dead-radial EMS button |
hospital:server:ambulanceAlert | Police resources relaying "officer down" |
hospital:client:CheckStatus / TreatWounds / RevivePlayer | qbx_radialmenu EMS options |
Usable items ifaks, bandage, painkillers, firstaid | Players |
One deliberate improvement over stock: medical items are consumed only when the action finishes, not the moment they are used. Cancelling a bandage no longer eats the bandage.
Known Qbox limitations
Two things behave slightly differently on Qbox, both because qbx_medical owns the death state:
Critical detection needs oxide-medical. qbx_medical does not report what put a player down, so the weapon-based fallback that classifies critical patients cannot work on Qbox. With oxide-medical running — the normal install — severity is read from the medical record and this is a non-issue. Without it, critical detection is off and a warning is logged once.
The stretcher pose can flicker. qbx_medical runs its own animation loop on downed players, and it can briefly fight the lying pose while a patient is on the stretcher.
Verification on Qbox
qbx.qbx_medical is still running and qbx_ambulancejob is not./ems admin opens; create a department named ambulance with grades and a hospital, including a respawn point.qbx_medical's laststand behaves normally, the oxide-ems downed overlay appears over it, and G sends a distress signal.qbx_radialmenu while downed and confirm the EMS alert button still works.ifaks and confirm the painkiller effect still applies.medical_bag and confirm the supplies arrive.