Everything you need to ship.
Install, configure and extend your Medical, Fire and Police MDTs. Written for server owners, framework devs and curious responders.
Introduction
baeyMDT's is a suite of three independent Mobile Data Terminals built for UK roleplay servers — one for the ambulance service, one for the fire & rescue service, and one for the police. Each tablet ships with its own workflow, schema and UI, but they all share the same installer, theme engine and update pipeline.
Getting started
The fastest path to a working MDT is roughly four steps:
- 1Download the resource bundle from your CFX keymaster account.
- 2Drop the folder into your server's resources directory.
- 3Import the included SQL file into your database.
- 4Add ensure baey_mdt to your server.cfg and restart.
A full breakdown of each step follows below.
Installation
1. Download
Sign into keymaster.fivem.net and download the latest release for your purchased MDT.
2. File structure
Unzip into resources/[baey]:
resources/
└── [baey]/
├── baey_mdt_police/
├── baey_mdt_fire/
└── baey_mdt_medical/3. Server.cfg
ensure baey_mdt_police
ensure baey_mdt_fire
ensure baey_mdt_medicalConfiguration
Each MDT exposes a single config.lua with sensible defaults. The most common change is the framework bridge and the command opener:
Config = {}
Config.Framework = 'esx' -- 'esx' | 'qbcore' | 'qbox' | 'standalone'
Config.Locale = 'en'
Config.OpenCommand = 'mdt'
Config.OpenKey = 'F6'
Config.UseTarget = true -- open from in-vehicle tablet prop
Config.Debug = falserefresh; restart baey_mdt_police in your live console.Frameworks
The same release archive supports four frameworks via a thin bridge layer in bridge/. No code edits are required — just set Config.Framework.
Permissions & jobs
Access is gated by job name and grade. Defaults map to the common UK service hierarchy:
Config.Jobs = {
police = { min_grade = 0, admin_grade = 4 },
ambulance = { min_grade = 0, admin_grade = 3 },
fire = { min_grade = 0, admin_grade = 3 },
}Admins (grade ≥ admin_grade) can manage callsigns, edit warrants and wipe records. Everyone else gets read-only access to their service's modules.
Commands
| Command | Description | Required role |
|---|---|---|
| /mdt | Open the tablet UI | All on-duty staff |
| /mdtoff | Force-close the tablet | All |
| /mdt:reload | Reload UI assets (dev) | Admin |
| /mdt:grant <id> <perm> | Grant a temporary permission | Admin |
| /mdt:export | Export the audit log as CSV | Admin |
Database
Each MDT ships with a single SQL file under sql/install.sql. Import it once per server. Upgrades are handled by versioned migration files in the same folder — the resource runs them automatically on boot.
-- Example: police incidents
CREATE TABLE IF NOT EXISTS baey_police_incidents (
id INT AUTO_INCREMENT PRIMARY KEY,
ref VARCHAR(16) NOT NULL UNIQUE,
officer_id VARCHAR(64) NOT NULL,
citizen_id VARCHAR(64),
category VARCHAR(64) NOT NULL,
summary TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Exports & API
Other resources can read or push data through a small typed exports surface. All exports are namespaced by service.
-- Server side
local id = exports.baey_mdt_police:createIncident({
officer = source,
category = 'TRAFFIC',
summary = 'Speeding on M1 J32'
})
-- Client side
exports.baey_mdt_medical:openPatient(citizenId)A full TypeScript definition file is generated into types/ for use with fivem-ts projects.
Troubleshooting
The tablet opens blank or stays white
Almost always a build asset issue. Re-download the release, ensure the ui/ folder is intact, and confirm your server is not behind a proxy that strips .js files.
Can't find script export 'createIncident'
The resource started before its dependency. Add 'baey_mdt_police' after your framework in server.cfg.
Permission denied on /mdt
Player's job grade is below Config.Jobs[job].min_grade. Promote them or lower the threshold.
Database errors on first boot
The install.sql file was not imported. Run it once via HeidiSQL, phpMyAdmin or the mysql CLI, then restart the resource.
Still stuck?
Drop into our Discord or open a support ticket — every paying customer gets direct dev access.
Contact support