> For the complete documentation index, see [llms.txt](https://devmosaic.gitbook.io/devmosaic/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://devmosaic.gitbook.io/devmosaic/resources/devmosaic-ox-inventory-rework-v2/utility-slots.md).

# Utility Slots

The utility panel adds 8 dedicated quick-access slots to every player's inventory. Each slot only accepts specific items and displays a unique SVG icon overlay. The panel is shown on the left side of

***

### Default Slot Assignment

| Slot | Label     | Accepted Items                                        |
| ---- | --------- | ----------------------------------------------------- |
| 1    | Vest      | `armour`, `heavyarmour`                               |
| 2    | Backpack  | `backpack_small`, `backpack_medium`, `backpack_large` |
| 3    | Phone     | `phone`                                               |
| 4    | Parachute | `parachute`                                           |
| 5    | Pocket    | `pocket`                                              |
| 6    | Tablet    | `tablet`                                              |
| 7    | Keys      | `keys`                                                |
| 8    | Radio     | `radio`                                               |

To change which items are accepted by a slot, edit `items[n]` in `data/utility.lua`.

***

### Armor System

Slot 1 accepts armor items. Two types are configured by default:

| Item          | Protection | Job Restriction               | Plates |
| ------------- | ---------- | ----------------------------- | ------ |
| `armour`      | 50         | None — any player             | 2      |
| `heavyarmour` | 100        | Restricted to configured jobs | 5      |

#### Repair

```lua
armorRepairItems = {
    armor_repair_kit = 20,
    armor_plates     = 20,
}
```

#### Adding a New Armor Type

```lua
armorItems = {
    tactical_vest = {
        value  = 75,
        jobs   = { 'swat' },   -- empty table = no restriction
        plates = 3,
    }
}
```

Add the new item name to `items[1]` so the vest slot accepts it, and define it in `data/items.lua`.

***

### Backpack System

Slot 2 accepts backpack items. Each backpack opens as a **separate inventory** with its own slot count and weight limit when equipped.

#### Default Backpacks

| Item              | Slots | Max Weight |
| ----------------- | ----- | ---------- |
| `backpack_small`  | 50    | 50,000g    |
| `backpack_medium` | 20    | 100,000g   |
| `backpack_large`  | 30    | 150,000g   |

#### Configuration

```lua
backpackItems = {
    backpack_small = {
        slots     = 50,
        weight    = 50000,
        blacklist = { 'backpack_small', 'backpack_medium', 'backpack_large' },
        component = { drawable = 40, texture = 0 },
    },
}
```

| Key         | Description                                                        |
| ----------- | ------------------------------------------------------------------ |
| `slots`     | Number of inventory slots inside the backpack                      |
| `weight`    | Maximum carry weight in grams                                      |
| `blacklist` | Items that cannot be placed inside (prevents backpack-in-backpack) |
| `component` | Ped component applied when the backpack is equipped                |

#### Visual Component

When `enableBackpackComponents = true`, equipping a backpack attaches the configured prop drawable to the player's Bag component.

Set to `false` to disable the visual entirely.

#### Lock on Removal

```lua
lockBackpackRemovalWithItems = true
```

Prevents removing the backpack while it still contains items. The player must empty it first.

***

### Changing Slot Count

Increase or decrease `slots` and update `items`, `labels` and `icons` to match:

```lua
slots = 6,
items = {
    [1] = { 'armour', 'heavyarmour' },
    [2] = { 'backpack_small', 'backpack_medium', 'backpack_large' },
    [3] = { 'phone' },
    [4] = { 'parachute' },
    [5] = { 'pocket' },
    [6] = { 'tablet' },
},
```

***

### Disabling Utility Slots

Set `enabled = false` in `data/utility.lua`. The panel will not render and no reserved slots will be created.
