For the complete documentation index, see llms.txt. This page is also available as Markdown.

Configuration

config.lua explained — channels, voice effects, jammer, and integrations.

All gameplay settings live in config.lua at the resource root (0r-radio/config.lua).

Open it in an editor and change only what you need — the file is commented, but this page is the short version.


Setup

setup = {
    debug = 4,              -- 0 = off, 1 = errors only, up to 4 = all logs (use 1 in production)
    checkVersion = true,
    notify = 'auto',
    progress = 'auto',
    menu = 'auto',
    voice = 'auto',
    replicateConvars = true,
},
Option
What it does

debug

Console noise. Keep at 1 on a live server unless you are troubleshooting.

checkVersion

Warns if a newer release exists on startup.

notify

auto or: ox_lib, lt-ui, esx_notify, okokNotify, pNotify, mythic_notify, brutal_notify, wasabi_notify, origen_notify, lation_ui

progress

auto or: ox_lib, lt-ui, progressbar, lation_ui, wasabi_uikit

menu

auto or: ox_lib, lt-ui, qb-menu, lation_ui, wasabi_uikit

voice

auto or: pma-voice, saltychat

replicateConvars

When true, 0r-radio sets PMA-Voice convars on startup and validates them. Prefer setting convars manually in server.cfg if you already manage them — set to false in that case.


General

Option
Default
Notes

locale

'en'

Also: tr, de, fr, es, pt-br, pl, ru, it — files in locales/

item

'advancedradio'

Must match your inventory item name (see Items)

movement

true

Walk while the radio UI is open

leaveOnDeath

true

Leave the current channel when the player dies

micClicks

true

Default mic-click state for new players (they can change it in settings)

customMicClicks

true

Use sounds from web/public/sounds/ instead of pma-voice / saltychat clicks

defaultVolume

100

Default radio volume for new players (0100)


How frequencies work

There are three kinds of channels. Think of them as layers:

  1. Reserved (config) — IDs listed in channels = { [1] = { ... }, [2] = { ... } }. Job-restricted, per-channel settings. Example: police on channel 1.

  2. Public — Frequencies 1frequency.publicChannels (default 1200). Open to everyone unless that ID is already defined in channels.

  3. Password / custom — Frequencies from publicChannels + 1 up to frequency.max (default 201500). Created in-game from the UI with a password.

If you change publicChannels, the ranges shift. Example with max = 500 and publicChannels = 250: 1250 public, 251500 password/custom.

Channel label can be a locale key ('channels.police_dispatch') or plain text ('LSPD Tac 1').

Restricted channel example

Channel options

Setting
Meaning

label

Channel name (locale key or plain string)

jammed

false = this channel is not affected by jammers

duty

true = player must be on duty (job.onDuty) to join

showRole

Show each member's grade/role in the channel list

jobs

Allow-list of job names; others are refused at join time

The default config maps channels 19 to LSPD, BCSO, and EMS frequencies. Extend or replace them as needed.


Voice effects

Option
Default
Notes

radioEffect

'custom'

'custom' = 0r-radio submix pipeline; 'pma' = pma-voice built-in; false = no effect

usePMAAnimations

false

true = use pma-voice talk animations; disables talkAnimations presets

underwaterEffects

true

Muffled radio audio underwater (custom mode only)

distanceEffects

true

Audio quality by distance between players (custom mode only)

Advanced tuning (custom mode only)

Block
Purpose

voiceEffects

Submix definitions (radioNear, radioMid, radioFar, jammed, underWaterTalking)

radioDistance

Distance thresholds that pick each submix

environmentalEffects

Interior and weather interference (enabled, interior, weather.badWeathers)

radioDropouts

Simulated packet loss (enabled, jitter, stages per distance tier)

Defaults are tested. Tweak only if you know what each value does — comments in config.lua are the source of truth.


Jammer

Option
Default
Notes

enabled

true

Turn the jammer system on or off

item

'jammer'

Inventory item name (see Items)

range

75.0

Radius where radio signal is affected

minDistance

15.0

Minimum gap allowed between two placed jammers

prop

'ch_prop_ch_mobile_jammer_01x'

World model when placed

useVoiceEffectInsteadLeaving

true

true = distorted submix while in range; false = remove from channel. Only when radioEffect = 'custom'

job

true

If true, only jobs below can place or pick up jammers

jobs

police, sheriff, swat

Allowed jobs when job = true; if job = false, anyone with the item can use it


Customization

Option
Default
Notes

enabled

true

Master switch for player customization

displayNames

true

Custom name on the channel list

colors

true

Custom badge color on the channel list


Keybinds

Option
Default
Notes

enabled

true

Enable or disable the keybind system

openRadio

'EQUALS'

Open / toggle radio UI

nextChannel

'PERIOD'

Next channel

prevChannel

'COMMA'

Previous channel

Players can rebind these in FiveM's keybind settings. Defaults apply on first join.


Talk animations

Option
Default
Notes

enabled

true

0r-radio talk animations; set false if another script handles radio anim

animations

[0], [1], [2]

Presets in the UI — do not edit dict/anim/prop unless swapping animations

Set usePMAAnimations = true (in the voice section) to let pma-voice handle talk animations instead.


Flashlight

Option
Default
Notes

enabled

true

Toggle flashlight from the radio UI

drawDistance

75.0

How far other players see the beam

light.color

RGB

Beam color

light.distance

12.5

Light range

light.brightness

1.0

Brightness

light.roundness

1.0

Roundness

light.radius

15.0

Radius

light.falloff

0.75

Falloff


Locales & data

Set locale to a supported code and edit strings in locales/*.json. Channel labels can use keys under "channels" in those files.

Player data is stored on the server (no database required):

File
Contents

data/favorites.json

Saved favorite channels

data/customization.json

Display name and badge color

Last updated