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:

server.cfg
# ensure qbx_ambulancejob

If 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_ambulancejob

Do 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_medicalOwned by oxide-ems
The laststand phase and its bleedout timerThe downed screen overlay
The dead phase and the respawn holdThe hospital respawn teleport and cutscene
Injuries, bleeding and the damage effects behind ifaks / bandage / painkillersEverything 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

SurfaceWho uses it
qbx_medical:server:playerRespawnedThe hospital respawn teleport that qbx_ambulancejob used to provide
hospital:server:emergencyAlertqbx_radialmenu's dead-radial EMS button
hospital:server:ambulanceAlertPolice resources relaying "officer down"
hospital:client:CheckStatus / TreatWounds / RevivePlayerqbx_radialmenu EMS options
Usable items ifaks, bandage, painkillers, firstaidPlayers

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

Server starts with no dependency errors, and the console logs the detected death mode as qbx.
Confirm 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.
Go down. Confirm qbx_medical's laststand behaves normally, the oxide-ems downed overlay appears over it, and G sends a distress signal.
Respawn and confirm you are teleported to the hospital respawn point behind a fade, not left where you fell.
Open qbx_radialmenu while downed and confirm the EMS alert button still works.
Use ifaks and confirm the painkiller effect still applies.
Use a medical_bag and confirm the supplies arrive.