Radar State
Details
The radar exposes its live state to other resources through exports (pull) and an event (push). Use this to drive external HUDs, MDTs, analytics, or any logic that needs to react to the speed radar.
All radar state is client-side and local to the player running the radar.
Exports
The following client exports return the current state. See Client exports for their signatures.
getRadarState()— full snapshot (RadarStateExport)isRadarEnabled()—booleanisRadarTransmitting()—booleangetRadarAntennas()—{ front: boolean, rear: boolean }getRadarPing()—{ front: RadarPingSide, rear: RadarPingSide }
Example
local state = exports.fd_dispatch:getRadarState()
if state.transmitting then
print(('Front: %d (%s)'):format(state.ping.front.speed, state.ping.front.plate))
print(('Rear: %d (%s)'):format(state.ping.rear.speed, state.ping.rear.plate))
end State payload
---@class RadarPingSide
---@field speed number
---@field plate string
---@class RadarStateExport
---@field enabled boolean
---@field operating boolean
---@field transmitting boolean
---@field antennas { front: boolean, rear: boolean }
---@field fastLimit number
---@field ping { front: RadarPingSide, rear: RadarPingSide }
---@field locked LockedRadarState | false Detailed types information
enabled boolean Whether the radar device is toggled on.
operating boolean Whether the radar HUD is shown and the reading loop is running (the player is in a valid seat/vehicle with the radar active).
transmitting boolean true when the radar is operating, enabled and at least one antenna is active.
antennas { front: boolean, rear: boolean } Per-antenna transmit (XMT) state.
fastLimit number The configured fast-limit speed threshold.
ping { front: RadarPingSide, rear: RadarPingSide } The latest detected speed and plate for each antenna. Values are 0 / empty string
when nothing is being read.
locked LockedRadarState | false The currently locked reading for the vehicle, or false when nothing is locked.
Events
fd_dispatch:radarStateChanged
Triggered on the client whenever the radar state changes — when the radar is turned
on/off, the device is toggled, or a front/rear antenna is toggled. The handler
receives the same payload as getRadarState().
AddEventHandler('fd_dispatch:radarStateChanged', function(state)
print('Radar transmitting:', state.transmitting)
end) fd_dispatch:vehiclePlateHit
Triggered on the client each time an antenna picks up a new plate (the live speed ping). Useful for reacting to individual readings without polling.
---@param plate string
---@param side 'front' | 'rear'
---@param speed number
AddEventHandler('fd_dispatch:vehiclePlateHit', function(plate, side, speed)
print(('[%s] %s @ %d'):format(side, plate, speed))
end)