Skip to content

Usage

Working Tommy's Radio — in-game controls, channel features, the dispatch panel, 911 calls, radio models, animations and the Stream Deck plugin.

How to work the radio, the dispatch panel and the 911 line. Everything an admin configures is in Configuration.

Quick reference

  1. F6 opens the radio; click the power knob to switch it on.
  2. The radio starts on a channel. Hold B to talk.
  3. Hover any button to see its full name.
  4. Change channel: Zone or Chan, arrows, Sel.
  5. ◀ ▶ means more softkeys — page with the arrows.
  6. Scan toggles scanning; ScnL edits the list.
  7. Emergency: hold the orange button for a second. Hold again to clear.
  8. Volume, earbuds and model: Optn, or /tradio.
  9. Escape returns control to the game; F6 hides the radio.
  10. /tradio → Quick is the radio without its screen.

The in-game radio

F6 opens, B transmits. Players rebind both in FiveM → Settings → Key Bindings; admins set defaults in Settings → Controls.

Escape returns control to the game and the radio to Home, leaving it visible. /tradio → Behavior → Hide radio when releasing focus hides it too. Hiding never powers off the radio or cancels an emergency.

On-radio buttons

Every layout works the same way; only the softkey count differs. Changing layout never changes your channel. Top-view layouts have no menus — see Top view.

Home screen

The Home row shows as many entries as the radio has softkeys. ◀ ▶ appears when there are more; the arrows page through and wrap, and unusable entries are skipped.

RadioPage 1Page 2Page 3Page 4
3 softkeysZnUp · Zone · ZnDnChan · Scan · NuisScnL · Optn · LocInfo · Alrt
4 softkeysZnUp · Zone · ZnDn · ChanScan · Nuis · ScnL · OptnLoc · Info · Alrt—
5 softkeysZnUp · Zone · ZnDn · Chan · ScanNuis · ScnL · Optn · Loc · InfoAlrt—
KeyDoes
ZnUp / ZnDnSteps zone without a menu
Zone / ChanOpens Select Zone / Select Chan
ScanToggles scanning; hold for Edit Scan. See Scanning
NuisNuisance-deletes the scanned channel you are hearing
ScnLOpens Edit Scan
LocLocation sharing on or off
InfoOpens Info → Radio Info
OptnOpens Options
AlrtSupervisors, conventional: fires the first alert on your channel
Ctrl / TrnkSupervisors, trunked: control frequency or back

Supervisor means the tlib.admin ACE or a codeplug with Supervisor Access. Admins reprogram either bank — see Home softkey banks.

Select Zone and Select Chan

Sel is the leftmost softkey, Exit the rightmost. The highlighted row is a preview: • marks your operating zone or channel, S a scanned channel, R a scan-only channel.

  • Arrows and the knob move the highlight. Browsing never retunes the radio
  • Sel is the only thing that changes channel. A refusal says why: Scan only, No TX chan or Invalid chan
  • PTT from any menu returns Home and transmits on your channel

On Home the knobs change channel immediately; in a menu they only move the highlight. The display reads TX?: awaiting confirmation, TX: confirmed, RX: for your channel, SC: for a scanned one.

Indicators

Some layouts have no status light.

IndicatorMeaning
Green status lightStartup SELFTEST
Red status lightConfirmed transmission. Portables also blink for low battery and your emergency; mobile heads have no emergency light
Yellow status lightConventional reception. Trunked reception leaves it dark
LCD TX? / TX / RXPending stays TX?. Confirmed uses antenna arrows or text
LCD no-service iconCrossed antenna; hover for No network. The radio lost its server connection, not RF
Orange messageEmergency (yours), No emergency (paused), Emergency plus a unit name, or Man down. Never for your own Silent
Red messageLow battery, or Trnk timeout with the talkgroup name
|→| iconThe channel is Direct. It uses the trunked icon's position
Scan iconScan is on, and stays lit while scanning pauses
Scan priority dotBlinking for Priority 1, steady for Priority 2

Messages render differently per model: portables show a strip below the channel, mobile heads and the fixed vehicle screen tint and read Emergency · 2L-319 on the top line, the KVD-880 shows green text, and top view tints the glass.

On a trunked channel, wait for the talk-permit tone before speaking. Two things end your transmission early. Keying over someone gets the bonk and TX denied. Holding past the transmit time-out warns four seconds out, then Time out.

Options

Optn opens your per-player preferences. Options appear only when relevant.

OptionNotes
EarbudsToggles in place. Only when 3D audio is enabled server-side
Voice vol / Tone volChanges as you adjust
3D volOnly when 3D audio is enabled
StyleRadio model, from your codeplug's allowed models. Applied on Ok
DispAuto, Light or Dark palette
LightLCD brightness: Normal, Dim, Low
MicMicrophone device. Applied on Ok
AnimRadio animation. Applied on Ok
Scan listLoads a codeplug list into Personal. It does not turn scanning on
Move radio / Reset positionRepositions or resets, then returns Home

On the edit screen + raises, − lowers, Ok keeps the value, and Cncl, Home or PTT restores it. Three-softkey radios have no Cncl.

Light and Dimmer

The sun button and the Light / Dimmer keybind do different things per model.

ControlLayoutsShort pressHold (~0.6 s)
DimmerHLX-120, HLX-120G, ZTR-540, ZTR-540SSteps Normal → Dim → LowSwitches day/night and saves it, so Auto becomes explicit
LightQRX-720, QRX-720G, DRX-330, QRX-760, QRX-720HToggles Normal and LowNothing
noneKVD-880——

The keybind is unbound by default. Brightness affects the LCD only and persists. Where a volume knob supports it, scroll to adjust volume.

Info / Radio Info

Info → Radio Info shows the server-assigned Unit ID — not your Agency ID, callsign or player number. It reads Not Assigned when there is no valid identity.

Clock

The clock cannot be set on the radio. Settings → General → Radio clock time picks the source: Game world (no date) or Player's computer. Codeplugs set the format under Codeplugs → Display; the optional Clck softkey opens a read-only Clock screen.

A codeplug can put the radio back on Home after a period with no key presses, with a short tone. It ships off. Anything you had not confirmed is discarded, except Edit Scan changes.

Top view

The QRX-720H top view is the handheld from above, with no menus and no softkeys.

  • Status row: signal bars with the TX/RX glyph, scan, trunked or Direct, battery. No GPS icon, no clock
  • Two lines: zone, then channel. Temporary messages cover the channel line
  • Zone letter: Basic is A–F for zones 1–6, Enhanced A–Y, one per three zones
  • Lighting: the glass tints orange for an emergency or Man Down, red for a critical alert

The /tradio settings dialog

/tradio opens the per-player settings dialog; Radio Info and Edit Scan stay on the radio. It opens on Quick: the radio without its screen. Dispatch Panel, Admin Panel and 3D Prop Editor are entries in the sidebar, each shown only to a player the server has granted it.

TabOptions
SoundsVoice / SFX / 3D volume · Earbuds · Tone Ducking · Input → Microphone
Sounds → AlertsVoice Announcements, Man Down Alarm, Auto Transmit — things the radio does untouched. All codeplug-gated
AppearanceRadio Style (per context) · Theme · Animation · Move Radio / Reset Position
BehaviorHide radio when releasing focus · Separate On-Foot Focus Layout · GPS Blips · Channel list · Zones → Geo Auto-Switch, plus a checkbox per zone
AdvancedScan Lists · Receive Sound / P25 Receive EQ
FeedbackReaches TIMMYG Studios, not your server's staff, and sends nothing identifying you. Last in the sidebar, as in every t* resource

Channel features

Scanning

Scan on/off and the scan list are separate: turning scan off keeps the list.

Which list you scan. The radio scans the list your codeplug assigns to the channel you are on, or your Personal list where it assigns none.

Press Scan on Home to toggle scanning. With no list you get No scan list; with nothing to hear, List empty. Scan on survives a power cycle.

Edit Scan. Press ScnL, or hold Scan. A filled dot marks Priority 1, hollow Priority 2.

KeyDoes
SelAdds the channel, then cycles non-priority → Priority 2 → Priority 1. A priority moves off whichever channel had it
DelRemoves it from the list
RclJumps to the next channel in the list
HomeLeaves. Changes take effect as you press

How it sounds. The radio locks onto one scanned channel at a time, whichever keyed first. Priority 1 interrupts anything, Priority 2 interrupts non-priority, equal priorities never interrupt each other. It parks for the hang time after a channel goes quiet, and your own channel beats all of them.

Which channel PTT uses is set per list. Selected channel (the default) always uses the channel you selected. Talkback transmits on the channel the display shows, bonking on a scan-only one; emergency, hot mic and 911 never use it.

Nuisance delete. Press Nuis while stopped on an unwanted channel. Priority channels and your transmit channel are protected, and the deletion lasts until scanning restarts.

A Stream Deck Toggle Scan key or the addListeningChannel export edits the current channel's list and turns scan on. Scan state saves per codeplug and per server.

Using a scanner

A scanner is a different device, not a radio with scanning switched on. It is receive-only — there is no PTT and the server refuses one — and it is handed out as a codeplug, so you either have one or you do not. Servers usually attach it to an item; see Scanner.

The shipped model is the SWX-250, a portable with three soft keys and no keypad. Its Home page is the scan controls themselves rather than a menu, because a scanner has no selected channel to change and no scan list of its own to edit:

KeyDoes
SysFreezes the sweep on the system you are hearing. Press again to release
ChanFreezes on the channel instead. Pressing one level while the other is held moves the hold rather than releasing it
AvdAvoids the channel you are hearing: once temporary, twice permanent, a third time clears it

The display reads Scanning while it sweeps, shows the system and channel it stops on, and carries HOLD and AVD in the status row while either is in force. Nothing to Scan means every system is avoided or none is in reach — it is not an error.

Avoid only works on something you are actually hearing. Press it while the scanner is still sweeping and you get a bonk and Nothing heard, rather than silently avoiding whatever happened to be on screen. A call you have just avoided stays on screen until it ends, so that "press twice for permanent" is one gesture instead of two that need re-aiming.

Temporary avoids clear when the scanner is powered off. Permanent ones do not — clear those with a third press. That is how real scanners behave, so the habit carries over.

Channel list overlay

Enable it in /tradio → Behavior → Channel List: a floating roster of your channel, aware of patches, trunking and scan traffic. Dispatchers carry DSP; units in emergency highlight red. Header badges show zone, channel, frequency, P patched, T trunked, PANIC.

Emergency

What the orange button does depends on the emergency profile your codeplug assigns the channel — see Emergency profiles.

Starting. Hold the orange button, or the Emergency keybind, for the codeplug's hold time — one second by default. A short click shows Hold for emergency. A No emergency channel gives a low reject tone.

Ending. Hold the button again for about a second. A dispatcher can clear it, and powering off ends it — unless the codeplug sets Keep radio on during emergency.

ModeWhat happens
AlarmAlarms dispatch. Ends on acknowledgment (Ack received), exhausted retries, or PTT
CallTrunked only. You can key over a busy channel, never over another unit in emergency. Reported on your first PTT
Alarm + CallThe alarm, then the call on acknowledgment, exhausted retries, or PTT. A conventional channel given a Call profile runs as this
SilentYour radio shows and plays nothing; dispatch still sees it. Other field radios are not told

A Tactical profile keeps you where you are; a Revert profile moves you to the programmed channel and back when it ends. The emergency follows you across channels, pausing with No emergency and a repeating low tone on a channel that has none.

Hot mic. A profile can key your microphone for up to 120 seconds, on the first emergency transmission only. A player who turns Auto Transmit off is never keyed up automatically.

What others see. Units on your channel see Emergency with your name and your blip flashes — except on Silent. Dispatch gets an ACK button per unit, which stops its alarm tone.

Safety limits. Panic Alert Timeout (60 s) auto-clears an emergency for a crashed or AFK unit; 0 means manual only. Panic Alert Cooldown (15 s) is the minimum wait before raising another there.

Man down

Man down raises the emergency for an officer who has stopped responding — the one feature that does so without anybody pressing a key. It ships off. Settings → General → Man-Down by Default sets the starting value; /tradio → Sounds → Man Down Alarm is the per-player choice and always wins. Codeplugs → Features → Man Down off is a hard block for that department.

The clock runs only while the radio is on and connected. Moving, transmitting or looking around resets it.

StageWhenWhat happens
Pre-alertWhile there is no activityNothing visible. Any activity restarts it
Post-alertAfter 45 s — 10 s if down or ragdolledA tone every 2.5 s, an orange Man down message, an on-screen banner, and a Clr softkey
CancelAny time in the post-alertMove, look around or key up. Clr stays quiet until you move
Emergency20 s after the post-alert — 15 s if down or ragdolledRaises the channel's programmed emergency, or nothing on a No emergency channel

The 45 s and 20 s delays are Warning Delay and Emergency Delay in Settings → General; a codeplug can override both. The 10 s and 15 s thresholds always apply.

Callsigns

A callsign replaces your character name on radio displays and the dispatch panel.

/callsign 2L-319   -- set
/callsign          -- show current
/callsign clear    -- remove

Rename the command in Settings → General. Set sets tlib_community_id "your-unique-id" in server.cfg so callsigns do not bleed between servers.

Battery and signal

Battery charges 0.5%/s in any vehicle and drains 0.1%/s on foot: about 3 minutes to full, 17 to empty. Low battery is warning-only — at 0% the radio stays powered and connected, chirping under 50% and more often under 30%. Vehicle-mounted models show no battery icon.

Signal bars (1–5) reflect distance from the nearest signal tower, but position matters too: indoors costs signal, a tunnel most, a car body a little, an aircraft gains reach.

With Signal Degradation on — it ships off — weak signal narrows the band, lowers the volume, coarsens the audio and inserts brief dropouts.

BarsAt default settings
5Clean — no degradation
4Clean — no degradation
3First noticeable: thinned and muffled, roughly 350 Hz – 2.45 kHz
2Clearly degraded — telephone-tight, artifacts, occasional dropouts
1Nearly unusable — extreme filtering, heavy dropouts, below half volume

Most players stay between 3 and 5 bars all session. To make degradation noticeable, raise Falloff Rate or leave gaps between towers — Degradation Intensity does nothing on full bars. The weaker of the two signals applies.

Direct channels

A conventional channel can be Direct (simplex): radio to radio, no repeater. The LCD shows a |→| icon.

  • You hear only units close enough to you. Default range is 1500 m, less through buildings
  • Channel busy is your own radio's view. Another unit can be transmitting elsewhere
  • Signal bars show what you are receiving, not coverage
  • Dispatch may not be there — only if the channel has a base radio
  • Direct channels are never trunked, patched or in an announcement group

Range and obstruction are set per channel — see Direct / simplex channels.

3D audio

These are two different switches with two different scopes. Enable 3D Audio is server-wide: with it off, no radio is heard positionally anywhere. Earbuds is each player's own setting, and it decides only whether their radio is heard by the people around them.

With 3D audio on server-side, nearby players hear your radio from your position: Earbuds off is audible within 35 m by default, Earbuds on emits nothing. A configured earpiece item switches earbuds on automatically.

With Vehicle 3D Audio on, a vehicle carries your radio as its source — but only if you are driving an emergency vehicle (class 18), one owner at a time. Your traffic comes out of the car within 60 m, and keeps doing so from where it is parked after you walk away.

Riding along — the car's radio

On foot you operate your own portable. In the front seats of a car it is the car's, and two people there operate the same radio.

  • Both of you are on the channel, transmitting under your own callsigns
  • Either of you can work it — channel, zone, power, scan
  • Whoever gets in second adopts whoever was there. A driver always takes over
  • Getting out hands your radio back. A driver leaving you alone in the car does not

Volume, audio settings and open menus stay yours alone. Driver and front passenger only. The same codeplug checks apply, so your radio never follows the driver onto a talkgroup you do not carry.


The dispatch panel

Three ways in, all the same panel: in game with /tradio, in a browser, or in the desktop app. Log in with the dispatchNacId from config.lua, or Discord. Sessions last 24 hours.

In game

/tradio → Dispatch Panel in the sidebar, or Admin Panel with the tradio.admin ACE. /dispatch and /radioadmin no longer exist. Two things differ in game: Discord login is unavailable when exposeWeb = false, and there are no pop-out windows.

Desktop app or browser

The desktop app gives you global push-to-talk, which a browser cannot do while you are alt-tabbed into the game. Download it from Settings → Desktop App → Download and enter your server URL; it auto-updates with the server.

It is single-instance, so clicking the shortcut again raises the existing window. Closing the window quits the app by default; Settings → Minimize to Tray on Close keeps it running, with Quit on the tray menu. A flat gray rectangle in OBS means BitBlt — choose Automatic.

Choosing your microphone

Settings → Microphone picks the input the panel transmits from. Set this explicitly — on System default it follows whatever Windows calls the default, often a webcam or a switched-off headset. A panel that shows you transmitting while nobody hears you is almost always on the wrong input.

Working the board

ControlWhat it does
TransmittingHold T or the header PTT. Each channel card has its own hold-to-talk button and optional PTT key
UnitsDrag a user between channels. The row menu disconnects, alerts, or sets a callsign
AlertsTrigger one from the channel menu, or compose a free-text Broadcast Alert
EmergenciesA unit flashes with an ALARM, CALL or SILENT badge, and each row has ACK and Clear
Frequency patchingBridge channels so every patched unit hears the others. A P badge marks each, and patches survive a restart. Trunked channels cannot be patched
Announcement groupsA GROUPS bar appears when one exists. Arm one and your next PTT reaches every channel in it
Trunked channelsMonitor the control frequency for the whole talkgroup, logged as one entry
Transmission logTimestamps, frequencies and callers, emergency traffic marked EMERG. Filter, replay, collapse or pop out
SpeakersPick a tone, then press a speaker or group. See Speakers
SettingsCallsign, volumes, PTT bindings, theme, log, auto-collapse, Radio FX, app download

Settings → Radio FX adjusts incoming voice for you alone, applies as you move each control, and is remembered per server. Cancel does not undo it — use Follow server. Players have the same thing in game.

Themes

Five themes ship built in, in Settings → Theme: Dark Minimal (default), Dark, Dark Blue, Basic and Basic Dark.

More install from Admin Panel → Marketplace → Themes. Building one is Dispatch panel theming.


Talking to the AI dispatcher

Some channels may be covered by an AI dispatcher that sounds like any other transmission. Say the wake phrase, by default "dispatch" — anything else is heard and remembered but not answered.

K31:       Dispatch, K31.
Dispatch:  Go K31.
K31:       Traffic stop, black Sultan, two occupants, Vespucci Boulevard.
Dispatch:  Copy K31, traffic stop on Vespucci.
  • It knows the channel — who is on it, your callsign and status, distances, recent traffic
  • One exchange at a time. Key up mid-answer and you are acknowledged next
  • It can act — raise an alert, send a tone, patch channels, relay to another channel
  • It stands down for a human and resumes when they leave
  • It can call you. New 911 calls go out assigned to the nearest unit

Its callsign, channels and manner are server settings — see AI dispatcher.


911 calls

Civilians call 911 and land in a queue on the dispatch panel. On accept, caller and dispatcher get a private voice channel. Anyone can call — no radio or codeplug needed. It ships off: turn it on in Settings → General → 911 Calling.

/911                          -- dial with no details
/911 shots fired at the bank  -- dial with a message for the dispatcher

The message caps at 200 characters. The dispatcher sees it with the caller's number, unit ID, position and wait time.

The caller hears a ring-out tone until answered, then the radio powers on and a 911 banner appears. Speech is hands-free, using voice activity detection rather than PTT. Press ESC to hang up.

Dispatcher controlEffect
AcceptPuts you on a private voice channel with the caller
ListenAdds the call to your scan list
TalkPress-and-hold cross-channel PTT on the call
FocusPoints your main PTT key at this call
EndHangs up. Available to any dispatcher

Timeouts. An unanswered call expires after 5 minutes; after accept the caller has 20 seconds to connect, and an empty channel for 15 seconds counts as hung up. Players are rate-limited 30 seconds between calls.

When nobody is on the panel the call still queues, and call911NoDispatcherFallback fires immediately — by default a chat broadcast to everyone with radio access. See 911 hooks.


Radio models and appearance

Eleven models ship. The radio picks one per context, and each context remembers its choice.

ContextDefault model
On foot, focusedQRX-720
On foot, unfocusedQRX-720H — only with Separate On-Foot Focus Layout on
Ground vehicleHLX-120
WatercraftHLX-120G
Air vehicleKVD-880

Folder names, for a codeplug's allowed models:

ModelForm factor
QRX-720Portable handheld — on-foot default
QRX-720HPortable handheld — unfocused variant
QRX-720GPortable handheld — alternate body
QRX-760Portable handheld — modern slim
DRX-330Portable handheld — compact
SWX-250Portable scanner — twin channel heads
ZTR-540Mobile control head — squared body
ZTR-540SMobile control head — squared, slim
HLX-120Dash-mounted — in-vehicle default
HLX-120GDash-mounted — watercraft variant
KVD-880Aviation radio — in-air default

A codeplug sets which models a player may pick under Allowed Models and Default Layouts, including overrides per spawncode and livery. Each model opens at its own size until a player resizes the radio; Reset Position clears that. Install more from Marketplace → Layouts, no restart.

Vehicle radio props

Admins with tlib.admin place a dashboard radio prop per vehicle model. Sit in the vehicle and pick 3D Prop Editor from /tradio's sidebar.

InputAction
Middle mouse + dragOrbit
Shift + middle mouse + dragPan
Scroll wheelZoom
W / RTranslate mode / rotate mode
XToggle world and local space

Drag the arrows to move and the rings to rotate. Save applies to every client immediately; Export Config copies the placement block.


Animations

Players pick their animation in /tradio → Appearance → Animation. Four ship, on native GTA dictionaries.

NamePTT poseRadio-open pose
None——
Shoulderrandom@arrests / generic_radio_entercellphone@ / cellphone_call_to_text + hand radio prop
Handheldcellphone@ / cellphone_call_to_text + hand radio propsame
Earpiececellphone@ / cellphone_call_listen_base—

A fifth, Call911, plays for the caller side of a 911 call. Animations are suppressed while driving, piloting or holding a weapon.

Adding your own

Add entries to Config.animations in config/cl_functions.lua. Each needs a name, an onKeyState(isKeyDown) handler and an onRadioFocus(focused) handler; either may be empty. RadioMakeAnimHandler(dict, anim, prop) builds a standard one.

lua
[6] = {
    name         = "Chest Mic",
    onKeyState   = RadioMakeAnimHandler("random@arrests", "generic_radio_enter", nil),
    onRadioFocus = RadioMakeAnimHandler("cellphone@", "cellphone_call_to_text", "prop_cs_hand_radio"),
},

Find prop names at forge.plebmasters.de/objects. Index [1] is the fallback when a saved choice no longer exists. "qrx720" is the only prop whose screen and LED come alive while held.

Placing the prop yourself. Pass a table instead of a model name; bone and placement are optional.

lua
[9] = {
    name = "Walkie Talkie",
    onKeyState = RadioMakeAnimHandler(
        "missfbi3_steve_phone",
        "steve_phone_idle_a",
        {
            model = "prop_cs_hand_radio",
            bone = 28422,
            placement = { 0.1300, 0.0500, 0.0100, -113.0000, 0.0000, -60.0000 },
        }
    ),
    onRadioFocus = function(focused) end,
},

Using rpemotes. Call exports["rpemotes"]:EmoteCommandStart("wt4", 0) and EmoteCancel(true) from your own handler. Check RadioShouldSuppressAnim(ped) first — it returns true while driving or armed.

Using a custom .ycd pack. Copy the files under rpemotes/stream/. The .ycd filename is the dictionary name; find the clip with OpenIV or CodeWalker. Register it in rpemotes/client/AnimationListCustom.lua — never edit AnimationList.lua — then add a Config.animations entry calling that emote and restart rpemotes, then tRadio.

Installed animation packs

Marketplace packs install live, but the animations become playable only after tRadio restarts. Until then they stay out of the picker. Your own entries always win over a pack animation of the same name.

Define this hook to gate or wrap an installed animation:

lua
function Config.onMarketplaceAnimation(entry, info)
    -- entry = { id, name, hidden, onKeyState, onRadioFocus }
    -- info  = { slug, pack, animId,
    --           keyState   = { dict, clip, prop },
    --           radioFocus = { dict, clip, prop } }
    --
    -- Return nothing -> use it unchanged.
    -- Return false   -> drop it; it never appears in the picker.
    -- Return a table -> use that instead.

    if info.slug ~= "swat-poses" then return end

    local inner = entry.onKeyState
    entry.onKeyState = function(isKeyDown)
        if isKeyDown and not PlayerIsOnDuty() then return end
        inner(isKeyDown)
    end
    return entry
end

RadioMarketplaceClip(slug, animId, slot) returns { dict, clip, prop } for an installed animation, or nil; slot is "keyState" or "radioFocus". Never write a pack's dict down — it is renamed on install, so ask for it.

lua
local slot = RadioMarketplaceClip("swat-poses", "shoulder-mic", "keyState")
if slot then
    Config.animations[#Config.animations + 1] = {
        name       = "SWAT (duty only)",
        onKeyState = RadioMakeAnimHandler(slot.dict, slot.clip, slot.prop),
    }
end

Stream Deck

The official plugin turns an Elgato Stream Deck into a live radio panel, driving both the in-game radio and the dispatch panel with no separate app. Stream Deck Mobile and OpenDeck work too.

Setup

Install the plugin

Elgato Stream Deck: double-click the .streamDeckPlugin file. OpenDeck: plugin menu → install from file, plus its Node.js runtime.

Add actions to keys

Find tRadio in the actions list and drag actions onto keys, or onto dials on a Stream Deck +.

Pick a target

Each control action has a Target: Radio, Dispatch or Auto. Channel actions pick from a live list.

Start tRadio

Keys populate once their source connects: radio keys need you in game, dispatch keys need the panel open.

Actions

KeyShows or does
Radio StatusZone, channel, talk/scan status, signal bars, and scan / trunk / patch / GPS / secure flags. Red on panic
Talk IndicatorAmber for you, green for your channel, cyan for a scanned hit — with the talker's name
Scan IndicatorLit while scanning; flags scanned-channel hits
Dispatch ActivityThe dispatcher's channel and zone, units keyed up, and TX/RX
911 QueueHow many calls are waiting — red with the count
Radio ControlOne flexible key: PTT, next/previous channel or group, power, overlay, emergency, volume, accept/end 911
ChannelAct on one channel: Connect, Toggle Transmit, Talk on Channel (hold), or Toggle Scan
Volume dialRotate for Master / SFX / 3D volume, press to mute
Channel dialRotate to step channels or groups, press and hold to transmit

A channel key keeps its selection through disconnects, reloads and deck restarts.


Next steps

Still stuck? Support can answer it directly.

Was this page helpful?