Items
This guide details all item configurations required for the kartik-policejob script to operate correctly. Copy and paste the snippets below into your inventory/core configurations.
1. Ox Inventory Setup
Add these lines to ox_inventory/data/items.lua:
-- kartik-policejob Core Items
['police_tablet'] = {
label = 'Police MDT Tablet',
weight = 500,
stack = false,
close = true
},
['police_notebook'] = {
label = 'Officer Field Notebook',
weight = 200,
stack = false,
close = true
},
['visiongoggles'] = {
label = 'Tactical Goggles',
weight = 400,
stack = false,
close = true
},
['megaphone'] = {
label = 'Megaphone',
weight = 800,
stack = false,
close = true
},
['ballistic_shield'] = {
label = 'Ballistic Shield',
weight = 5000,
stack = false,
close = true,
allowArmed = true
},
['ankle_tracker'] = {
label = 'GPS Ankle Tracker',
weight = 500,
stack = true,
close = true
},
['gps_tracker'] = {
label = 'GPS Unit',
weight = 150,
stack = true,
close = true
},
['gps_dart'] = {
label = 'GPS Dart',
weight = 150,
stack = true,
close = true
},
['taser_cartridge'] = {
label = 'Taser Cartridge',
weight = 50,
stack = true,
allowArmed = true
},
['handcuffs'] = {
label = 'Handcuffs',
weight = 500,
stack = false,
close = true
},
['handcuff_key'] = {
label = 'Handcuff Key',
weight = 50,
stack = true,
close = true
},
['police_ziptie'] = {
label = 'Zipties',
weight = 100,
stack = true,
close = true
},
['scissors'] = {
label = 'Scissors',
weight = 100,
stack = true,
close = true
},
['police_lockpick'] = {
label = 'Lockpick',
weight = 150,
stack = true,
close = true
},
['police_props'] = {
label = 'Object Placer',
weight = 200,
stack = false,
close = true
},
['helicam_remote'] = {
label = 'Helicam Remote',
weight = 300,
stack = false,
close = true
},
['citation'] = {
label = 'Citation Receipt',
weight = 50,
stack = true,
close = true
},
['police_drone'] = {
label = 'Police Surveillance Drone',
weight = 2500,
stack = false,
close = true
},
['drone_remote'] = {
label = 'Drone Transmitter',
weight = 500,
stack = false,
close = true
},
['drone_battery'] = {
label = 'Drone Battery (Charged)',
weight = 200,
stack = true
},
['drone_battery_empty'] = {
label = 'Drone Battery (Dead)',
weight = 200,
stack = true
},
['k9_whistle'] = {
label = 'K9 Whistle',
weight = 100,
stack = false,
close = true
},
['lidar'] = {
label = 'LIDAR Speed Gun',
weight = 1200,
stack = false,
close = true,
allowArmed = true
},
['policebadge'] = {
label = 'Police Badge',
weight = 100,
stack = false,
close = true
},
['bodycam'] = {
label = 'Axon Bodycam',
weight = 150,
stack = false,
close = true
},
['handheld_detector'] = {
label = 'Metal Detector',
weight = 500,
stack = false,
close = true
},
['grapple_gun'] = {
label = 'Grapple Gun',
weight = 1500,
stack = false,
close = true
},
-- Wearable Duty Belt Container Setup
['duty_belt'] = {
label = 'Police Duty Belt',
weight = 1000,
stack = false,
close = true
},
-- Placeable Deployment Props
['traffic_cone'] = {
label = 'Traffic Cone',
weight = 1500,
stack = true
},
['road_barrier'] = {
label = 'Road Barrier',
weight = 4000,
stack = true
},
['spikestrip'] = {
label = 'Spike Strip',
weight = 8000,
stack = false
},
['road_flare'] = {
label = 'Road Flare',
weight = 200,
stack = true
},
['warning_sign'] = {
label = 'Warning Sign',
weight = 2500,
stack = true
},
['scene_light'] = {
label = 'Scene Spotlight',
weight = 5000,
stack = true
},
['tint_checker'] = {
label = 'Tint Meter',
weight = 500,
stack = false,
close = true,
description = 'Electronic tool used to measure vehicle window tint transparency.',
},
-- Patrol Gear
['pepper_spray'] = {
label = 'Pepper Spray',
weight = 300,
stack = false,
close = true,
description = 'OC spray canister.',
},
['door_ram'] = {
label = 'Door Ram',
weight = 9000,
stack = false,
close = true,
description = 'Heavy ram for breaching locked doors.',
},
['heartbeat_sensor'] = {
label = 'Heartbeat Sensor',
weight = 800,
stack = false,
close = true,
description = 'Picks up heartbeats through walls.',
},
['body_scanner'] = {
label = 'Body Scanner',
weight = 900,
stack = false,
close = true,
description = 'Scans a person for weapons, drugs, ammo and cash.',
},
['trace_laptop'] = {
label = 'Cell Trace Laptop',
weight = 2500,
stack = false,
close = true,
description = 'Traces the caller on an officer phone call.',
},
['wheel_boot'] = {
label = 'Wheel Boot',
weight = 6000,
stack = true,
description = 'Clamps a wheel until the fine is paid.',
},
2. QB-Core Inventory Setup
Add these entries to qb-core/shared/items.lua:
-- kartik-policejob Core Items
['police_tablet'] = { ['name'] = 'police_tablet', ['label'] = 'Police MDT Tablet', ['weight'] = 500, ['type'] = 'item', ['image'] = 'police_tablet.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Access police departments records, logs, and catalogs.' },
['police_notebook'] = { ['name'] = 'police_notebook', ['label'] = 'Officer Field Notebook', ['weight'] = 200, ['type'] = 'item', ['image'] = 'police_notebook.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Personal field notepad for recording interviews, suspect details, and sketches.' },
['visiongoggles'] = { ['name'] = 'visiongoggles', ['label'] = 'Tactical Goggles', ['weight'] = 400, ['type'] = 'item', ['image'] = 'visiongoggles.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Provides heat signature / night vision overlays.' },
['megaphone'] = { ['name'] = 'megaphone', ['label'] = 'Megaphone', ['weight'] = 800, ['type'] = 'item', ['image'] = 'megaphone.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Amplifies officer voice broadcasts.' },
['ballistic_shield'] = { ['name'] = 'ballistic_shield', ['label'] = 'Ballistic Shield', ['weight'] = 5000, ['type'] = 'item', ['image'] = 'ballistic_shield.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Mobile cover for high-risk breaches.' },
['ankle_tracker'] = { ['name'] = 'ankle_tracker', ['label'] = 'GPS Ankle Tracker', ['weight'] = 500, ['type'] = 'item', ['image'] = 'ankle_tracker.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'GPS ankle monitor worn by suspects to track their coordinates live.' },
['gps_tracker'] = { ['name'] = 'gps_tracker', ['label'] = 'GPS Unit', ['weight'] = 150, ['type'] = 'item', ['image'] = 'gps_tracker.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Transmits active location coordinates to the dispatch server.' },
['gps_dart'] = { ['name'] = 'gps_dart', ['label'] = 'GPS Tracking Dart', ['weight'] = 150, ['type'] = 'item', ['image'] = 'gps_tracker.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Fired from LEO vehicle or manually attached to track suspect vehicles.' },
['taser_cartridge'] = { ['name'] = 'taser_cartridge', ['label'] = 'Taser Cartridge', ['weight'] = 50, ['type'] = 'item', ['image'] = 'taser_cartridge.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Standard taser refill cartridge.' },
['handcuffs'] = { ['name'] = 'handcuffs', ['label'] = 'Handcuffs', ['weight'] = 500, ['type'] = 'item', ['image'] = 'handcuffs.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Standard department issued metal restraints.' },
['handcuff_key'] = { ['name'] = 'handcuff_key', ['label'] = 'Handcuff Key', ['weight'] = 50, ['type'] = 'item', ['image'] = 'handcuff_key.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Standard key to unlock handcuffs.' },
['police_ziptie'] = { ['name'] = 'police_ziptie', ['label'] = 'Zipties', ['weight'] = 100, ['type'] = 'item', ['image'] = 'ziptie.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Heavy-duty plastic flex cuffs.' },
['scissors'] = { ['name'] = 'scissors', ['label'] = 'Scissors', ['weight'] = 100, ['type'] = 'item', ['image'] = 'scissors.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Used to cut zipties and other materials.' },
['police_lockpick'] = { ['name'] = 'police_lockpick', ['label'] = 'Lockpick', ['weight'] = 150, ['type'] = 'item', ['image'] = 'lockpick.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Used to remove restraints or bypass locks.' },
['police_props'] = { ['name'] = 'police_props', ['label'] = 'Object Placer', ['weight'] = 200, ['type'] = 'item', ['image'] = 'police_props.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Allows placement of tactical scene barriers and objects.' },
['helicam_remote'] = { ['name'] = 'helicam_remote', ['label'] = 'Helicam Remote', ['weight'] = 300, ['type'] = 'item', ['image'] = 'helicam_remote.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Controls tactical police helicopter cameras.' },
['citation'] = { ['name'] = 'citation', ['label'] = 'Citation Receipt', ['weight'] = 50, ['type'] = 'item', ['image'] = 'citation.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A paper copy of a traffic or penal citation.' },
['police_drone'] = { ['name'] = 'police_drone', ['label'] = 'Surveillance Drone', ['weight'] = 2500, ['type'] = 'item', ['image'] = 'police_drone.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Deployable micro-surveillance drone.' },
['drone_remote'] = { ['name'] = 'drone_remote', ['label'] = 'Drone Transmitter', ['weight'] = 500, ['type'] = 'item', ['image'] = 'drone_remote.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Link interface for controlling flight drones.' },
['drone_battery'] = { ['name'] = 'drone_battery', ['label'] = 'Drone Battery (Charged)', ['weight'] = 200, ['type'] = 'item', ['image'] = 'drone_battery.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Full backup battery for flight drone.' },
['drone_battery_empty'] = { ['name'] = 'drone_battery_empty', ['label'] = 'Drone Battery (Dead)', ['weight'] = 200, ['type'] = 'item', ['image'] = 'drone_battery_empty.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Depleted drone flight battery.' },
['k9_whistle'] = { ['name'] = 'k9_whistle', ['label'] = 'K9 Whistle', ['weight'] = 100, ['type'] = 'item', ['image'] = 'k9_whistle.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Call or command active-duty police dogs.' },
['lidar'] = { ['name'] = 'lidar', ['label'] = 'LIDAR Speed Gun', ['weight'] = 1200, ['type'] = 'item', ['image'] = 'lidar.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Monitors speed readings on targeted vehicles.' },
['policebadge'] = { ['name'] = 'policebadge', ['label'] = 'Police Badge', ['weight'] = 100, ['type'] = 'item', ['image'] = 'policebadge.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Identification badge for active duty officers.' },
['bodycam'] = { ['name'] = 'bodycam', ['label'] = 'Axon Bodycam', ['weight'] = 150, ['type'] = 'item', ['image'] = 'bodycam.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Saves active-duty shift recordings.' },
['handheld_detector'] = { ['name'] = 'handheld_detector', ['label'] = 'Handheld Metal Detector', ['weight'] = 500, ['type'] = 'item', ['image'] = 'handheld_detector.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Used to scan individuals for metal objects/weapons.' },
['grapple_gun'] = { ['name'] = 'grapple_gun', ['label'] = 'Grapple Gun', ['weight'] = 1500, ['type'] = 'item', ['image'] = 'grapple_gun.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Tactical grapple launcher for scaling structures and rooftops.' },
['duty_belt'] = { ['name'] = 'duty_belt', ['label'] = 'Police Duty Belt', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'duty_belt.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Modular duty belt with a unique ID for equipment storage.' },
-- Placeable Deployment Props
['traffic_cone'] = { ['name'] = 'traffic_cone', ['label'] = 'Traffic Cone', ['weight'] = 1500, ['type'] = 'item', ['image'] = 'traffic_cone.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Safety cone.' },
['road_barrier'] = { ['name'] = 'road_barrier', ['label'] = 'Road Barrier', ['weight'] = 4000, ['type'] = 'item', ['image'] = 'road_barrier.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Work zone barricade.' },
['spikestrip'] = { ['name'] = 'spikestrip', ['label'] = 'Spike Strip', ['weight'] = 8000, ['type'] = 'item', ['image'] = 'spikestrip.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Pursuit mitigation device.' },
['road_flare'] = { ['name'] = 'road_flare', ['label'] = 'Road Flare', ['weight'] = 200, ['type'] = 'item', ['image'] = 'road_flare.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Active signal flare.' },
['warning_sign'] = { ['name'] = 'warning_sign', ['label'] = 'Warning Sign', ['weight'] = 2500, ['type'] = 'item', ['image'] = 'warning_sign.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Warning sign.' },
['scene_light'] = { ['name'] = 'scene_light', ['label'] = 'Scene Spotlight', ['weight'] = 5000, ['type'] = 'item', ['image'] = 'scene_light.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'High powered spotlight.' },
['tint_checker'] = { ['name'] = 'tint_checker', ['label'] = 'Tint Meter', ['weight'] = 500, ['type'] = 'item', ['image'] = 'tint_checker.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Electronic tool used to measure vehicle window tint transparency.' },
-- Patrol Gear
['pepper_spray'] = { ['name'] = 'pepper_spray', ['label'] = 'Pepper Spray', ['weight'] = 300, ['type'] = 'item', ['image'] = 'pepper_spray.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'OC spray canister.' },
['door_ram'] = { ['name'] = 'door_ram', ['label'] = 'Door Ram', ['weight'] = 9000, ['type'] = 'item', ['image'] = 'door_ram.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Heavy ram for breaching locked doors.' },
['heartbeat_sensor'] = { ['name'] = 'heartbeat_sensor', ['label'] = 'Heartbeat Sensor', ['weight'] = 800, ['type'] = 'item', ['image'] = 'heartbeat_sensor.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Picks up heartbeats through walls.' },
['body_scanner'] = { ['name'] = 'body_scanner', ['label'] = 'Body Scanner', ['weight'] = 900, ['type'] = 'item', ['image'] = 'body_scanner.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Scans a person for weapons, drugs, ammo and cash.' },
['trace_laptop'] = { ['name'] = 'trace_laptop', ['label'] = 'Cell Trace Laptop', ['weight'] = 2500, ['type'] = 'item', ['image'] = 'trace_laptop.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Traces the caller on an officer phone call.' },
['wheel_boot'] = { ['name'] = 'wheel_boot', ['label'] = 'Wheel Boot', ['weight'] = 6000, ['type'] = 'item', ['image'] = 'wheel_boot.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Clamps a wheel until the fine is paid.' },Item images for all of these are in the [Images] folder of the resource.
3. Models
The LIDAR gun (kpj_lidar) and the patrol gear models are streamed with the job. No extra props are needed.