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 and bandage | 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
Every item oxide-ems looks for is ready to paste in itemimages/ox_inventory_items.lua in the resource folder. Copy the entries between its braces into ox_inventory/data/items.lua, above that file's final closing brace. Do not rename them.
The file also includes the three cure items oxide-medical needs (antacid, antibiotics, antiviral), since you should be installing both.
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 bandage, firstaid and ifaks 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 ifaks applies, which suppresses damage effects for up to three doses, one decaying per minute.
There is nothing to add, but check all four are actually in ox_inventory/data/items.lua. Trimmed or hand-written item lists drop them more often than you would expect, and a missing entry is silent: the item does nothing and no error appears anywhere.
painkillers belongs to oxide-medical, which uses it as the cure for fever. Only one resource can own a usable item, so oxide-ems leaves it alone whenever oxide-medical is installed — on Qbox that means painkillers cure fever instead of applying the qbx_medical damage-effect stack. ifaks still applies that stack either way.
Without oxide-medical installed, oxide-ems registers painkillers as stock did. To keep the stock behaviour with oxide-medical installed, set ClaimPainkillers = true under ['qbx'] in shared/config/compat.lua and restart — the fever cure stops working when you do.
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, firstaid (and painkillers without oxide-medical) | 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.