Usage

Controls, settings, commands, the 3D prop editor, and custom radio layouts.

In-Game Guide

Controls

ButtonFunction
ZNSelect zone
CHBrowse channels
STOpen settings

Channel Operations

ButtonFunction
CONConnect to channel
DSCDisconnect from channel
SCNToggle scanning
SGNToggle channel alert

Push-to-Talk

Hold B (default) to transmit. Release to stop.

Blocked if:

  • The radio is off or not connected
  • The player is dead or swimming
  • Config.talkCheck returns false
  • Another user is already talking (see bonking)

Keybinds

Defaults: B = PTT, F6 = toggle radio. Everything else is unbound by default. All configurable in Config.controls — see Keybinds configuration for the full list.


Settings Menu

Open via the ST button on the radio. Use BTN1 / BTN3 (or the channel knob) to change the highlighted option's value.

SettingDescription
GPSToggle your location blip visibility for other players
EarbudsToggle nearby radio output (3D audio) — hidden when 3D audio is disabled server-side
VC VolVoice volume (0-100)
SFX VolSound effects volume (0-100)
3D VolNearby radio volume (0-100) — hidden when 3D audio is disabled server-side
StyleChange radio model
DISPDisplay theme: Auto, Light, or Dark
MovePositioning mode. CHG activates move mode, RST resets the saved position for this model
MICSelect microphone device
AnimRadio animation — hidden when animations are disabled server-side

For the full settings dialog with channel list, focus-layout toggle, and admin options, see /tradio Command.


Positioning Your Radio

From the on-radio menu: ST > Move > CHG. From the chat command: /tradio > Move Radio.

Once move mode is active:

  • Click and drag to reposition the radio on the screen
  • Scroll wheel to scale the radio between 0.5x and 1.5x
  • Escape or the close button to save and exit

Positions and scale are saved per radio model. Use RST on the ST menu or Reset Position in /tradio to clear the saved position for the current model.

The channel list overlay uses the same drag/scroll flow — trigger it via Move Channel List in /tradio (Reset Channel List restores the default position).


/tradio Command

Opens the full settings dialog. Admins (tlib.admin) see extra options.

Client Settings Menu

Player Settings

SettingDescription
Voice VolumeVoice reception volume
SFX VolumeSound effects volume
3D Audio VolumeNearby radio audio volume
Radio StyleRadio model for the current context (on-foot, vehicle, boat, air)
ThemeAuto, Light, or Dark
GPS BlipsToggle your blip visibility
EarbudsToggle 3D audio from your radio
Separate On-Foot Focus LayoutWhen enabled, save a different radio model for focused vs. unfocused on-foot state (defaults to HandheldUnfocused from admin panel)
Channel ListToggle the floating channel list overlay
Active Talkers OnlyOnly show transmitting users in the channel list
AnimationRadio use animation style (hidden when animations are disabled in admin)
MicrophoneSelect a microphone device (↻ re-enumerates and re-acquires the stream)
Move Radio / Reset PositionEnter move/scale mode for the radio / reset position for the current model
Move Channel List / Reset Channel ListMove/scale the channel list overlay / reset its position

Admin Options

The following options are only visible to players with the tlib.admin ACE permission:

OptionDescription
Set as Default Layout for VehicleSave the current radio model as the default for this context (vehicle spawn code, on-foot, or focused/unfocused on-foot)
Set as Server DefaultsSave current volume settings and radio style as server-wide defaults for new players
3D Prop EditorEdit radio prop positions on vehicles (see 3D Prop Editor)
Admin SettingsOpen the admin panel for server-wide configuration (see Configuration)

3D Prop Editor

Admins with the tlib.admin ACE permission can place the dashboard radio prop per vehicle model via /tradio > 3D Prop Editor. The editor uses a full Three.js transform gizmo — not the 2D drag flow used for the radio HUD.

3D Prop Editor

You must be in the vehicle you are editing. Entering the editor freezes the vehicle and attaches the AFX-1500 prop at its last saved position (or vehicle origin if none).

Camera controls

InputAction
Middle mouse + dragOrbit camera around the prop
Shift + middle mouse + dragPan camera
Scroll wheelZoom the camera in/out (does not resize the prop)

The editor panel also provides on-screen buttons for orbit, pan, zoom, six preset views (front/back/left/right/top/bottom), flip, focus-on-prop, focus-on-vehicle, and a perspective toggle.

Transform gizmo

Drag the coloured arrows (translate) or rings (rotate) on the prop to position and rotate it precisely. Toolbar controls:

ButtonAction
WTranslate mode (move along X/Y/Z)
RRotate mode (rotate around X/Y/Z)
XToggle between world and local coordinate space

The right-side panel exposes numeric X / Y / Z and RX / RY / RZ inputs for pixel-perfect placement.

Save / Cancel / Remove

ButtonAction
SaveSave the new prop position for this vehicle model and broadcast the change to all clients
Cancel (Escape)Discard changes and restore the previous position
RemoveDelete the prop placement for this vehicle model — the radio prop will no longer spawn on this model
Export ConfigCopy the saved placement into another resource's config — useful for script authors who want to ship positions with their vehicle packs

Positions are keyed by vehicle model, so every vehicle of that model uses the same prop placement.


Radio Layouts

The radio automatically switches layout based on the player's current context:

Radio Layouts
ContextDefault Layout
On footATX-8000 (handheld)
On foot, unfocused (optional)ATX-8000H (handheld, minimal)
In vehicleAFX-1500 (mobile)
In aircraftTXDF-9100 (aviation)
In boatAFX-1500G (marine)

Ten radio models ship by default: AFX-1500, AFX-1500G, ARX-4000X, ATX-8000, ATX-8000G, ATX-8000H, ATX-NOVA, TXDF-9100, XPR-6500, and XPR-6500S.

Admins can override defaults per-vehicle-type, per-spawn-code, or per-focus-state via the admin panel or /tradio > Set as Default Layout for Vehicle. When Separate On-Foot Focus Layout is enabled in /tradio, focused and unfocused on-foot layouts are saved independently.


Channel Types

  • Conventional — single shared frequency; everyone connected hears everyone else
  • Trunked — sub-frequencies auto-assigned by location; dispatch still reaches all units via the control frequency

Example

Four units on the same trunked CAR-TO-CAR channel — two at Mission Row, two at Sandy Shores — end up on separate sub-frequencies. Dispatch reaches all four at once.

See Zones & Channels for the schema.


Scanning

Navigate to a channel and press SCN to add it to the scan list (press again to remove). The scan icon appears on the display while scanning is active.

Scanning Interface

Priority: your connected channel wins transmit priority. Among scanned channels, first-heard transmission takes priority over later ones. Transmitting on your primary mutes scan traffic until PTT release.


Channel List

Floating HUD showing who's on your channel. Enable via /tradio > Channel List.

Channel List

Features:

  • Callsign badges colored by the channel's GPS blip color
  • Dispatchers pinned to top with a DSP tag
  • TX indicator (green pulse = transmitting, red = panic)
  • Patch-aware, trunked-aware, scanned-talker-aware (SCAN tag)
  • Auto-aligns content to whichever side of the screen it sits on
  • List grows downward at the top of the screen, upward at the bottom

Settings (in /tradio):

SettingDescription
Channel ListEnable/disable
Active Talkers OnlyHide idle users
Move Channel List / Reset Channel ListPosition + scale / reset to top-right

Header badges: zone/channel name, frequency, P for patched, T for trunked, alert colour when active, flashing PANIC during emergencies.


Emergency Features

Panic Button

Press emergencyBtnKey or the on-radio emergency button. Your GPS blip flashes red for everyone whose NAC ID is in the channel's gps.visibleToNacs. Auto-clears after panicTimeout (default 60 s); press again or have a dispatcher clear it.

Panic Alert

Alerts (SGN Button)

SGN fires Config.alerts[1] on the connected channel (default: SIGNAL 100); press again to clear. Players with tlib.admin or whose NAC ID matches dispatchNacId get the button. Dispatchers can trigger any alert on any channel.


Bonking (Transmission Collision)

Keying up while someone else is already transmitting plays a short bonk tone.

With blockTransmission on, the second PTT is suppressed; with it off, both go through and first-in wins display priority. Double-tap PTT within doubleTapWindow ms forces the second transmission through either way.

Configure in admin panel > Bonking.


Battery & Signal

Battery

Battery shown on the radio as 0–100%. Defaults: charges 0.5%/s in a vehicle, drains 0.1%/s on foot. At 0% the radio powers off. Override via Config.batteryTick in config.lua.

Signal Strength

Signal bars (1–5) reflect proximity to the nearest tower in Config.signalTowerCoordinates. Closer = more bars. The falloff slope is controlled by signalFalloffRate in the admin panel — higher values make bars drop faster as you move away.

Signal strength is purely cosmetic by default — it affects the icon on the radio display but not audio.

When Signal Degradation is enabled (admin panel), low signal also degrades voice audio: the further you are from any tower, the more garbled and dropout-prone your transmissions become. The ceiling is controlled by signalDegradationIntensity (0–100). At full bars, audio is clean; at zero bars, degradation reaches the configured intensity.


3D Audio

When 3D audio is enabled, nearby players hear your radio output (voice, tones, sirens, heli, gunshots) spatially positioned at your location.

When you hear another player in 3D

  • Server has enable3DAudio on
  • The other player has Earbuds OFF
  • You're within 100 m of them (or 200 m if their vehicle is acting as the source — see Vehicle Radio)

You don't need to be on their channel, and your radio doesn't need to be on — anyone nearby can overhear.

Earbuds toggle

Gates your outgoing 3D broadcast. Toggle via ST menu or /tradio.

  • Off — your radio broadcasts in 3D; bystanders can overhear your traffic
  • On — your radio is private; no 3D output from you

Only affects your outgoing broadcast. You still hear other players based on their earbud settings.

What broadcasts

Voice, tones, siren loop (bgSirenCheck), helicopter rotors (from an active heli), and gunshots fired during a transmission.

See 3D Audio configuration for admin setup.


Vehicle Radio Prop

An AFX-1500 dashboard prop with a live channel display. Auto-spawns when you enter a vehicle with a saved prop position (set by an admin via the 3D Prop Editor).

In-Car Radio PropIn-Car Radio Prop Close-Up

Vehicle Radio (3D Audio)

With vehicleRadio3DAudioEnabled on, a player entering a vehicle claims it as a 3D radio source. Inside → the player is the source (100 m). Walk out past vehicle3DActivationDistance m → the vehicle takes over at 200 m range. Walk back → source hands back. Disconnect or leave → ownership releases.

One vehicle, one owner at a time.


Callsign System

With useCallsignSystem on (admin panel), players set a callsign that replaces their game name on radio and in the dispatch panel.

/callsign 2L-319        -- Set
/callsign               -- Clear

Command name is configurable via callsignCommand. Callsigns persist in KVP. Dispatchers can assign them remotely or via the setCallsign server export.


Custom Radio Layouts

Layout-designer reference. Skip this unless you're building a new radio model.

Radio models are subdirectories of client/radios/. Two layout systems are supported:

  • ui.html (recommended) — HTML/CSS with data-hud-* bindings. Previewable in a browser.
  • config.json (legacy) — JSON coordinate layout. Edited in-game via admin debug mode.

If both exist, ui.html wins.

ATX-8000 Layout in Browser DevTools

Files

FileRequiredPurpose
ui.htmlYes (HTML layout)Markup, styles, button hit zones
radio.pngYesLight theme background
radio-dark.pngNoDark theme background (falls back to radio.png)
icons/NoIcon overrides (fall back to default/icons/)
sounds/NoWAV overrides (fall back to default/sounds/)
tones.jsonNoTone overrides (merged with default/tones.json)
config.jsonAlternativeLegacy JSON layout

New folders are auto-discovered — they appear in the Style picker on next radio open.

Loading behaviour

  • <script> tags and on* event handlers are stripped from ui.html — layouts are pure markup + CSS, no JS
  • Relative src=/url() paths are rewritten to /client/radios/<model>/ at runtime
  • The root element gets theme-dark / theme-light classes on theme change
  • Elements with .fit-text auto-scale font size — put data-hud-text on an inner <span>

Root Element

<div class="radio" data-radio-width="300" data-radio-height="406" data-radio-toneset="default">
AttributeDescription
data-radio-widthCanvas width (px)
data-radio-heightCanvas height (px)
data-radio-tonesetTone set (default or custom)

Data Bindings

AttributePurposeExample
data-hud-textSet text contentdata-hud-text="ln01"
data-hud-ledToggle .active from booleandata-hud-led="leds.power"
data-hud-btnClickable hit zonedata-hud-btn="power"
data-hud-showShow when state truthydata-hud-show="scan"
data-hud-hideHide when state truthydata-hud-hide="scan"
data-hud-eqToggle .active when state equals valuedata-hud-eq="signal:3"
data-hud-attrSet a DOM attribute from statedata-hud-attr="battery:data-level"

State Keys

KeyTypeDescription
ln01, ln02stringDisplay lines 1 and 2
btn01btn05stringSoft button labels (ZN, CH, ST, CON, DSC, SCN, SGN, ...)
timestringClock
leds.power / leds.connected / leds.transmitbooleanLED states
signalstring"1""5" or "hidden"
batterystring"0""5", "c" (charging), or "hidden"
gps, scan, trunk, warnbooleanStatus icons
alertVisible, alertMessageboolean / stringAlert overlay
themestring"Dark" or "Light"

Button Keys

Use data-hud-btn="keyName" for hit zones. Include only what your layout uses.

Core: power, close, home, emergency Navigation: btnUp/up, btnDown/down, btnLeft, btnRight, chUp/channelUp, chDwn/channelDown, zoneUp, zoneDown

Soft buttons (context per page):

KeyMainZonesChannelsSettings
btn1Open ZonesCONDecrease value
btn2Open ChannelsSelect zoneDSC
btn3Open SettingsSCN/SGN/CTIncrease value
btn4

Setting shortcutssetting:<name>:<direction>:

KeyAction
setting:volume:up/downVoice volume
setting:tonevolume:up/downSFX volume
setting:3dvolume:up/down3D audio volume
setting:style:up/downRadio model

Theme CSS

The root element receives theme-dark / theme-light:

.theme-dark  .display-line { color: #fff; }
.theme-light .display-line { color: #464d49; }

.dark-only  { display: none; }
.light-only { display: block; }
.theme-dark .dark-only  { display: block; }
.theme-dark .light-only { display: none; }

Browser Preview & Devtools

<script src="../devtools.js"></script> near the bottom of ui.html loads a preview overlay when opened in a browser — in-game it's stripped by the sanitizer.

The devtools panel provides:

  • Toggle LEDs / signal / battery / icons / alert banner
  • Drag-and-resize data-hud-btn hit zones, export CSS
  • Theme toggle, scale preview

Hardcoded preview defaults ("Statewide", "DISP", "ZN"/"CH"/"ST", 14:30) live in HtmlRadioLayout.tsx.

For legacy JSON layouts, enable the in-game debug mode from the admin panel to drag and resize hit zones.

On this page

Need help?

Ask on Discord