Skip to content

Configuration

Every option in tRadar's config.lua, with its type and default — access, beam, band, self-test, calibration, the tuning fork, and the plate reader.

Everything lives in config.lua, outside escrow. Edit the file, restart the resource. There is no database, no convar and no in-game admin panel for server settings.

Two more files sit outside escrow with it: server/sv_access.lua, where a framework tLib does not already resolve is taught to answer, and layouts/, which is plain HTML and PNG.

The four most servers change

OptionWhy
Config.accessDefaults to mode = "everyone". Set a real mode on a live server
Config.bandka is every modern frontline gun. x and k are older units, and the doppler audio differs
Config.plateReaderEnabledOff by default. Turn it on for ALPR
Config.maxRange150 m. Raise it if the unit feels blind, lower it if it feels psychic

Full reference

Access

OptionTypeDefaultWhat it does
Config.accesstablesee config.luaWho may run /tradar, as one block: mode (everyone, ace, job, item, custom, or a list of them), plus ace, job (a job-name-to-minimum-grade map), item/count and custom. Six frameworks and nine inventories resolve out of the box, as independent choices.
Config.requireVehiclebooleantrueRequire the player to be in a vehicle. The unit is dash-mounted and reads patrol speed off the car.
Config.vehicleClassesnumber[] | nilnilRestrict to these GetVehicleClass ids on top of the access mode. nil allows any vehicle; { 18 } is emergency only.

Display

OptionTypeDefaultWhat it does
Config.speedUnitstring: mph | kmh"mph"The server's starting unit. Players change their own and it is remembered.
Config.defaultRadarLayoutstring"KBX-2200"The head a player starts with. A missing name falls back to the first installed radar skin.
Config.defaultPlateLayoutstring"PRX-400"The plate-reader skin a player starts with.
Config.defaultRemoteLayoutstring"RCX-150"The remote skin a player starts with.
Config.plateReaderEnabledbooleanfalseWhether the plate reader surface exists at all. Off by default — it is a second window on screen.
Config.remoteEnabledbooleantrueWhether the handheld remote exists. It is only drawn in keypad mode.
Config.dopplerAudiobooleanfalseWhether the continuous speed tone starts on. Off by default; each player has their own Doppler Audio tickbox in /tradar, so this is the starting value and not a lock. Does not affect what a bystander hears — that is audioRange.
Config.defaultVolumenumber, 0–10.5Starting level for the doppler and lock tones, 0.0–1.0. Players change their own.

Beam

OptionTypeDefaultWhat it does
Config.maxRangenumber150.0Metres the unit can clock an ordinary car. Also the range it reports to detectors.
Config.minPlayerRangenumber50.0Floor on the player's own beam-range slider, in metres. maxRange is its ceiling.
Config.coneAnglenumber6.0Beam HALF-angle in degrees, off the antenna axis. A 12–15° wide antenna is 6–7.5° here.
Config.rangeFactorMaxnumber, 1 or more2.0How far past maxRange the largest vehicle still reads, as a multiple. 1.0 means nothing out-reaches a car.
Config.targetHoldMsnumber400How long a lost reading stays on the glass before the window blanks.

Band

OptionTypeDefaultWhat it does
Config.bandstring: x | k | ka"ka"The band on the air — x (10.525 GHz), k (24.150), or ka (34.700). Sets the doppler audio and what detectors hear.
Config.frequencynumber | nilnilExact frequency in GHz, overriding the band default. nil uses the band's own.
Config.layoutBandstablesee config.luaPer-faceplate band overrides, so one server can ship a Ka head and a K head.
Config.instantOnWindowMsnumber4000How long the transmitter may be up and still be reported to a detector as instant-on rather than constant-on.

Speed window

OptionTypeDefaultWhat it does
Config.minSpeedKmhnumber8.0Below this, the unit shows nothing rather than a number — the doppler shift is down in the clutter.
Config.maxSpeedKmhnumber320.0Above this, the unit shows nothing rather than a number.

Modes

OptionTypeDefaultWhat it does
Config.stationaryMaxSpeednumber3.0How fast the patrol car may move in stationary mode before the unit stops reading entirely.

Windows and alerts

OptionTypeDefaultWhat it does
Config.fastThresholdnumber3.0How much quicker than the tracked target a vehicle must be before the FAST window lights, in display units.
Config.fastLimitMaxnumber200Ceiling on the auto-lock limit a player may dial in. 0 removes auto-lock and all four of its controls — the arm and the limit, on Quick and on Unit alike.
Config.rearAlertMarginnumber10.0How much faster than the patrol car same-lane traffic must be overtaking before the rear alert fires.
Config.patrolBlankBelownumber0.0A patrol speed below this is not shown at all.

Self-test

OptionTypeDefaultWhat it does
Config.selfTestMsnumber900How long one check takes. The first 60% of it drives every window to 888.
Config.selfTestIntervalMsnumber900000How often a powered unit re-checks itself. 15 minutes by default.
Config.selfTestFailChancenumber, 0–10.0Chance a scheduled check fails, 0.0–1.0. A failure latches: no speeds until a later check passes.

What the unit gets wrong

OptionTypeDefaultWhat it does
Config.patrolShadowPullnumber, 0–10.2How hard an obstructing lorry drags the ground channel, as a fraction of the closing rate. Ships on; 0 disables it.
Config.patrolShadowMaxErrornumber10.0Ceiling on the error that shadowing can cause, in display units.
Config.calibrationHighMphnumber0.0Top of the tolerance window a unit draws its fixed offset from at power-up. 0 is an exact instrument.
Config.calibrationLowMphnumber0.0Bottom of that window. The published tolerance for real equipment is +1/−2 mph.

The sample

OptionTypeDefaultWhat it does
Config.sampleMsnumber100How long one reading integrates. A doppler counter counts over a window, it does not sample an instant.
Config.accuracyMphnumber1.0How far a reading may smear across that window before the unit refuses it rather than printing a number.

Tuning fork

OptionTypeDefaultWhat it does
Config.forkHznumber | nilnilThe fork the operator carries, in Hz. nil issues the one matching this band — the ordinary case.
Config.forkMphnumber65.0What the issued fork is stamped with. Display only; the reading comes from the frequency.
Config.forkRingMsnumber4000How long a struck fork rings.

Interference (RFI)

OptionTypeDefaultWhat it does
Config.rfiEnabledbooleantrueWhether the unit carries an RFI sensor. A conforming radar inhibits the speed display while interference is present, rather than showing a number that may not have come off a car. The transmitter stays up; a locked window and the patrol window both survive.
Config.rfiRangenumber, 0 or more60.0Metres. How close an interfering source has to be.
Config.rfiHoldMsnumber, 0 or more1500How long one detection keeps the display inhibited.
Config.rfiFromRadarbooleantrueAnother radar on the air nearby interferes. The documented case, and the one officers are trained around: two units working the same stretch.
Config.rfiSameBandOnlybooleantrueOnly a unit on your own band interferes. True is the honest physics — a receiver's passband is tuned to its band, so a Ka head is not inhibited by an X one.
Config.rfiFromOwnSirenbooleanfalseYour own siren interferes. Real but historic: strobe supplies and high-power two-way transmitters troubled older installs, and a modern conforming head is hardened against the equipment on its own roof. Note that sirens run for most of a pursuit.
Config.rfiFromNearbySirenbooleanfalseA nearby vehicle's siren interferes. Same reasoning as rfiFromOwnSiren.

Plate reader

OptionTypeDefaultWhat it does
Config.plateRangenumber30.0Metres. Plates are read off a much shorter ray than speeds are.
Config.boloWebhookstring""Discord webhook for BOLO activity — a plate added, removed, or seen by a reader. Posted as a Components v2 message. Empty disables it; anything that is not a https://discord.com/api/webhooks/... URL is treated as unset and reported at startup.

Integrations

OptionTypeDefaultWhat it does
Config.integrationstablesee config.luaReporting plate reads to the CAD this server runs, as one block: cad.enabled, cad.provider (nil to use whichever supported CAD is running, or one of lacore, sonoran, imperial, wasabi, tkmdt to pin it), cad.npcFilter, cad.queryOnRead, cad.queryOnLock, cad.minIntervalMs, cad.answerTtlMs, cad.timeoutMs and cad.notifyOfficer. Off by default, and it holds no credential — every path is an export into the CAD's own resource.

The 3D counting unit

OptionTypeDefaultWhat it does
Config.screenRangenumber, 0 or more8.0Metres within which another vehicle's counting unit is still drawn on the prop. A READING distance, much shorter than any audio range; the vehicle you are aboard is exempt from it.
Config.audioRangenumber, 1 or more32.0Metres within which the unit is HEARD by anyone near the car — lock tones, the rear-traffic alert and the doppler, from the direction of the vehicle. Must comfortably exceed screenRange: you should hear a unit well before you are close enough to read it. The falloff is solved from this number, so gain at exactly this distance is −50.5 dB whatever you set it to; tLib caps it at 250.
Config.vehicleProptablesee config.luaThe radar prop on the dash: which models are offered, which is the default, and where it sits on each vehicle. Placements saved in-game win over this table.

Options that mislead

OptionWhat to know
Config.access.modeA list is an OR: { "ace", "job" } passes if either does. custom is a function taking a player id. Every failure denies — an absent framework, an unset ace, a custom that throws
Config.coneAngleA half-angle. Antennas quoted 12–15° wide are 6–7.5° here. Put the width in and the unit reads cars a lane and a half over
Config.bandChanges the doppler audio as well as what a detector listens for
Config.calibration*Both 0, so a unit reads true. Open the window and heads drift at every power-up
Config.patrolShadowPullLive by default. The tell is the patrol window sagging below the speedometer. 0 disables it
Config.rangeFactorMaxBoth ways: 2.0 clocks a lorry twice as far out and loses a motorcycle inside the quoted range
Config.maxRangeBounded by what the game streams, a few hundred metres. Past that, readings depend on how busy the server is
Config.fastThreshold, Config.targetHoldMsAnti-flicker margins. Lower either and a window flickers

Startup validation

tRadar validates config.lua at boot and prints every problem at once, naming the key, what was expected, what was found, and the fix.

  • A deleted key takes its shipped default. Cut the file down to what you changed.
  • A misspelled key is a warning naming the key you meant.
  • A value out of range is an error, never quietly replaced. The radar refuses to deploy until you fix it.

Settings that are gone

An update leaves your config.lua in place, so a file predating the Config.access block still carries the three flat keys. Nothing reads them.

GoneReplaced byWhat to edit
Config.accessModeConfig.access.modeThe same word in mode, inside the block
Config.acePermissionConfig.access.aceCopy the ace name into ace, set mode = "ace"
Config.jobs = { "police" }Config.access.jobA name-to-minimum-grade map: job = { police = 0 }. 0 accepts any grade

Event names

The PascalCase tRadar: spellings are removed in 1.0.0, and a wrong FiveM event name raises nothing. Lowercase the tRadar: in your own resources: tradar:plateRead, tradar:boloAdd, tradar:boloRemove, tradar:boloHit, tradar:boloRequest, tradar:boloList, tradar:trace:write, tradar:trace:close.

Missing tradar:plateRead is the expensive one: your CAD is never asked about plates, so every read shows no flag. The server exports addBoloPlate, removeBoloPlate and getBoloPlates are unchanged.

tradar_diag

Prints versions, the config verdict, the live access mode, the device's tuning, the installed layouts and whether tDetector is running, to the server console. Safe to paste into a support thread.

cfg
add_ace group.admin command.tradar_diag allow

Next

  • Usage — what the operator does with all of this.
  • Layouts — the faceplates and Config.layoutBands.

Still stuck? Support can answer it directly.

Was this page helpful?