Configuration

Configuration

Edit shared/config.lua:

return {
  item = "radio",             -- your radio item name
  framework = "qbx",          -- standalone, esx, ox, qbx, vrp05
  model = "prop_cs_hand_radio",
  disabledControls = { 24 },  -- controls disabled while radio is active
  disableShooting = true,
  hideMetadataWhenOff = true,
 
  radioAnimations = {
    face     = { dict = "ultra@walkie_talkie",    anim = "walkie_talkie" },
    shoulder = { dict = "random@arrests",         anim = "generic_radio_chatter" },
    chest    = { dict = "anim@cop_mic_pose_002",  anim = "chest_mic" },
    ear      = { dict = "cellphone@",             anim = "cellphone_call_listen_base" },
  },
 
  radioPlacement = {
    holding  = { bone = 28422, pos = vec3(0.0, 0.0, 0.0), rot = vec3(0.0, 0.0, 0.0) },
    speaking = { bone = 18905, pos = vec3(0.14, 0.03, 0.03), rot = vec3(-105.87, -10.94, -33.72) },
  },
 
  restrictedChannels = {
    [1] = { "police", "ambulance" },
  },
}

Restricted Channels

Lock entire frequency ranges to specific jobs. A restriction on channel 1 locks 1.00 through 1.99.

restrictedChannels = {
    [1] = { "police", "ambulance" },  -- 1.00–1.99
    [10] = { "gang_leader" },         -- 10.00–10.99
}

Players without the required job will get an error when trying to connect.

Localization

Locale files are in locales/. Currently includes English (en.json) and Danish (da.json). The script uses ox_lib's locale system — add a new JSON file to support additional languages.