The suite uses a handful of inventory items. None of them are created for you — add them to your inventory's item list, with an image, before players need them. Everything else (handcuffs, spike strips, cones, the radio) needs no item at all.
Item | Used by | What it does | Needed? |
|---|---|---|---|
| Police Creator | Using it opens the MDT tablet. | Only if |
| Police Creator | Repairs a broken CCTV camera within 5 m. One is used per repair. | For camera repairs. |
| Police Creator | Feeds the K9 and restores its health. | For the K9 unit. |
| Evidence | Consumed to collect any piece of evidence or a DNA sample. | Required for evidence. |
| Evidence | The bag you get back, carrying what was found: type, street, calibre, serial, DNA, shoe size. | Required for evidence. Must be unique (it carries metadata). |
| Evidence | Anyone can wipe a crime scene within 30 m in 30 seconds. | Optional. |
| Evidence | On-duty police clear a scene within 30 m in 5 seconds. | Optional. |
The names of the first three can be changed: cad with Config.CAD.ItemName, camera_repair_kit with Config.CameraRepair.Item, and the dog food in game under Admin → K9 Unit → The dog.
Item Definitions#
Pick your inventory and paste the block into its item list. Labels, weights and descriptions are yours to change; keep the names.
ox_inventory/data/items.lua — images go in ox_inventory/web/images/ named after the item.
['cad'] = {
label = 'Police Tablet',
weight = 500,
stack = false,
close = true,
description = 'Mobile data terminal for law enforcement.',
},
['camera_repair_kit'] = {
label = 'Camera Repair Kit',
weight = 1000,
stack = true,
close = true,
description = 'Tools to repair damaged security cameras.',
},
['dogfood'] = {
label = 'Dog Food',
weight = 200,
stack = true,
close = true,
description = 'Food for the K9 unit.',
},
['empty_evidence_bag'] = {
label = 'Empty Evidence Bag',
weight = 0,
stack = true,
close = false,
description = 'Used to keep blood, casings and other evidence.',
},
['filled_evidence_bag'] = {
label = 'Evidence Bag',
weight = 200,
stack = false,
close = false,
description = 'A filled evidence bag.',
},
['rag'] = {
label = 'Rag',
weight = 100,
stack = true,
close = true,
description = 'A dirty rag.',
},
['evidence_cleaner_kit'] = {
label = 'Evidence Cleaner Kit',
weight = 500,
stack = true,
close = true,
description = 'Kit to clean a crime scene.',
},qb-core/shared/items.lua — images go in qb-inventory/html/images/. Qbox servers running ox_inventory use the ox_inventory tab.
cad = { name = 'cad', label = 'Police Tablet', weight = 500, type = 'item', image = 'cad.png', unique = true, useable = true, shouldClose = true, description = 'Mobile data terminal for law enforcement.' },
camera_repair_kit = { name = 'camera_repair_kit', label = 'Camera Repair Kit', weight = 1000, type = 'item', image = 'camera_repair_kit.png', unique = false, useable = true, shouldClose = true, description = 'Tools to repair damaged security cameras.' },
dogfood = { name = 'dogfood', label = 'Dog Food', weight = 200, type = 'item', image = 'dogfood.png', unique = false, useable = false, shouldClose = true, description = 'Food for the K9 unit.' },
empty_evidence_bag = { name = 'empty_evidence_bag', label = 'Empty Evidence Bag', weight = 0, type = 'item', image = 'evidence.png', unique = false, useable = false, shouldClose = false, description = 'Used to keep blood, casings and other evidence.' },
filled_evidence_bag = { name = 'filled_evidence_bag', label = 'Evidence Bag', weight = 200, type = 'item', image = 'evidence.png', unique = true, useable = false, shouldClose = false, description = 'A filled evidence bag.' },
rag = { name = 'rag', label = 'Rag', weight = 100, type = 'item', image = 'rag.png', unique = false, useable = true, shouldClose = true, description = 'A dirty rag.' },
evidence_cleaner_kit = { name = 'evidence_cleaner_kit', label = 'Evidence Cleaner Kit', weight = 500, type = 'item', image = 'evidence_cleaner_kit.png', unique = false, useable = true, shouldClose = true, description = 'Kit to clean a crime scene.' },qs-inventory/shared/items.lua (or the same file in qs-advanced-inventory) — images go in its images folder.
['cad'] = {
['name'] = 'cad', ['label'] = 'Police Tablet', ['weight'] = 500, ['type'] = 'item',
['image'] = 'cad.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true,
['description'] = 'Mobile data terminal for law enforcement.'
},
['camera_repair_kit'] = {
['name'] = 'camera_repair_kit', ['label'] = 'Camera Repair Kit', ['weight'] = 1000, ['type'] = 'item',
['image'] = 'camera_repair_kit.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true,
['description'] = 'Tools to repair damaged security cameras.'
},
['dogfood'] = {
['name'] = 'dogfood', ['label'] = 'Dog Food', ['weight'] = 200, ['type'] = 'item',
['image'] = 'dogfood.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = true,
['description'] = 'Food for the K9 unit.'
},
['empty_evidence_bag'] = {
['name'] = 'empty_evidence_bag', ['label'] = 'Empty Evidence Bag', ['weight'] = 0, ['type'] = 'item',
['image'] = 'evidence.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false,
['description'] = 'Used to keep blood, casings and other evidence.'
},
['filled_evidence_bag'] = {
['name'] = 'filled_evidence_bag', ['label'] = 'Evidence Bag', ['weight'] = 200, ['type'] = 'item',
['image'] = 'evidence.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false,
['description'] = 'A filled evidence bag.'
},
['rag'] = {
['name'] = 'rag', ['label'] = 'Rag', ['weight'] = 100, ['type'] = 'item',
['image'] = 'rag.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true,
['description'] = 'A dirty rag.'
},
['evidence_cleaner_kit'] = {
['name'] = 'evidence_cleaner_kit', ['label'] = 'Evidence Cleaner Kit', ['weight'] = 500, ['type'] = 'item',
['image'] = 'evidence_cleaner_kit.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true,
['description'] = 'Kit to clean a crime scene.'
},For ESX servers using the default inventory, run this once in your database. ESX servers on ox_inventory use the ox_inventory tab instead.
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('cad', 'Police Tablet', 1, 0, 1),
('camera_repair_kit', 'Camera Repair Kit', 1, 0, 1),
('dogfood', 'Dog Food', 1, 0, 1),
('empty_evidence_bag', 'Empty Evidence Bag', 0, 0, 1),
('filled_evidence_bag', 'Evidence Bag', 1, 0, 1),
('rag', 'Rag', 1, 0, 1),
('evidence_cleaner_kit', 'Evidence Cleaner Kit', 1, 0, 1);Requiring the Tablet Item#
By default /cad opens the tablet for anyone in a police job, and the cad item is just a shortcut. To make the item mandatory — so a tablet can be lost, stolen or handed out by the armoury:
-- config/shared/config.lua
Config.CAD = {
RequireItem = true,
EnableItemOpen = true,
ItemName = 'cad',
}Without the item, /cad refuses with a "You need … to open the CAD" notice. Add the item to an armoury under Admin → Equipment Shops so officers can pick one up.



