Koja Scripts

MDT

Multi-department Mobile Data Terminal for FiveM covering police, DOJ, EMS and fire on one shared records system.

koja-mdt

koja-mdt is a Mobile Data Terminal for FiveM. Police, sheriff, highway patrol, the DOJ, EMS and fire all work on one shared records system, each with its own permissions, crest and tablet theme. It is built on koja-lib, so it runs on ESX, QBCore and QBX without changes.

Officers open the tablet in game (/mdt, default key F6), and the same MDT is available in a browser or on a phone through the built-in web portal.

Departments

Six departments ship in shared/departments.lua:

DepartmentShortTypeDefault jobs
Los Santos Police DepartmentLSPDleopolice, lspd
Blaine County Sheriff's OfficeBCSOleosheriff, bcso
San Andreas Highway PatrolSAHPleosahp, statepolice, trooper
Department of JusticeDOJdojdoj, judge, lawyer, da, clerk
San Andreas Medical ServicesSAMS (EMS)emsambulance, ems
Los Santos Fire DepartmentLSFDfirefire, firefighter, lsfd

You can rename them, change the jobs, or add any other faction (park rangers, for example) with config only. See Departments and permissions.

Features

Feature list by module

ModuleWhat it does
ShellTabs with back, forward and reload, sidebar groups, Ctrl+F search across people, plates, reports and pages, notification center
DashboardWelcome bar with duty toggle, KPI cards, online employees with division filter, mail inbox, bulletins, record counters
MailInternal department email to officers or whole departments, inbox, unread, starred, sent, reply, reply all, forward, signature
ProfileBanner and photo, rank, phone, badge, rewards and strikes, duty heatmap, divisions, certificates, permissions, suspend and reinstate
Divisions and certificationsDivisions with a head and members, qualifications per division, assign and revoke
FormsForm builder (8 field types, up to 50 fields), internal or public forms, submissions and reviews
Dispatch911 / 311 / anonymous calls, panic, call log, unit board, GPS waypoint, quick dispatch, dispatcher voice
PeopleSearch by name, phone or ID, file with photo, flags, licenses, record summary, vehicles, firearms, warrants, BOLOs, court cases
Vehicles and ANPRPlate search, flags, strike points, BOLO and warrant alerts, ANPR cameras and in-vehicle ALPR
FirearmsSerial registry with status
Reports and sentencing8 report types, penal code picker, fine and jail in one click, license points
CitationsTicket book with signatures, printed item, pay and contest
Warrants, BOLOs, evidenceWarrant approval flow, BOLO broadcast, evidence locker with chain of custody
CustodyJail records and impound lots
Court (DOJ)Docket, hearings, filings, sentence carrying out, expungement, bar registry
EMSPatients, ePCR, bills, hospital beds
CamerasCCTV, bodycams, live map
AdminDepartment overrides, job editing (ESX), officer actions, system status
Web portalBrowser and phone access, citizen portal
Settings and languageOwn callsign, badge, photo, accent color, per-player language, dispatcher voice

Details for each module are in Features.

Requirements

RequirementNotes
FXServer with Lua 5.4The resource uses lua54 'yes'.
koja-libRequired. Provides the framework bridge for ESX, QBCore and QBX.
oxmysqlRequired. Tables are created on start.
ESX, QBCore or QBXOne of them. See Integrations.
screenshot-basicOptional. Needed for the Take a photo button (with Config.Camera.uploadUrl) and for the selfie profile photo.
An inventoryOptional. Needed only for the tablet item, bodycams as an item, printed citations and documents.

Where to go next

Developer reference: API overview, Server exports, Client exports, Hooks, Events.