Advanced MDT & Dispatch for QBox
Run your entire emergency-services roleplay from one terminal. erp_mdt is a complete Mobile Data Terminal and live CAD/Dispatch system built natively for QBox (qbx_core). Police, EMS, the Department of Justice, Psychiatry and Mechanics each get their own purpose-built workspace inside a single fast, modern Svelte UI — no framework bridges, no bloat, no filler tabs.
This is not a "citizen-lookup + notes" MDT. It is a full departmental operating system: live dispatch with an interactive map, patrols and partnerships, duty-time tracking and management analytics, a 145-charge editable penal code, cumulative sentencing with an automatic 100-year character-kill safeguard, evidence and weapons registries, body-cam live streaming, CCTV, mugshots, legal cases shared across departments, psychiatric evaluations, prescriptions, insurance tiers, impound management, tow contracts and more.
Preview: https://youtu.be/k0_eVnEjzUE?si=gxU4WQvpBfv5FKAd&t=88
Documentation: Mobile Data Terminal | FinalStory Docs
One terminal, five departments
Every job gets its own sidebar, theme colour, tabs and permissions. Open the MDT from a single ox_inventory item (mdt).
Police (LSPD) — the full investigative suite.
EMS / Ambulance — medical reports, billing & photo documentation.
Department of Justice (DOJ) — cases, court documents, sanctions & legislation.
Psychiatry — clients, prescriptions, evaluations & billing.
Mechanic / Tow (mechanic, mamba, tuners) — contract towing & tuning records.
The window even fades to 20% opacity when your mouse leaves it, so officers can watch the scene behind the terminal, and snaps back on hover.
Live Dispatch & CAD
Interactive GTA map with pan/zoom, job-coloured unit blips (police shield, EMS heart, contractor house), pulsing red incident blips and live patrol rings.
Active calls with priority-coded badges (P1–P4), caller, location, time-ago and "updated" markers.
Drag-and-drop unit assignment — drag a unit card straight onto a call. Assigning a unit auto-detaches it from any previous call and counts toward its duty/patrol stats.
Collaborative call notes — any assigned unit can add timestamped notes (authored by callsign); authors can delete their own.
Units-on-duty board — callsign, badge #, name, radio channel and patrol membership for every on-duty unit; one click to join their radio channel or focus them on the map.
On-screen draggable Dispatch HUD (renders even with the MDT closed): current call with priority colour, location, details, notes and assigned-unit count; F9 toggle, accept/detach, prev/next paging, 5-second red pulse + auto-focus on new high-priority calls, position saved to localStorage.
Priority-based auto-expiry — calls clear themselves after 1–4 hours depending on priority.
Open dispatch contract — your other resources (panic buttons, businesses, phone emergency calls) push calls in through one stable, reliable pipeline.
3D positional alert sound and dispatch blips are fully data-driven (sprite/colour/scale per call).
Police suite (LSPD)
Citizen Database
Search by name, phone or citizen ID; result cards with mugshot thumbnails.
Full profile: mugshot, gender/DOB/phone, animated WANTED badge (auto-set from active BOLO), COLLEAGUE badge for on-duty officers/medics.
Criminal record & incidents, property overview (registered vehicles + registered weapons with OK/STOLEN status), and a Sanctions ledger showing the citizen's cumulative prison total with escalating colour warnings as they approach the 100-year character-kill threshold.
In-game mugshot camera — a full framing overlay ("LSPD IDENTIFICATION CAMERA") with REC indicator, draggable/resizable crop box, rule-of-thirds grid and crosshair; the shot is cropped, encoded to WebP and uploaded.
IDs & Licences
Grant/revoke 9 licence types, each writing QBox metadata and (where applicable) handing over the physical inventory item: National ID, Driver's Licence B, Motorcycle A, Commercial C, Firearms Licence (issued via training only), Fishing, Hunting, Firearms Training Permit (no item), Attorney ID. Full action history log per citizen. (Exact inventory item names to register are listed in the included README.)
Vehicle Registry
Plate/model search, owner lookup, in-garage vs in-circulation/towed status, official vehicle notes (registered colour, known modifications, general notes), linked records, and an Impound Lot view distinguishing full confiscation vs paid storage, showing body/engine/fuel %, officer, reason, and a Release Vehicle action.
Weapons Registry
Serial/model search, owner lookup, Mark as Stolen / Mark as Found, linked reports and a forensic ballistics / evidence matches panel. Weapons auto-register as legally owned the moment a citizen buys one (the serial is captured on purchase).
Reports
Classified records (Investigation / Arrest / Fine-Offense / Forensic-Evidence) that link incidents, involved citizens, involved vehicles and attached evidence (each searchable, removable chips), with photo documentation, close/reopen, and Forward to DOJ.
Incidents
Case files with location & summary, case sharing with named officers, hand over to DOJ, request a psychiatric evaluation, attach body-cam photos, link reports, and close/reopen. New incidents can auto-prefill from a dispatch alert (carrying over the call notes).
BOLOs / Warrants
Issue BOLO-Vehicle, BOLO-Person or Warrant-Person with live target autocomplete, justification and links to incidents & reports; cancel alerts. Active warrants drive the WANTED flag and dashboard counters.
Evidence Registry
Log evidence bags by classification (blood/DNA serology, fingerprint, ballistics, firearm, narcotics, other), recovery location, forensic data, and link to incidents & reports.
Legislation & Penal Code
A Penalty Calculator (pick charges, fine/months clamped to each charge's legal range, link a citizen + incident, then issue the bank invoice and imprison — mugshot first, then jail) and the full San Andreas Penal Code browser. Bosses with permission can edit, add and delete charges live in-game.
Send Summons
Issue a court/station summons delivered straight to the citizen's phone. It works with lb-phone out of the box, and because the delivery lives in an open, editable file, servers on any other phone, SMS or mail resource can repoint it to their own provider — no escrowed code involved.
Officer operations, patrols & management
Go on/off duty toggle with a live shift timer; duty sessions track hours plus dispatches, reports, incidents and fines per shift (auto-closing orphaned sessions after crashes).
Patrol system — create a patrol, share a 4-character join code, join, kick members, leave or disband; colour-coded patrol rings on the map; per-patrol stat tracking and leadership hand-off.
Patrol history & partnerships — full patrol logs and a "who you patrol with most" partnership breakdown.
Department Management (boss) — Day/Week/Month analytics with Chart.js bar & line graphs (duty hours, dispatches, reports, incidents, fines), a full officer roster, per-officer detail with shift history, activity charts and recent actions.
Callsign management — edit officer callsigns directly from the management panel.
Cross-department — this management view (worked hours, record/activity counts, callsign assignment) isn't police-only: EMS and contracted tow/mechanic bosses get the same staff overview for their own faction, so every department head can see who really worked and how much, and assign their team's callsigns.
Personnel files / officer notes — titled notes per officer with linked reports & incidents.
Audit log — every meaningful action (reports, incidents, fines, BOLOs, evidence, weapon-status changes, licences, permission changes, medical reports, dispatch deletions, legislation edits, callsign changes, officer notes, case sharing…) is recorded and filterable by officer and action type.
Per-grade permission editor — set the minimum job grade required for every single tab and action, per job, from inside the MDT.
Department of Justice (DOJ)
DOJ Dashboard — pending cases, court documents and issued sanctions at a glance.
Received Cases — incidents forwarded by police, presented as full case files (involved citizens/vehicles/weapons, attached reports incl. fine-records & tow-records, evidence and body-cam photos).
DOJ Citizen Database — sees all invoices across every faction, with Freeze / Unfreeze bank account and internal DOJ notes (court orders, probation).
Debts & Penalties — issue court sanctions (fine + sentence months + case reference + charges), view MDT court records and all-faction invoices, delete pending invoices.
Court Documents — internal documents with linked citizens.
Legislation — DOJ can also edit the penal code.
Cumulative sentencing with auto-CK — every DOJ/physical sentence is recorded; once a citizen's lifetime total reaches 100 years (1200 months) the character is automatically CK'd (deleted) after a notice.
EMS / Ambulance
Medical Reports with patient lookup, diagnosis/notes and attached photo documentation.
Billing with an editable, boss-managed treatment price list (price ranges enforced server-side).
Configurable insurance tiers — set a patient's coverage tier; invoices automatically apply the coverage discount and show what the patient actually pays. (Tier percentages are configurable to your economy — exact defaults are documented in the included README.)
Personal photo gallery (capture, link to reports, unlink, delete).
EMS can also request dispatch, run patrols and view their own duty stats.
Psychiatry
Clients & Prescriptions — prescribe Strong Analgesic, Antibiotics, Morphine or Adrenaline (qty 1–10) with notes; prescriptions can later be dispensed (handed over as the real item by a medic) or cancelled; full prescription history.
Examination Requests — a live queue of evaluations requested by Police/DOJ (linked to an incident); psychiatrists complete them with a written conclusion, which notifies the requester.
Billing with an editable session price list.
Internal psychiatrist notes per client.
Mechanic / Tow
Tow contracts as the gateway — police (with the right permission) award a tow contract to a towing/mechanic faction at a configurable guaranteed price, straight from the MDT. The contract is what unlocks dispatch for that faction: only contracted towing companies get the live dispatch map, the dispatch HUD and incoming tow calls. No contract means no dispatch access — a genuine, switchable police-to-mechanic business relationship rather than a static job.
10-51 tow calls — contracted companies receive tow requests on the dispatch map; completing a tow bills the LSPD at the contracted price.
Police Tow Records — log a seized plate, location and reason and bill the LSPD.
Tuning / Modification records — log work with citizen vs faction billing, send the invoice, and browse a records book that merges manual entries with autoshop (erp_customs) invoices (filterable by status & type).
Company bulletin / MOTD editable by permitted staff; dashboard shows colleagues on duty and the guaranteed LSPD tow price.
Media: mugshots, body-cams & CCTV
Mugshots — officer-side framing camera and an automatic line-up mugshot (lineup animation) on jailing, via screenshot-basic + Fivemanage upload.
Evidence / documentation photos — reusable gallery widget (max 5 per subject) for citizens, vehicles, reports and incidents, with lightbox and boss-only delete.
Body-cam live streaming — watch on-duty officers' live body-cam feeds via WebRTC (bundled erp_police / erp_bodycam_stream), with viewer limits, countdowns and server force-close; plus a body-cam photo gallery.
CCTV security cameras — auto-grouped live feeds (LTD Gasoline, 24/7 Supermarket, Rob's Liquors, Fleeca, Pacific Standard, Paleto Bank, Vangelico, …) with online/offline status and PTZ indicators.
FinalStory Penal Code included
Ships with the full FinalStory San Andreas penal code: 145 charges across 9 categories (crimes against persons, property, traffic, weapons, narcotics, justice & public order, hunting/animals, maritime, elections & state security). The code is persisted in KVP, version-stamped (so it re-seeds cleanly on updates) and fully editable in-game.
Framework & dependencies
Built natively for QBox — talks to qbx_core directly. No multi-framework bridge.
Required: qbx_core · ox_lib · ox_inventory · oxmysql · screenshot-basic
Bundle: erp_police / erp_bodycam_stream (security-camera viewer & body-cam streaming tabs)
Optional providers — wired through open, editable hook files, no hard dependency (missing providers simply no-op): Banking → erp_banking · Jail → xt-prison · Radio → mm_radio · Dispatch sound → xsound · Summons → lb-phone · Suspect mugshot → cqc-mugshot · Notify → ox_lib
Built to customize (escrow-open files)
The core logic is protected by FiveM asset escrow, but the integration layer ships unlocked so you can adapt the MDT without touching escrowed code: the debug toggle and integration resource names, the Fivemanage key source, the audit-log hook, the banking/jail/radio/sound/mugshot provider wrappers, the summons delivery, the notification and radio-join hooks, every locale file and the SQL seeds are all plaintext and editable.
Swap banking, jail, radio, sound, summons delivery or mugshot providers by editing one wrapper function each.
The full file-by-file escrow_ignore list lives in the included README.
Localization
English is the primary language; Czech ships out of the box. Both the Lua side and the entire Svelte UI are translated through ox_lib locales — add a language by dropping in locales/<lang>.json and:
setr ox:locale "cs" # or "en" (default)
Performance & security
No idle busy-loops: the UI polls only while open (≈3s dispatch HUD, ≈30s dashboard refresh); audit writes are batched and flushed every 5 minutes; DB indexes are ensured on boot; name lookups are cached.
No secrets baked in — your Fivemanage key lives in the erp_mdt_fivemanage_key convar, never in the code. Leave it empty to disable uploads gracefully.
Ships with a built-in update notifier that can be fully disabled.
Setup in minutes
Drop-in: start the required resources before erp_mdt, add the mdt ox_inventory item that opens the UI, import the SQL seeds and you're live.
The complete walkthrough — every ox_inventory item to register (the mdt item, all licence items and the psychiatry prescription items), the SQL import, the Fivemanage photo-upload convar and all config values — ships in the included README.
Escrow-protected with intentionally open, editable configuration & integration files. Support provided through this store. Built for QBox. © FinalStory.