SCRIPT

Documentación de Reproductor de musica

Otra Vida Musica (ov_musica)

Que hace

ov_musica es un reproductor de musica para jugadores en servidores FiveM con qb-core. Los jugadores buscan canciones, arman una cola y escuchan la musica en el vehiculo, con sonido 3D que viaja con el coche, o "solo para mi" a pie.

Lo mas importante:

Importante: el recurso necesita un servicio externo de busqueda y descarga y un CDN donde quedan los archivos de audio (ver Requisitos). El servidor del recurso solo decide que suena y desde que segundo; cada cliente reproduce el audio con su propio motor.

Requisitos

RequisitoDetalle
Frameworkqb-core
Dependencias declaradas en el fxmanifestox_lib, oxmysql, qb-core
Lua5.4 (lua54 'yes')
Base de datosMySQL o MariaDB, mediante oxmysql
Servicio de busqueda y descargaServicio HTTP propio que el servidor FiveM pueda alcanzar. El recurso le hace peticiones POST a las rutas /buscar (con q y n) y /preparar (con id) enviando la cabecera X-Clave
CDN o servidor web de archivosDireccion publica desde la que los jugadores descargan los audios. Debe permitir reproduccion desde la interfaz (el motor de audio carga los archivos con crossOrigin = 'anonymous', asi que el servidor de archivos debe enviar las cabeceras CORS)

El codigo del servidor no usa otros recursos mas alla de qb-core y ox_lib.

No verificado: el servicio de busqueda y descarga no forma parte de los archivos de este recurso. Su implementacion (programa que busca, descarga, convierte y publica el audio en el CDN) debe proporcionarse por separado. Consulta con el soporte de la tienda como obtenerlo o que contrato debe cumplir.

Instalacion

  1. Descarga el recurso desde el Portal de Cfx.re (seccion de assets comprados) con la cuenta Cfx.re con la que hiciste la compra. El recurso viene protegido con Asset Escrow de Cfx.re: solo funciona en servidores cuya clave de licencia pertenece a tu cuenta.
  2. Copia la carpeta ov_musica dentro de resources de tu servidor.
  3. Prepara el servicio de busqueda y descarga y el CDN (ver Requisitos).
  4. Agrega las convars en server.cfg, antes de ensure ov_musica:
   set ov_musica_clave "una-clave-larga-y-secreta"
   set ov_musica_api "http://127.0.0.1:3410"
   setr ov_musica_cdn "https://tu-cdn.ejemplo"
   ensure ov_musica
  1. Inicia el servidor. No hay archivo .sql: al arrancar se crea sola la tabla ov_musica_listas (CREATE TABLE IF NOT EXISTS).

Archivos editables: en el fxmanifest.lua el bloque escrow_ignore deja sin cifrar shared/config.lua y toda la carpeta html/ (interfaz web y motor de audio). El resto del codigo (client/ y server/) va cifrado por Asset Escrow.

Configuracion

Todo esta en shared/config.lua. Opciones principales:

ClaveValor por defectoPara que sirve
Config.ApiUrlconvar ov_musica_api, o http://127.0.0.1:3410Direccion del servicio de busqueda y descarga
Config.ApiClaveconvar ov_musica_clave, o vacioClave secreta del servicio
Config.Cdnconvar ov_musica_cdn, o la direccion de ejemplo incluidaDireccion publica de los audios
Config.ApiTiempoMs300000Constante de tiempo para descargas nuevas
Config.MaxCola30Canciones en la cola de una fuente
Config.MaxListas15Listas por jugador
Config.MaxPistasLista100Canciones por lista
Config.CooldownBusquedaMs1500Espera entre busquedas por jugador
Config.CooldownAgregarMs2500Espera entre canciones agregadas
Config.MaxResultados10Resultados por busqueda
Config.VolumenInicial0.6Volumen al empezar
Config.Distancia60.0Metros a los que se oye un vehiculo
Config.DistanciaSincronia120.0Mas alla de esta distancia el cliente deja de reproducirlo
Config.IntervaloPosMs50Cada cuanto se envia la posicion al motor de audio
Config.ApagarVacioSeg300Un vehiculo sin nadie dentro deja de sonar tras este tiempo
Config.AtenuacionCerrado900Frecuencia (Hz) del filtro con el vehiculo cerrado y el oyente fuera
Config.Control'conductor''conductor': solo el conductor controla; 'todos': cualquier ocupante
Config.Tecla'U'Tecla por defecto para abrir el reproductor
Config.Comando'musica'Comando del reproductor
Config.Bandas{ 60, 150, 400, 1000, 3000, 8000, 16000 }Frecuencias del ecualizador
Config.EqMax12Ganancia maxima del ecualizador en dB
Config.Presets7 presetsValores de cada preset (una ganancia por banda)
Config.PresetInicial'Plano'Preset con el que empieza una fuente nueva

Puedes agregar presets propios anadiendo una entrada a Config.Presets con una ganancia por cada banda.

Comandos y permisos

ElementoDetalle
/musicaAbre o cierra el reproductor (el nombre sale de Config.Comando)
Tecla UAtajo registrado con RegisterKeyMapping. Cada jugador puede cambiarla en Ajustes, Teclas, FiveM
Permisos ACEEl recurso no define permisos ACE

Exports del cliente

ExportUso
Abrir(ctx)Abre el reproductor desde otro script. ctx puede ser 'vehiculo' o 'personal'; si se omite, el recurso elige segun si el jugador va en un vehiculo
exports.ov_musica:Abrir('personal')

Eventos (uso interno): ov_musica:estado, ov_musica:todos y ov_musica:pedirTodo. No estan pensados para llamarlos desde otros recursos.

Como se usa

  1. Pulsa U (o escribe /musica) para abrir el reproductor.
  2. Elige el modo: vehiculo (solo si vas dentro de uno) o solo para mi.
  3. Busca una cancion por nombre (minimo 2 letras) y agregala a la cola. La primera empieza a sonar al terminar de prepararse.
  4. Con el control del reproductor puedes pausar, reanudar, pasar a la siguiente, reiniciar, subir o bajar el volumen, activar repetir, quitar canciones de la cola o vaciarla.
  5. Abre el ecualizador para elegir un preset, mover las 7 bandas o activar Super Bass.
  6. Crea listas con tus canciones favoritas y reproducelas despues con un clic.
  7. En vehiculo, los jugadores cercanos escuchan la musica. Si el vehiculo esta cerrado, desde afuera se oye amortiguada.

Notas: si una cancion supera la duracion permitida por el servicio, el reproductor avisa que es demasiado larga. Con Config.Control = 'conductor', los pasajeros pueden agregar canciones, pero solo el conductor puede pausar o cambiar el volumen y el ecualizador.

Para administradores

  1. Pon en marcha el servicio de busqueda y el CDN antes de iniciar el recurso, y define las tres convars.
  2. Revisa la consola al arrancar: si falta ov_musica_clave veras un aviso en amarillo.
  3. Ajusta los limites en shared/config.lua (cola, listas, tiempos de espera) segun la carga de tu servidor.
  4. Para que cualquier ocupante controle la musica de un vehiculo, cambia Config.Control a 'todos'.
  5. Los audios los guarda el servicio en el CDN. La limpieza de archivos antiguos depende de ese servicio, no del recurso.
  6. Las listas de los jugadores estan en la tabla ov_musica_listas, asociadas al citizenid.

Preguntas frecuentes

No encuentra canciones o dice que el servicio no responde. Revisa que el servicio este activo, que ov_musica_api apunte a su direccion, que ov_musica_clave coincida con la del servicio y que el servidor FiveM pueda conectarse a esa direccion.

La cancion se agrega pero no suena. Comprueba ov_musica_cdn: debe ser publica, accesible desde los clientes y con cabeceras CORS. Los clientes descargan el audio desde esa direccion.

Puedo limitar la musica a ciertos jugadores? El recurso no incluye permisos por jugador. Puedes restringir el acceso desde otros scripts, por ejemplo llamando al export Abrir solo cuando tu logica lo permita, aunque el comando /musica seguira disponible.

Cambio el limite de la cola o las listas? Si, en Config.MaxCola, Config.MaxListas y Config.MaxPistasLista dentro de shared/config.lua.

Funciona sin vehiculo? Si, con el modo "solo para mi", que solo lo oye quien lo activa.

Donde veo los errores? En la consola del servidor (mensajes [ov_musica]) y en la consola F8 del cliente.

Actualizaciones y soporte

Las versiones nuevas aparecen en el Portal de Cfx.re (en tus recursos comprados) y en la tienda. Descargalas con la misma cuenta Cfx.re de la compra y reemplaza la carpeta, conservando tus cambios en shared/config.lua. Para soporte, abre un ticket en el Discord de la tienda: [enlace de soporte]. Indica la version del recurso, el error de consola y los pasos para reproducirlo.