J0 CAD – Dispatch MDT with Citations, Tickets & Notepad (Police/EMS)
server.cfg Start Order
ensure J0-Cad
ensure J0-Cad-Audio
Installation
- Ensure
J0-Cadis in your resources folder. - Run
insertme.sqlonce if tables do not exist (usesCREATE TABLE IF NOT EXISTS; tables auto-create on first run if your setup supports it). - Add items to your inventory (see below).
- Restart the script:
ensure J0-Cad
Commands
| Command | Usage | Description |
|---------|-------|-------------|
| /dispatch | /dispatch | Opens dispatch panel (Police/EMS with permission) |
| /mdt | /mdt | Opens MDT/CAD (Police/EMS, keybind F7) |
| /911 | /911 <message> | Send 911 call (e.g. /911 Someone stole my car) |
| /911a | /911a <message> | Send anonymous 911 call |
| /311 | /311 <message> | Send 311 non-emergency call |
| /311a | /311a <message> | Send anonymous 311 call |
Toggle commands in J0-Cad/shared/config.lua under DispatchCommands.
Items - qb-core/shared/items.lua
['notepad'] = {
name = 'notepad',
label = 'Notepad',
weight = 100,
type = 'item',
image = 'notepad.png',
unique = false,
useable = true,
shouldClose = true,
combinable = nil,
description = 'A small notepad to write things down.'
},
['ticket_creator'] = {
name = 'ticket_creator',
label = 'Ticket Creator',
weight = 200,
type = 'item',
image = 'ticket_creator.png',
unique = false,
useable = true,
shouldClose = true,
combinable = nil,
description = 'Used to create official tickets.'
},
['torn_ticket'] = {
name = 'torn_ticket',
label = 'Torn Ticket',
weight = 50,
type = 'item',
image = 'torn_ticket.png',
unique = false,
useable = false,
shouldClose = true,
combinable = nil,
description = 'A damaged or invalid ticket.'
},
Items - ox_inventory/data/items.lua
['notepad'] = {
label = 'Notepad',
weight = 100,
stack = true,
close = true,
description = 'A small notepad to write things down.',
},
['ticket_creator'] = {
label = 'Ticket Creator',
weight = 200,
stack = false,
close = true,
description = 'Used to create official tickets.',
},
['torn_ticket'] = {
label = 'Torn Ticket',
weight = 50,
stack = true,
close = true,
description = 'A damaged or invalid ticket.',
},
SQL
Run install/insertme.sql once. Tables use CREATE TABLE IF NOT EXISTS; if your database supports it, you can skip manual import and restart the script. See install/insertme.sql for full schema.
Exports (Client)
Resource: J0-Cad
CustomAlert
exports['J0-Cad']:CustomAlert(data)
| Field | Type | Description | |-------|------|-------------| | message | string | Alert message | | dispatchCode | string | Code name (e.g. 'shooting') | | code | string | 10-code (default '10-80') | | icon | string | FontAwesome icon | | priority | number | 1=red, 2=default | | coords | vector3 | Location | | gender | string | Suspect gender | | street | string | Street name | | model | string | Vehicle model | | plate | string | Vehicle plate | | jobs | table | {'police'} or {'ems'} or {'police','ems'} | | radius | number | Blip radius | | sprite | number | Blip sprite | | color | number | Blip color | | sound | string | Alert sound |
Prebuilt Alerts (Client)
exports['J0-Cad']:VehicleTheft()
exports['J0-Cad']:Shooting()
exports['J0-Cad']:Hunting()
exports['J0-Cad']:VehicleShooting()
exports['J0-Cad']:SpeedingVehicle()
exports['J0-Cad']:Fight()
exports['J0-Cad']:PrisonBreak()
exports['J0-Cad']:StoreRobbery()
exports['J0-Cad']:FleecaBankRobbery()
exports['J0-Cad']:PaletoBankRobbery()
exports['J0-Cad']:PacificBankRobbery()
exports['J0-Cad']:VangelicoRobbery()
exports['J0-Cad']:HouseRobbery()
exports['J0-Cad']:YachtHeist()
exports['J0-Cad']:DrugSale()
exports['J0-Cad']:SuspiciousActivity()
exports['J0-Cad']:CarJacking()
exports['J0-Cad']:InjuriedPerson()
exports['J0-Cad']:DeceasedPerson()
exports['J0-Cad']:OfficerDown()
exports['J0-Cad']:OfficerBackup()
exports['J0-Cad']:OfficerInDistress()
exports['J0-Cad']:EmsDown()
exports['J0-Cad']:Explosion()
exports['J0-Cad']:ArtGalleryRobbery()
exports['J0-Cad']:TrainRobbery()
exports['J0-Cad']:VanRobbery()
exports['J0-Cad']:UndergroundRobbery()
exports['J0-Cad']:DrugBoatRobbery()
exports['J0-Cad']:UnionRobbery()
exports['J0-Cad']:CarBoosting()
exports['J0-Cad']:SignRobbery()
exports['J0-Cad']:BobcatSecurityHeist()