Requirements
✅ Mandatory
| Resource | Why |
|---|---|
| ox_lib | UI callbacks, minigames, notifications, points |
| oxmysql | Database access |
| A framework | Qbox (qbx_core), QBCore (qb-core) or ESX (es_extended) |
| An inventory | Any of the 8 supported inventories |
🎯 Strongly recommended
| Resource | Why |
|---|---|
| A target script | ox_target, qb-target or sleepless_interact. Without one, the script falls back to its own [E] prompts, everything still works, it just looks plainer. |
| A dispatch script | Distress calls go to your existing dispatch instead of built-in alerts. |
| screenshot-basic or screencapture | Only needed once, if you want Vehicle photos (/emsadmin → Tools) to photograph your garage vehicles. |
🎨 Optional
| Resource | Why |
|---|---|
| kartik-ambulancejob-props | Custom stretcher, casts, splints, collars, oxygen mask, body bag, TVs and patient monitors. Without it the script falls back to base-game props automatically. See Optional Props. |
⛔ Must be removed
Stop and remove any other death, medical or ambulance resource:
qbx_medicalqbx_ambulancejobqb-ambulancejobesx_ambulancejobwasabi_ambulance- any standalone "death screen" or "bleeding" script
Scripts that call the old resources keep working. A built-in compatibility layer answers qbx_medical, qb-ambulancejob and esx_ambulancejob exports and events, so your other scripts do not need changing. See Legacy Compatibility.
Leave Config.CheckConflicts = true. It prints a console warning if a conflicting medical resource is still running.