- Documentation
- 06Game
Install the bridgeGame
Install the supermdt-bridge resource on your FiveM server: requirements, downloading and checking the archive, bridge key, server.cfg, jobs, updates and troubleshooting.
The supermdt-bridge bridge is a FiveM resource you install once on your server. Allow
about fifteen minutes. You need access to the server files (resources folder,
server.cfg) and to be an administrator of your SuperMDT organization.
Requirements
Section titled “Requirements”| Framework | ESX Legacy, QBCore or Qbox. No other (see Game integration). |
| OneSync | On (onesync on). Without OneSync, everything works except live map positions. |
| FXServer artifacts | Recent enough for Node 22 (node_version '22'). On an older artifact, only positions are cut off. |
| SuperMDT | An organization with at least one service, and the game integration turned on. |
| screencapture or screenshot-basic | Optional: only for in-game photos. screencapture is recommended. |
Download the bridge
Section titled “Download the bridge”The bridge is downloaded from the SuperMDT website, as a ZIP archive:
| File | Address |
|---|---|
| The latest version (permanent link) | https://supermdt.fr/downloads/supermdt-bridge-latest.zip |
| A specific version | https://supermdt.fr/downloads/supermdt-bridge-<version>.zip (for example supermdt-bridge-0.8.0.zip) |
| That version’s fingerprint | https://supermdt.fr/downloads/supermdt-bridge-<version>.zip.sha256 |
| The current version, its fingerprint and size | https://supermdt.fr/downloads/supermdt-bridge.json |
The Download the bridge step of getting started shows the file, its version, its size and its SHA-256 fingerprint, with the download button and the permanent link.
Unzip the archive into your server’s resources folder: you should get
resources/supermdt-bridge/fxmanifest.lua. Keep this exact folder name, with no duplicate
folder (supermdt-bridge/supermdt-bridge).
Check the archive
Section titled “Check the archive”To make sure the archive was neither damaged nor modified, compute its fingerprint and
compare it with the one shown in SuperMDT (or in supermdt-bridge.json):
# Linux, Git Bash (macOS: shasum -a 256)sha256sum supermdt-bridge-0.8.0.zip# with the .sha256 file downloaded next to itsha256sum -c supermdt-bridge-0.8.0.zip.sha256# Windows (PowerShell): same value, shown in uppercaseGet-FileHash .\supermdt-bridge-0.8.0.zip -Algorithm SHA256If the two fingerprints differ, don’t install it: download it again.
Install
Section titled “Install”-
Turn on the integration. In SuperMDT, open Settings › Game and turn on Turn on game integration.
-
Create the bridge key. In the Bridge key card, click Generate a key and copy it right away: it is shown only once. Also note the API address shown on the same page.
-
Copy the resource. Download the archive and unzip it into your server’s
resourcesfolder (or a bracketed subfolder, like[supermdt]). Keep thesupermdt-bridgename: the tablet only agrees to display inside a resource with this name. -
Declare it in
server.cfg, after your framework and after the scripts the bridge uses (inventory, bank, phone, garages, billing, licenses, screencapture):# SuperMDTset supermdt_url "https://<your-api-address>"set supermdt_key "smdt_src_…"ensure supermdt-bridge# Bridge admin commandsadd_ace group.admin command.supermdt allow -
Restart the server, then type
supermdt statusin the console. You should see the detected framework, a recent “Last hello” and “Relay: … connected: yes”. In SuperMDT, the Connection card turns Connected within a minute. -
Link your jobs to your services (next section).
Convars
Section titled “Convars”| Convar | Role | Default |
|---|---|---|
supermdt_url |
The API address (required), in https://. |
— |
supermdt_key |
The bridge key (required). | — |
supermdt_framework |
auto, esx, qbcore or qbox. Keep auto unless detection fails. |
auto |
supermdt_debug |
true: detailed log in the console. |
false |
supermdt_link_command |
The name of the link-by-code command. Empty: linking by code is off. | mdtlink |
supermdt_duty_command |
The name of a duty on/off command provided by the bridge (for example service), for a server with no duty point. Empty: off. |
empty |
Configuration files
Section titled “Configuration files”Other settings live in three files of the resource. The defaults suit most servers: you don’t need to change anything to get started.
| File | Where it’s read | What it holds |
|---|---|---|
config.lua |
server only (never sent to players) | the address, key and framework (read from the convars), the rates towards SuperMDT (Config.Http), sending players (Config.Players) and positions (Config.Positions), linking with a code (Config.Link), the tablet, photo, quick dispatch and panic rates, the server side of the plate reader, electronic tags, printing (Config.Documents) and the integrations (Config.Integrations: weapons, vehicles, transfers, licenses, fines, properties) |
config_shared.lua |
server and players | the message language (Config.Locale, fr or en), the tablet, photos, quick dispatch, the SuperMDT menu, the panic button, call waypoints, the default keys on ESX (Config.FrameworkKeys) and the player side of the plate reader |
config_alerts.lua |
server and players | game alerts: dispatch scripts and phones listened to, bridge detections |
config_shared.lua and config_alerts.lua are sent to players: put nothing secret in
them. Each integration and each in-game feature must also be turned on in SuperMDT:
these files only let you turn them off on the game server side.
After changing one of these files, restart the resource (ensure supermdt-bridge, or
refresh then ensure if you added files).
Link jobs to services
Section titled “Link jobs to services”The bridge needs to know which framework job matches which service. In Settings › Game, Jobs and services card:
- Click Link a job.
- In Framework job, type the job name as it exists in the framework, in lowercase:
police,sheriff,ambulance… - Pick the Service.
- Optional, in Grades: match a framework grade (number or name) with an MDT grade. It’s shown on the player sheet (expected grade, any mismatch); the MDT grade is not changed automatically.
- Save.
A job belongs to a single service; a service can have several jobs (police and
sheriff, for example). With no linked job, the bridge still sends players and their
characters, but puts nobody on duty and sends no positions: the console shows “No job
is linked to a service”.
To remove a job: open it, then hold Remove this job.
When settings apply
Section titled “When settings apply”The bridge re-reads SuperMDT’s settings (jobs, position interval, tablet options,
integrations) at each hello. SuperMDT tells it as soon as a setting changes: the change
reaches the game within a few seconds, and players already in game see it without
reconnecting (30 seconds at most when the live map is off). It also says hello at startup,
then every 10 minutes. supermdt hello in the server console forces one right away.
The Settings › Game page
Section titled “The Settings › Game page”Everything about the game on the SuperMDT side fits on one page (permission Delegated administration › Set up the game, or administrator). While the integration is off, only the first card shows.
| Card | What it holds | Details |
|---|---|---|
| Game integration | The Turn on game integration switch. | Game integration |
| Connection | The bridge state: Connected (contact less than 5 minutes ago), Quiet (older) or Never connected; the framework and its version, the resource and its version, the server name, the Last check-in, and the API address with Copy. | above |
| Bridge key | Generate a key, Replace the key, Revoke. | below |
| Jobs and services | Framework jobs linked to services (Link a job). | above |
| Positions | The positions’ Send interval (seconds), from 10 to 300 (60 by default): it’s the same setting as the live map’s (Map settings). | Duty and positions |
| In game | In-game photos and Quick dispatch. | In-game tablet |
| Integrations | Weapons, vehicles, transfers, licenses, fines and care, plate reader, properties, and the Alerts and dispatch line: for each, the detected script and its support level. | Game integration and each integration’s page |
| Installation | The three steps and the server.cfg lines, with your API address (and the key, right after you generate it); Installation guide opens this page. |
above |
| Players | Game accounts seen by the bridge or entered by hand. | Accounts and characters |
Update the bridge
Section titled “Update the bridge”- Download the new version (the permanent
supermdt-bridge-latest.ziplink always follows the latest) and replace thesupermdt-bridgefolder with the one from the archive. - In the server console, type
refresh, thenensure supermdt-bridge(or restart the server).
The ensure order
Section titled “The ensure order”The bridge detects the scripts started before it. Put ensure supermdt-bridge after:
- the framework (
es_extended,qb-coreorqbx_core) andoxmysql; - the inventory (ox_inventory, qb-inventory…), vehicles (
qbx_vehicles), bank, phone, licenses, billing; screencaptureorscreenshot-basic, for in-game photos.
If one of these scripts starts later, the bridge sees it at its next hello (10 minutes, or
supermdt hello). At startup, it waits up to 60 seconds for the framework.
Replace or revoke the key
Section titled “Replace or revoke the key”In the Bridge key card: Replace the key creates a new key and cuts off the old one
immediately; Revoke (hold button) cuts it off without replacing it. After a
replacement, put the new key in supermdt_key, then type supermdt hello: the bridge
re-reads the key without restarting.
The same key is used for players, duty, the tablet and live map positions.
Troubleshooting
Section titled “Troubleshooting”In the server console
Section titled “In the server console”These commands are reserved for the console and for players allowed by the
add_ace group.admin command.supermdt allow line. None of them shows the key.
| Command | Effect |
|---|---|
supermdt status |
Full status: framework, last hello, linked jobs, players, position relay, tablet, photos, quick dispatch, call waypoints, panic button, game alerts (scripts listened to, grouped as tested in game, verified in code or experimental; listeners and phones on or off; detections; counters), plate reader (active or not, and why), properties, electronic tags, printed documents, phone used for numbers, and each integration (script detected, on or off, counters, support level of the script in use). |
supermdt log [n] |
The last n log lines (15 by default, 100 at most). |
supermdt hello |
Re-reads the key and asks SuperMDT for the settings again. |
supermdt resync |
Sends all players and all positions again; reads and sends right away the vehicles, homes and licenses of every connected character (even unchanged) and rescans weapon inventories. |
Every in-game command and key
Section titled “Every in-game command and key”A summary of what the bridge adds in game, with the out-of-the-box settings. Each player
changes each key in Settings › Key Bindings › FiveM (under the label shown, in the
Config.Locale language); the player’s choice wins from then on. An action with no default
key can still be bound.
| Command | What it does | Default key (QBCore, Qbox) | On ESX | Setting |
|---|---|---|---|---|
/mdt |
Open or close the tablet (“Open or close the SuperMDT tablet”) | F6 | F4 | Config.Tablet.command, key |
/dispatchrapide |
Show or hide the quick dispatch; /dispatchrapide position opens the HUD layout |
F7 | none | Config.QuickDispatch.command, key |
supermdt_status_1 to _9 |
Set the service’s n-th status from the quick dispatch | none (only those in statusKeys) |
none | Config.QuickDispatch.statusKeys |
supermdt_menu |
Open the SuperMDT menu (“SuperMDT menu”) | F9 | none | Config.Menu.key |
/mdthud (supermdt_layout) |
Open the HUD layout | none | none | Config.Menu.layoutCommand, layoutKey |
/panique (supermdt_panic) |
Trigger the panic button; /panique son mutes or unmutes colleagues’ alerts |
F10 | none | Config.Panic.command, keyEnabled, key |
/supermdt_panic_sound |
Mute or unmute colleagues’ alerts, when /panique is turned off |
— | — | — |
supermdt_waypoint_clear |
Remove the call waypoint (“Remove the SuperMDT GPS waypoint”) without releasing the unit | none | none | Config.Waypoints.clearKey |
supermdt_plate_toggle |
Turn the built-in plate reader on or off | none | none | Config.PlateReader.key |
supermdt_plate_lock_front, supermdt_plate_lock_rear |
Lock or unlock the front or rear camera | none | none | lockFrontKey, lockRearKey |
supermdt_plate_open |
Open the flagged vehicle’s record | Page Up | Page Up | Config.PlateReader.openKey |
/supermdt_plate_sound |
Mute or unmute plate alerts | — | — | — |
/mdtlink <code> |
Link your game account | — | — | supermdt_link_command convar |
/service (any name) |
Go on or off duty (off by default) | — | — | supermdt_duty_command convar |
supermdt_client [debug] |
Diagnostics, in the player’s F8 console (see below) | — | — | — |
The command names are those of the bridge as shipped (/dispatchrapide, /panique): your
server may have renamed them. On ESX, F6, F7, F9 and F10 are already taken by the base
scripts: see Keys on ESX (Config.FrameworkKeys).
In a player’s console (F8)
Section titled “In a player’s console (F8)”supermdt_client shows what the tablet can offer this player: tablet open or not,
in-game photos announced or not (and through which capture resource), quick dispatch
announced or not, and the state of the call waypoint
(supermdt_client debug turns on its traces). It’s the command to ask for when an officer can’t see a button.
Common errors
Section titled “Common errors”| What you see | Likely cause | What to do |
|---|---|---|
| “API address missing” or “Bridge key missing” | Missing or misspelled convar | Check set supermdt_url and set supermdt_key, then restart the resource. |
| “Invalid API address” | Address without https:// (http:// is only accepted for localhost) |
Copy the API address shown in Settings › Game. |
| “Unsupported or missing framework” | The framework starts after the bridge, or isn’t ESX, QBCore or Qbox | Put ensure supermdt-bridge after the framework. |
| “Bridge key refused” | Key revoked, replaced or badly copied | Generate a new key, put it in supermdt_key, then supermdt hello. |
| “Game integration is turned off in SuperMDT” | The Settings › Game switch is off | Turn it on: the bridge retries every 30 seconds on its own (or supermdt hello). |
| “Organisation suspended” | Subscription or organization suspended | Check your organization’s status. |
| “No job is linked to a service” | No linked job | Link your jobs, then supermdt hello. |
| A new feature doesn’t show after an update | No refresh |
refresh, then ensure supermdt-bridge. |
| “Relay: …, connected: no” | Outbound firewall, artifact without Node 22 | supermdt log gives the error code; update the artifacts. |
| “Positions: no” | Live map off, or OneSync off | Turn on the live map in SuperMDT; onesync on. |
| The tablet stays blank | Renamed resource | Keep the supermdt-bridge name. |
| “Rate limit reached” | Too many requests for the organization | The bridge pauses on its own. |
| Settings › Game: “No compatible resource detected” | Script missing, stopped or started after the bridge | ensure that script before the bridge, then supermdt hello. |
Errors specific to account linking, the tablet and each integration are on their own pages.
What the bridge does to stay light
Section titled “What the bridge does to stay light”- At most 5 requests per second to SuperMDT, with a bounded queue; it waits on its own if SuperMDT asks it to slow down, and retries with a growing delay during an outage.
- It never trusts what a player sends: it re-reads everything from the framework, server side. The key never leaves the game server.
- Positions are never stored in SuperMDT’s database: they stay in memory in the live map relay.
game-settings