> For the complete documentation index, see [llms.txt](https://docs.otherplanet.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.otherplanet.dev/scripts/op-ambulance-job/create-items.md).

# Create Items

{% hint style="warning" %}
If your inventory is not on this list, create the same item names using your inventory format.
{% endhint %}

{% hint style="info" %}
Item icons ship with the package - check `[itemsicons]` / `web/items`.
{% endhint %}

#### Treatment

| Item           | Purpose                                     |
| -------------- | ------------------------------------------- |
| `bandage`      | Self-stop bleeding. EMS: blunt / burn dress |
| `quickclot`    | Heavy bleed / GSW (use first when bleeding) |
| `suturekit`    | Close deep wounds                           |
| `tourniquet`   | Limb bleed                                  |
| `splint`       | Fracture                                    |
| `saline`       | Stabilize after bleed control               |
| `bagvalvemask` | CPR after stabilize                         |

#### Civilian

| Item          | Purpose                                           |
| ------------- | ------------------------------------------------- |
| `medkit`      | Full health + stop bleeding (not GSW / fractures) |
| `painkillers` | Temporary limp relief                             |

#### Equipment

| Item             | Purpose                                         |
| ---------------- | ----------------------------------------------- |
| `ems_gps`        | Toggle unit GPS blips                           |
| `ems_stretcher`  | Place stretcher (needs `op-ambulancejob-props`) |
| `ems_wheelchair` | Place wheelchair                                |
| `medbag_small`   | Small med bag - 8 slots / 10kg                  |
| `medbag_big`     | Big med bag - 16 slots / 25kg                   |

#### CK / documents

| Item                    | Purpose                                             |
| ----------------------- | --------------------------------------------------- |
| `body_bag_empty`        | Required to collect a CK corpse                     |
| `body_bag`              | Filled bag with corpse metadata - use to place back |
| `dna_sample`            | Unanalyzed swab (`metadata.dna`)                    |
| `dna_print_data`        | Analyzed profile for hospital printer               |
| `death_certificate`     | Printed death certificate                           |
| `incident_report`       | Printed incident report                             |
| `call_report`           | Printed call report                                 |
| `insurance_certificate` | Printed insurance proof                             |

#### Placeables

Defined in `config/PlaceablesConfig.lua` (example: `ems_cone`, `ems_barrier`, `ems_medbag_prop`). Create matching inventory items if you enable them.

***

{% tabs %}
{% tab title="ox\_inventory" %}
Paste into `ox_inventory/data/items.lua`.

Also merge the containers block into `ox_inventory/data/containers.lua` (do not replace the whole file).

```lua
['medkit'] = {
    label = 'Medkit',
    weight = 800,
    stack = true,
    close = true,
    description = 'Restore full health and stop bleeding. Does not treat gunshots or fractures.',
    server = { export = 'op-ambulancejob.useMedkit' },
    client = { export = 'op-ambulancejob.useMedkit' },
},

['painkillers'] = {
    label = 'Painkillers',
    weight = 80,
    stack = true,
    close = true,
    description = 'Temporarily stop limping. Does not heal fractures.',
    server = { export = 'op-ambulancejob.usePainkillers' },
    client = { export = 'op-ambulancejob.usePainkillers' },
},

['bandage'] = {
    label = 'Bandage',
    weight = 100,
    stack = true,
    close = true,
    description = 'Stop your own bleeding, or dress bruises/burns (EMS).',
    server = { export = 'op-ambulancejob.useBandage' },
    client = { export = 'op-ambulancejob.useBandage' },
},

['quickclot'] = {
    label = 'QuickClot',
    weight = 120,
    stack = true,
    close = true,
    description = 'Stop heavy bleeding / gunshot hemorrhage.',
},

['tourniquet'] = {
    label = 'Tourniquet',
    weight = 180,
    stack = true,
    close = true,
    description = 'Catastrophic limb bleeding.',
},

['suturekit'] = {
    label = 'Suture Kit',
    weight = 250,
    stack = true,
    close = true,
    description = 'Close deep cuts and entry wounds before bandaging.',
},

['splint'] = {
    label = 'Splint',
    weight = 400,
    stack = true,
    close = true,
    description = 'Stabilize fractured limbs.',
},

['saline'] = {
    label = 'Saline Solution',
    weight = 300,
    stack = true,
    close = true,
    description = 'Stabilize after bleeding control.',
},

['bagvalvemask'] = {
    label = 'Bag Valve Mask',
    weight = 600,
    stack = true,
    close = true,
    description = 'CPR after stabilize.',
},

['ems_gps'] = {
    label = 'EMS GPS',
    weight = 200,
    stack = false,
    close = true,
    description = 'Toggle unit GPS - other medics with GPS on see you on the map.',
    server = { export = 'op-ambulancejob.useEmsGps' },
},

['ems_stretcher'] = {
    label = 'EMS Stretcher',
    weight = 5000,
    stack = false,
    close = true,
    description = 'Place a stretcher - push, lower/fold, load patients into an ambulance.',
    server = { export = 'op-ambulancejob.useEmsStretcher' },
    client = { export = 'op-ambulancejob.useEmsStretcher' },
},

['ems_wheelchair'] = {
    label = 'Wheelchair',
    weight = 8000,
    stack = false,
    close = true,
    description = 'Place a wheelchair. Sit to ride, pick up to put it back in inventory.',
    server = { export = 'op-ambulancejob.useEmsWheelchair' },
},

['body_bag_empty'] = {
    label = 'Empty Body Bag',
    weight = 1500,
    stack = true,
    close = true,
    description = 'Unused body bag. Required to collect a corpse.',
},

['body_bag'] = {
    label = 'Body Bag',
    weight = 5000,
    stack = false,
    close = true,
    description = 'Contains collected remains. Use to place the body back in the world.',
    server = { export = 'op-ambulancejob.useBodyBag' },
},

['dna_sample'] = {
    label = 'DNA Sample',
    weight = 40,
    stack = false,
    close = true,
    description = 'Unanalyzed biological sample.',
},

['dna_print_data'] = {
    label = 'DNA Data to print',
    weight = 10,
    stack = false,
    close = true,
    description = 'Analyzed DNA profile. Use a hospital printer later.',
},

['death_certificate'] = {
    label = 'Death Certificate',
    weight = 20,
    stack = false,
    close = true,
    consume = 0,
    description = 'Official death certificate. Use to read the document.',
    server = { export = 'op-ambulancejob.useDeathCertificate' },
},

['incident_report'] = {
    label = 'Incident Report',
    weight = 20,
    stack = false,
    close = true,
    consume = 0,
    description = 'Printed hospital incident report. Use to read the document.',
    server = { export = 'op-ambulancejob.useHospitalDocument' },
},

['call_report'] = {
    label = 'Call Report',
    weight = 20,
    stack = false,
    close = true,
    consume = 0,
    description = 'Printed hospital call report. Use to read the document.',
    server = { export = 'op-ambulancejob.useHospitalDocument' },
},

['insurance_certificate'] = {
    label = 'Insurance Certificate',
    weight = 20,
    stack = false,
    close = true,
    consume = 0,
    description = 'Printed proof of hospital insurance. Use to read the document.',
    server = { export = 'op-ambulancejob.useHospitalDocument' },
},

['medbag_small'] = {
    label = 'Small Med Bag',
    weight = 1500,
    stack = false,
    close = false,
    description = 'Compact EMS bag. 8 slots / 10kg.',
},

['medbag_big'] = {
    label = 'Big Med Bag',
    weight = 3500,
    stack = false,
    close = false,
    description = 'Large EMS bag. 16 slots / 25kg.',
},
```

`ox_inventory/data/containers.lua`:

```lua
['medbag_small'] = {
    slots = 8,
    maxWeight = 10000,
},

['medbag_big'] = {
    slots = 16,
    maxWeight = 25000,
},
```

{% endtab %}

{% tab title="qb-core / qbox" %}
Paste into `qb-core/shared/items.lua` (or your Qbox shared items).

```lua
medkit = {
    name = 'medkit',
    label = 'Medkit',
    weight = 800,
    type = 'item',
    image = 'medkit.png',
    unique = false,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Restore full health and stop bleeding. Does not treat gunshots or fractures.',
},
painkillers = {
    name = 'painkillers',
    label = 'Painkillers',
    weight = 80,
    type = 'item',
    image = 'painkillers.png',
    unique = false,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Temporarily stop limping. Does not heal fractures.',
},
bandage = {
    name = 'bandage',
    label = 'Bandage',
    weight = 100,
    type = 'item',
    image = 'bandage.png',
    unique = false,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Stop your own bleeding, or dress bruises/burns (EMS).',
},
quickclot = {
    name = 'quickclot',
    label = 'QuickClot',
    weight = 120,
    type = 'item',
    image = 'quickclot.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Stop heavy bleeding / gunshot hemorrhage.',
},
tourniquet = {
    name = 'tourniquet',
    label = 'Tourniquet',
    weight = 180,
    type = 'item',
    image = 'tourniquet.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Catastrophic limb bleeding.',
},
suturekit = {
    name = 'suturekit',
    label = 'Suture Kit',
    weight = 250,
    type = 'item',
    image = 'suturekit.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Close deep cuts and entry wounds.',
},
splint = {
    name = 'splint',
    label = 'Splint',
    weight = 400,
    type = 'item',
    image = 'splint.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Stabilize fractured limbs.',
},
saline = {
    name = 'saline',
    label = 'Saline Solution',
    weight = 300,
    type = 'item',
    image = 'saline.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Stabilize after bleeding control.',
},
bagvalvemask = {
    name = 'bagvalvemask',
    label = 'Bag Valve Mask',
    weight = 600,
    type = 'item',
    image = 'bagvalvemask.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'CPR after stabilize.',
},
ems_gps = {
    name = 'ems_gps',
    label = 'EMS GPS',
    weight = 200,
    type = 'item',
    image = 'ems_gps.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Toggle unit GPS - other medics with GPS on see you on the map.',
},
ems_stretcher = {
    name = 'ems_stretcher',
    label = 'EMS Stretcher',
    weight = 5000,
    type = 'item',
    image = 'ems_stretcher.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Place a stretcher - push, lower/fold, load patients into an ambulance.',
},
ems_wheelchair = {
    name = 'ems_wheelchair',
    label = 'Wheelchair',
    weight = 8000,
    type = 'item',
    image = 'ems_wheelchair.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Place a wheelchair. Sit to ride, pick up to put it back in inventory.',
},
body_bag_empty = {
    name = 'body_bag_empty',
    label = 'Empty Body Bag',
    weight = 1500,
    type = 'item',
    image = 'body_bag_empty.png',
    unique = false,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Unused body bag. Required to collect a corpse.',
},
body_bag = {
    name = 'body_bag',
    label = 'Body Bag',
    weight = 5000,
    type = 'item',
    image = 'body_bag.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Contains a collected CK corpse. Use to place the body back in the world.',
},
dna_sample = {
    name = 'dna_sample',
    label = 'DNA Sample',
    weight = 40,
    type = 'item',
    image = 'dna_sample.png',
    unique = true,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Unanalyzed biological sample.',
},
dna_print_data = {
    name = 'dna_print_data',
    label = 'DNA Data to print',
    weight = 10,
    type = 'item',
    image = 'dna_print_data.png',
    unique = true,
    useable = false,
    shouldClose = true,
    combinable = nil,
    description = 'Analyzed DNA profile. Use a hospital printer later.',
},
death_certificate = {
    name = 'death_certificate',
    label = 'Death Certificate',
    weight = 20,
    type = 'item',
    image = 'death_certificate.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Official death certificate. Use to read the document.',
},
incident_report = {
    name = 'incident_report',
    label = 'Incident Report',
    weight = 20,
    type = 'item',
    image = 'incident_report.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Printed hospital incident report. Use to read the document.',
},
call_report = {
    name = 'call_report',
    label = 'Call Report',
    weight = 20,
    type = 'item',
    image = 'call_report.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Printed hospital call report. Use to read the document.',
},
insurance_certificate = {
    name = 'insurance_certificate',
    label = 'Insurance Certificate',
    weight = 20,
    type = 'item',
    image = 'insurance_certificate.png',
    unique = true,
    useable = true,
    shouldClose = true,
    combinable = nil,
    description = 'Printed proof of hospital insurance. Use to read the document.',
},
medbag_small = {
    name = 'medbag_small',
    label = 'Small Med Bag',
    weight = 1500,
    type = 'item',
    image = 'medbag_small.png',
    unique = true,
    useable = true,
    shouldClose = false,
    combinable = nil,
    description = 'Compact EMS bag. 8 slots / 10kg.',
},
medbag_big = {
    name = 'medbag_big',
    label = 'Big Med Bag',
    weight = 3500,
    type = 'item',
    image = 'medbag_big.png',
    unique = true,
    useable = true,
    shouldClose = false,
    combinable = nil,
    description = 'Large EMS bag. 16 slots / 25kg.',
},
```

{% endtab %}

{% tab title="ESX" %}
Run against your database, or insert items manually with the same names.

```sql
INSERT INTO `items` (`name`, `label`, `weight`) VALUES
    ('medkit', 'Medkit', 8),
    ('painkillers', 'Painkillers', 1),
    ('bandage', 'Bandage', 1),
    ('quickclot', 'QuickClot', 1),
    ('tourniquet', 'Tourniquet', 2),
    ('suturekit', 'Suture Kit', 2),
    ('splint', 'Splint', 3),
    ('saline', 'Saline Solution', 2),
    ('bagvalvemask', 'Bag Valve Mask', 4),
    ('ems_gps', 'EMS GPS', 1),
    ('ems_stretcher', 'EMS Stretcher', 5),
    ('ems_wheelchair', 'Wheelchair', 8),
    ('body_bag_empty', 'Empty Body Bag', 2),
    ('body_bag', 'Body Bag', 5),
    ('dna_sample', 'DNA Sample', 1),
    ('dna_print_data', 'DNA Data to print', 1),
    ('death_certificate', 'Death Certificate', 1),
    ('incident_report', 'Incident Report', 1),
    ('call_report', 'Call Report', 1),
    ('insurance_certificate', 'Insurance Certificate', 1),
    ('medbag_small', 'Small Med Bag', 2),
    ('medbag_big', 'Big Med Bag', 4)
ON DUPLICATE KEY UPDATE `label` = VALUES(`label`);
```

Usable items are registered by the resource via `Fr.RegisterUsableItem`.
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Stretcher and wheelchair models require `op-ambulancejob-props` started before `op-ambulancejob`.
{% endhint %}
