Skip to content

Reference

tDetector commands, keybinds, KVP keys, permissions, file layout, and what it does and does not expose to other resources.

Look-up facts. For the config file see Configuration; for wiring a radar see Integrating any radar.

Commands

CommandArgumentsDescription
/tdetectornoneOpen the settings dialog. Subject to Config.access.
/tdetectoreditnoneOpen the 3D prop editor. Needs tlib.admin and a vehicle.
/tDetLockoutsnonePrint every stored GPS lockout to the F8 console, with band, coordinates and match radius.
/tDetLockoutsclearForget every stored lockout.
/tDetSourcesnonePrint what each Config.radarResources entry is returning — see Diagnosing it.
/tDetSourcestest12-second synthetic sweep on your own display. Detector must be on.
tdetector_diagnoneServer console. Version, tLib version and floor, every Config value in effect, every dependency and radar resource, and the startup config-check messages. Pre-redacted.

A permission change takes effect without a reconnect. tdetector_diag is ACE-gated; grant it with add_ace group.admin command.tdetector_diag allow.

/tdet, /tDet, /tdetmute, /tdetdim and /tdetmark no longer exist, with no aliases. tDetMute, tDetDim and tDetMark remain registered only so FiveM has a name to store a keybind against.

Keybinds

Bindable under Settings → Key Bindings → FiveM. None ships with a default key.

Bound commandBinding label
tDetMutetDetector: Mute alerts (unbound — assign a key in GTA keybinds menu)
tDetDimtDetector: Dim display (unbound — assign a key in GTA keybinds menu)
tDetMarktDetector: Mark location (unbound — assign a key in GTA keybinds menu)

The trailing note disappears once a key is assigned.

Permissions

PermissionChecked whenGates
Config.access (default { mode = "everyone" })every /tdetector and every radar-list pushWhether tDetector works at all
tlib.admin / tlib.superadminalwaysThe Marketplace and Sounds tabs, and every sound-mapping write
ini
add_ace group.mechanic tdetector.use allow
add_principal identifier.license:xxxxxxxx group.mechanic

KVP keys

Per-player, stored on the client against the player's identifier.

KeyTypeDefaultStores
tdet_hud_layoutstringRDX-8000Selected skin folder name
tdet_hud_visiblebooleantrueWhether the HUD is drawn
tdet_speed_unitstringConfig.speedUnitmph or kmh. A stored kph is read as kmh and rewritten next time the player changes it
tdet_sensitivitystringautoauto, highway or city
tdet_lockoutsstringemptyGPS lockouts, as x,y,band;x,y,band;…. Malformed records dropped on load.

MUTE and DIM are not persisted. Both clear when you next power the detector on.

What tDetector exposes to other resources

No exports. The data flows the other way: a radar tells tDetector it is transmitting.

It writes one state bag: tdetDevice, on the vehicle entity, for the cabin relay. It is absent unless the detector is on, the vehicle has a prop, and somebody else is aboard.

Sound slots

SlotPlays forShips
BLIPThe generic alert, and any band with no tone of its ownblip.wav
KA_BANDKa — urgent double brap, 1.58 kHzka_band.wav
K_BANDK — raspier beep, 1.08 kHzk_band.wav
X_BANDX — plain low beep, 720 Hzx_band.wav
LASER_BANDLidar — hard gated buzz, 2.15 kHzlaser_band.wav
BOGEYA second threat joining — rising chirpbogey.wav
GPS_CONNECTEDNothing — see belowgps_connected.wav

Every slot ships filled, and an unassigned slot falls back to BLIP — except BOGEY, which has no fallback and stays silent until you assign one.

Sounds are shared across every layout, not bundled per skin. Drop a .wav into layouts/sounds/: a file named after its slot is picked up on the next start, anything else is mapped in /tdetector → Sounds.

Version check

On start, tDetector asks timmygstudios.com whether a newer version exists and prints a banner in the server console. It sends the version string and the per-install id — a random 25-character value tLib keeps in its own data.json, sent as x-install-id. No server name, no player data, no account identifier, and the id goes with every update check whether or not tlib_telemetry is enabled.

File layout

PathPurpose
config.luaEverything in Configuration
data.jsonAuto-created. Sound mappings and prop placements.
shared/sh_config_check.luaValidates config.lua, after every other shared script
server/Version banner, layout discovery and the access gate, data.json and prop persistence, radar validation and per-player push, the QBCore item, tdetector_diag, and the world-audio bus
client/HUD and NUI, radar adapters, false alerts and lockouts, the scan loop, the /tdetector dialog, the diagnostics commands, the 3D prop and its screen, and the cabin relay
client/screen.htmlThe DUI page on the prop's glass. Not a layout — its own browser.
client/ui/Built NUI assets. Do not edit.
client/web/NUI source (SolidJS). Build with bun run build.
bridge/tdetector_bridge/Not loaded. A template you copy out — see the bridge resource.
layouts/HUD skins. A folder is a skin only with a module.json declaring "kind": "layout" — see Layouts.

Next steps

Still stuck? Support can answer it directly.

Was this page helpful?