RM-SCRIPTS · Minimal in-car radio UI for FiveM — tune native GTA stations from a clean NUI (hold-to-open, configurable list).
Store · Documentation · Discord
rm-carradio is a client-only resource: React + Mantine NUI, ox_lib keybinds and cache.vehicle, no framework required. Stations are GTA radio entries (gtaStation names) with display names, frequencies, and Lucide icon names in config.lua.
- ox_lib — shared
@ox_lib/init.luaprovideslibandcache. Start ox_lib before rm-carradio (manifest declaresdependency 'ox_lib').
-
Place
rm-carradioin your resources folder. -
Ensure ox_lib is installed and started.
-
Add to
server.cfg(order matters):ensure ox_lib ensure rm-carradio
-
Build the web UI if you change the React app or clone without
web/build:cd web pnpm install pnpm build
| Option | Description |
|---|---|
Config.Enabled |
Master toggle for the radio script |
Config.OpenKey |
Keyboard key for hold-to-open (ox_lib keybind) |
Config.RadioStations |
List of stations: id, name, frequency, gtaStation, icon (Lucide name, see lucide.dev/icons) |
The client prepends an OFF row in the UI; you only edit the GTA station table.
| Export | Returns | Description |
|---|---|---|
PlayStation |
— | stationId — play configured station ('radio_off' turns radio off) |
StopStation |
— | Stops current station / clears state |
GetCurrentStation |
string | nil |
Current station id or nil |
IsRadioOpen |
boolean |
Whether the NUI is visible |
exports['rm-carradio']:PlayStation('pop')
exports['rm-carradio']:StopStation()
local id = exports['rm-carradio']:GetCurrentStation()
local open = exports['rm-carradio']:IsRadioOpen()The client uses lib.addKeybind for open/close and lib.onCache('vehicle', …) so the in-vehicle loop only runs while cache.vehicle is set — no extra “am I in a vehicle?” polling.
© RM-SCRIPTS