Scripts / Docs /TML Radio

Configuration

Everything is in config/config.lua. Every value is checked when the resource starts: a missing or invalid value prints a warning in the server console and its default is used instead.

General

Option Type Default What it does
Config.Locale string 'en' Language file in config/locales/ (en, es)
Config.Debug boolean false Extra console output
Config.CheckForUpdates boolean true Console notice when a newer version exists

Bridge

Option Default Values
Config.Framework 'auto' qbox qbcore esx ox_core nd_core vrp standalone custom
Config.Inventory 'auto' ox_inventory qb-inventory ps-inventory qs-inventory codem-inventory core_inventory standalone custom
Config.Notify 'auto' ox_lib qbcore esx standalone custom
Config.Voice 'auto' pma-voice saltychat none custom

Config.Standalone.jobs (standalone framework only): job name → ACE permission that grants it.

Config.Radio

Option Type Default What it does
item string 'tml_radio' Item name
requireItem boolean true Players need the item to open and use the radio
itemCheckSeconds number 5 How often players on a channel are checked for the item
command string 'radio' Chat command that opens the radio ('' for none)
key string '' Default key to open the radio ('': players bind it themselves)
powerKey string '' Default key to turn the radio on/off without opening it
minFrequency / maxFrequency number 1.00 / 999.99 The band players can tune to
channelStep number 1.00 How far CH+ / CH- move
defaultVolume number 60 0-100, for players who never changed it
volumeStep number 10 How much VOL+ / VOL- change the volume
micClicks boolean true Default mic click (players can toggle it)
presets number 3 Preset buttons, 0-6
showMembers boolean false Optional "who's on the channel" list next to the radio (restricted frequencies). Off: no list, no names sent
showMembersOnOpen boolean false With showMembers on, also list members on unrestricted frequencies
callsignLength number 12 Max callsign length
disableWhenDead boolean true Dead players can't talk or hear
disableUnderwater boolean true No signal while swimming underwater
guardChannels boolean true Make pma-voice itself refuse restricted channels to anyone without access

Config.Restricted

A list of frequency ranges only some players can join. Ranges are inclusive and mustn't overlap.

{ from = 1.00, to = 9.99, label = 'Police', jobs = { police = 0, sheriff = 0 }, ace = 'tml_radio.police',
  onDutyOnly = true, panic = true, accent = '#3B82F6' },
Key Type What it does
from, to number First and last frequency of the range
label string Shown on the radio and HUD while tuned in
jobs table Job name → minimum grade
ace string or false ACE permission that also grants access
onDutyOnly boolean Job members must be on duty
panic boolean The panic button works on this range
accent string Colour of the display strip and HUD label (#RRGGBB)

A player who changes job, goes off duty or loses the permission is taken off the frequency straight away.

Config.VoiceEffect

How voices sound over the radio. pma-voice only (SaltyChat adds its own effect), and it needs setr voice_useNativeAudio true and setr voice_enableSubmix 1 in your voice config.

Option Default What it does
enabled true Use the effect; false = pma-voice's own radio sound
preset 'handheld' A key in presets: handheld (classic analogue), digital (clearer), old (worn and crackly)
volume 1.0 0.0-1.0, loudness of voices through the effect
presets see config Your own presets: freq_low / freq_hi (the band of the voice that gets through, Hz), o_freq_lo / o_freq_hi (the output band), fudge (distortion), rm_mix (crackle), rm_mod_freq (ring modulation, robotic; 0 = off)

Change a value and restart the resource to hear it. A preset with a missing or non-number value turns the effect off with a console warning.

Config.Panic

Option Type Default What it does
enabled boolean true Show the panic button
key string '' Default key for panic without opening the radio
cooldown number 30 Seconds between panics from one player
blipSeconds number 60 How long the blip stays
blipSprite / blipColour number 161 / 1 Blip look
waypoint boolean false Set a GPS waypoint to the panic

Config.Animation

While the radio UI is open, the player holds the radio. While talking, jobs in shoulderJobs use a shoulder mic (no prop) and everyone else raises the radio to their mouth (with the prop).

pma-voice plays its own shoulder animation while talking. Set setr voice_enableRadioAnim 0 in your voice config, or the two play at once. The client console warns about this at start.

Option Default What it does
enabled true Prop and animations
prop 'prop_cs_hand_radio' Radio prop model
talkWhenClosed true Play the talk animation with the UI closed too
hold.dict / hold.vehicleDict 'cellphone@' / 'cellphone@in_car@ds' Holding the radio on foot / in a vehicle
hold.enter / hold.exit 'cellphone_text_in' / 'cellphone_text_out' Raise it when the UI opens (holds the last frame), put it away when it closes
hold.bone 28422 Bone the prop is attached to while holding (right hand)
shoulderJobs { 'police', 'sheriff', 'bcso', 'sasp', 'ambulance', 'ems', 'fire' } Jobs that use the shoulder mic
shoulder.dict / shoulder.clip 'random@arrests' / 'generic_radio_chatter' Shoulder mic animation
mouth.dict / mouth.clip 'ultra@walkie_talkie' / 'walkie_talkie' Radio to mouth (streamed with the resource, in stream/)
mouth.bone / mouth.offset / mouth.rotation 18905 / { 0.14, 0.03, 0.03 } / { -105.877, -10.9432, -33.7212 } Prop position for radio to mouth (left hand)
mouth.fallbackDict / mouth.fallbackClip / mouth.fallbackBone 'cellphone@' / 'cellphone_call_listen_base' / 28422 Base game animation used if the streamed one isn't loaded

Config.Hud

Option Default What it does
enabled true Frequency strip while the radio is on. false = never shown
playerToggle true Players can turn their own HUD on or off in the radio's MENU
position 'top-right' top-left top-right bottom-left bottom-right
showTalker true Name or callsign of whoever is talking (needs showMembers; otherwise it shows "Receiving")

Config.Theme

Option Default What it does
position 'bottom-right' Where the radio opens: top-left top-right bottom-left bottom-right center
sounds true Key beeps, connect chirp and panic alarm
volume 0.5 0.0-1.0
vars {} Any CSS variable from web/theme.css, e.g. { ['--shell-mid'] = '#1c2638' }

Config.RateLimit

Milliseconds between requests of one kind from one player: default (150), join (500), open (750).

Esc

↑↓ to move Enter to open

Keyboard shortcutsEsc
Ctrl K or /
Search pages, scripts and docs
G then H
Go to Home
G then S
Go to Store
G then P
Go to Previews
G then D
Go to Docs
G then I
Go to Install helper
G then F
Go to FAQ
C
Open the cart (store pages)
?
Show this list