
Radio
v1.0.0Compact pma-voice radio with a live members overlay, talking animations, custom sounds, and full framework/inventory auto-detection.
A compact radio for FiveM, fully compatible with pma-voice, with a Vite + React + Tailwind UI.
The menu sits on the right (power, join/leave frequency, volume, animation and sound pickers, anonymous/streamer toggles) and a members overlay sits left-center, always visible while connected, showing who's on the frequency and who's currently talking (animated equalizer).
Note
public/framework.lua and public/inventory.lua are the only files you're expected to touch to adapt this to your server — the rest of the resource doesn't hardcode any framework or inventory. See the Configuration section below.
Features
⚙️ Plug & Play Auto-Detection — native compatibility with ESX, QBCore, and QBox, plus ox_inventory, qb-inventory, qs-inventory, and origen_inventory. No configuration switches needed.
🎨 Modern UI Design — compact dark-theme menu where every border, glow, slider, and scrollbar is derived from a single accent color in the config.
📊 Live Members Overlay — see everyone on your frequency in real time, with an animated equalizer next to whoever is talking.
🕵️ Anonymous Mode — hides your real name from the frequency, showing a randomized
Anonimo ###tag instead.🔒 Streamer Mode — masks the frequency itself like a password, both in the input and in the overlay, safe to show on stream.
🎬 Talking Animations & Props — 3 editable presets (standard, hand-to-mouth, shoulder mic), each applied to pma-voice and paired with a prop attached to the ped's hand while transmitting.
🎵 Custom Radio Sounds — 11 ready-to-use start/finish sound effects (beep, Motorola, police, military, click…), kept outside the web bundle so rebuilding the UI never wipes them out.
🚑 Smart Death Handling — auto-compatible "downed/incapacitated" detection (native checks, plus wasabi_ambulance, qb-ambulancejob, and esx_ambulancejob out of the box) that can auto-disconnect you or block the radio while downed. Toggle it on/off with a single
Config.DeadDetectionswitch, or replace the check inpublic/dead.luawith your own integration.🎮 Walk While Using — optional setting to keep moving with the menu open; the mouse still drives the UI, and movement only locks while typing in a field.
🧩 Full Integration Layer — client & server exports, a replicated
LocalPlayer.state.biyeiRadiostate bag, and events (powerChanged,frequencyChanged,transmitting,membersChanged) so any other script can hook into the radio without touching the UI.🌐 Multi-Language Support — Spanish and English included out of the box, easily expandable via plain
locales/<code>.luafiles.🔢 Decimal Frequencies — configurable decimal precision (e.g.
1.1,25.75) viaConfig.FrequencyDecimals.📦 Optional Item Requirement — gate the menu and frequency joins behind an inventory item, with a periodic server-side check that kicks you out if you lose it.
Requirements
- pma-voice
Must be started before this resource — handles all radio audio, volume, and talking animations.
- ESX, QBCore, or QBox (auto-detected)
Optional. Only used to resolve the player's full name for the members list — the radio itself works standalone.
- ox_inventory, qb-inventory, qs-inventory, or origen_inventory (auto-detected)
Only needed if Config.RequireItem = true.
- biyei_notificaciones
Optional. Falls back to a built-in notification if it isn't installed.
