Script de radio de carro para FiveM

Car Radio: documentación

Radio de carro para FiveM: pon YouTube o enlaces de audio directos desde cualquier carro. La música sale del carro mismo y todos los que están cerca escuchan la misma canción en el mismo momento (el que llega tarde entra a mitad de la canción).

  • Versión 1.1.1
  • Frameworks: QBCore · Qbox · standalone
  • Idiomas: es · en

Funciones

  • 🎛️ Panel del estéreo: reproducir / pausar, anterior / siguiente, parar, volumen, repetir (no / todo / una) y aleatorio.
  • 🎵 Título, artista y portada reales en la pantalla (YouTube oEmbed, sin API key).
  • 📜 Cola: "Poner ya" o "A la cola", saltar a cualquier canción o quitarla, hasta 30 canciones por carro.
  • ⭐ Favoritos por jugador (se guardan en su PC), con un clic se ponen todos en la cola.
  • 🔊 Sonido 3D en el carro, que oyen todos los que están alrededor y sincronizado.
  • 🚪 Se escucha apagado desde afuera: más bajito con todo cerrado y más alto con las ventanas abajo, las puertas abiertas, el convertible sin techo o en motora.
  • 💿 Emisora local: pon tus MP3 en la carpeta music/ y salen en la pestaña Emisora local de la radio (le puedes cambiar el nombre). Cualquiera las puede poner, encolar, buscar o darle a Escuchar todo. No hay enlace que se rompa: los archivos vienen con el recurso.
  • 📻 Canales en vivo con DJ: un DJ transmite en "Radio Ciudad" (o el canal que crees) y todos los carros sintonizados ponen la misma canción al mismo tiempo. /radiodj abre la cabina del DJ.
  • ⌨️ Teclas rápidas sin abrir el panel: subir / bajar volumen, pausa y siguiente canción (se pueden cambiar).
  • 👥 El chofer decide si el copiloto puede usar la radio.
  • 🔑 Motor apagado: la música se pausa y sigue cuando prendes el motor (o se para, configurable).
  • 🚫 Restricciones: clases y modelos de vehículo bloqueados, y un item de estéreo opcional que hay que instalar en el carro (con exports para scripts de mecánico).
  • 🛡️ Anti-spam y moderación: tiempo de espera entre canciones, lista negra de enlaces y palabras, logs en Discord y los comandos de admin /radiooff, /radiooffall y /radiomusica (lista las canciones de la emisora local).
  • 🔇 Opcional: la radio del juego siempre apagada en todos los vehículos.

Dependencias

Instalación

  1. Pon rolo_carradio en tu carpeta resources.
  2. En el server.cfg, después de ox_lib y xsound:
    ensure rolo_carradio
    
  3. Permisos (opcional, ace):
    add_ace group.admin rolo_carradio.admin allow   # /radiooff, /radiooffall, /radiomusica
    add_ace group.admin rolo_carradio.dj allow      # /radiodj
    
    Los admins del framework se detectan solos; también puedes dar el DJ por trabajo (Config.DJJobs).
  4. Reinicia el servidor. En el juego: /radio dentro de un carro (o asígnale una tecla en Ajustes > Asignación de teclas > FiveM).

Emisora local (tus MP3)

  1. Pon tus archivos .mp3 / .ogg / .m4a en rolo_carradio/music/ (sin subcarpetas).
  2. Nómbralos Artista - Canción.mp3 para que salgan el artista y la canción.
  3. restart rolo_carradio. La consola dice cuántas canciones encontró.

Los jugadores descargan estos archivos con el recurso, así que usa calidad normal (128-192 kbps). La carpeta se lee con la API de archivos que trae FXServer (server/music_list.js): no se usa ningún comando de consola, así que funciona igual en hostings Windows y Linux.

¿No sale una canción?

  1. El archivo va directo en rolo_carradio/music/ (sin subcarpeta) y termina en .mp3, .ogg o .m4a (en mayúsculas también sirve).
  2. Después de agregar canciones usa refresh y luego restart rolo_carradio (o reinicia el servidor). Los jugadores bajan los archivos nuevos cuando el recurso arranca.
  3. Mira la consola al arrancar: rolo_carradio: X canción(es) en music/.
    • 0 y una línea roja de que no encuentra canciones: el servidor no pudo leer la carpeta. Escribe los nombres en Config.LocalStation.songs = { 'Artista - Cancion.mp3' }.
    • "ninguno es .mp3": los archivos tienen otra extensión.
  4. /radiomusica (admin o la consola del servidor) vuelve a leer la carpeta y muestra la lista.
  5. Los admins que abren la radio ven en la pestaña vacía por qué está vacía y qué hacer. Los jugadores solo ven "todavía no hay canciones".

Item de estéreo (opcional)

Pon Config.Stereo.required = true y crea el item car_stereo en tu inventario. Ya viene listo en items/ (ox_origen_items.lua, qb_items.lua).

  • qb-inventory / QBCore: se registra solo como item usable.
  • ox_inventory / origen_inventory: agrega al item client = { export = 'rolo_carradio.useStereo' }.
  • Imagen: copia items/images/car_stereo.png a la carpeta de imágenes de tu inventario.

Otros scripts pueden manejar los estéreos con:

exports['rolo_carradio']:InstallStereo(plate)
exports['rolo_carradio']:HasStereo(plate)
exports['rolo_carradio']:RemoveStereo(plate)

Configuración (config.lua)

Opción Qué hace
Config.Locale 'es' o 'en'
Config.Framework / Config.Inventory 'auto' los detecta; 'custom' = el tuyo en bridge/server.lua
Config.Notify / Config.TextUI / Config.Progress 'auto' usa rolo_notify si está corriendo; 'custom' = el tuyo en bridge/client.lua
Config.Command / Config.Key / Config.QuickKeys comandos y teclas por defecto
Config.PassengerControl si el copiloto puede usarla por defecto
Config.BlockedClasses / Config.BlockedModels vehículos sin radio
Config.Stereo item de estéreo obligatorio para usar la radio
Config.Distance / Config.MaxVolume / Config.OutsideVolume cómo suena
Config.EngineOff 'pause', 'stop' o 'none'
Config.MaxQueue / Config.PlayCooldown / Config.Blacklist cola y anti-spam
Config.Stations botones de emisoras fijas
Config.LocalStation la pestaña de la emisora local (tus MP3 en music/): encendida / apagada, nombre y aleatorio para Escuchar todo
Config.Channels / Config.DJJobs canales en vivo y quién puede ser DJ
config_server.lua webhook de los logs de Discord (solo servidor)

Archivos abiertos (sin escrow)

  • config.lua
  • locales/*.lua: todos los textos del script y del panel
  • bridge/client.lua: notificaciones y barra de progreso
  • bridge/server.lua: detección del framework, permisos de admin y DJ, items, Bridge.CanUseRadio y logs de Discord

Notas

  • Algunos videos de YouTube bloquean la reproducción fuera de YouTube (sobre todo de disqueras); esos enlaces no van a sonar.
  • El audio real lo pone xsound, así que el ecualizador de la pantalla es una animación (se mueve mientras suena música).
  • La música es del carro: si el carro se borra o se guarda, se para.

Secretos: config_server.lua

Los webhooks de Discord y las API keys van en config_server.lua, no en config.lua. FiveM le manda config.lua al juego de cada jugador, así que cualquier tramposo lo puede leer; config_server.lua solo lo carga el servidor.

¿Te atascaste?

Escríbenos en el canal de soporte de Discord con el script, tu framework y el error de la consola.