Documentación de ZeroDev Sound

ZeroDev Sound: guía de instalación

Para ZeroDev Sound 3.0.127 min de lecturaActualizado el

Este recurso no contiene ni ofrece ninguna integración de audio o música de terceros. La música solo se reproduce desde archivos de audio que el dueño del servidor añade al recurso y desde la radio integrada de GTA. Los jugadores no pueden introducir enlaces. Añade solo audio que sea tuyo o cuyos derechos de uso y distribución tengas; emitir contenido en streaming sin permiso puede infringir el Cfx.re Creator Platform License Agreement y la ley.

Altavoces que los jugadores compran, llevan, colocan y enlazan, y audio de coche que montan en sus propios coches. Esta es la referencia completa. Para la versión corta, lee docs/SETUP.md (5 pasos); para problemas, docs/TROUBLESHOOTING.md; si vienes de la 1.x, UPGRADING.md.

Contenido 1. Requisitos 2. Instalación 3. Items para tu inventario 4. Primer inicio: lo que deberías ver 5. Los ajustes que más se cambian 6. Controles 7. Audio de coche 8. Fuentes de música 9. Pulse Phone 10. Policía, vecinos y admins 11. Idiomas 12. Solución de problemas 13. Actualizar

1. Requisitos

Obligatorio oxmysql. ZeroDev Sound crea sus propias tablas en el primer inicio; no hay archivo SQL que importar.
Framework ESX Legacy, QBCore, Qbox o ninguno (standalone). Se detecta solo.
Inventario ox_inventory, qb-inventory (también ps- y lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, el inventario de ESX o ninguno. Se detecta solo.
Opcional ox_target o qb-target (sin uno, los jugadores ven un aviso de tecla en pantalla). Pulse Phone 1.2.9 o superior (añade la app Sound y el estéreo del coche en Pulse Drive). pma-voice para el micro: sin él, el micro se puede coger y cantar en él, pero nadie lo oye por los altavoces.

Nada más: sin ox_lib, sin API key, sin cuenta de Google.

Servidores Linux

Servidores Linux: usa el artifact de servidor Recommended, no Latest. En la página de descarga del servidor de FiveM (docs.fivem.net/docs/server-download/) elige Linux y la rama de actualización Recommended. Un servidor con el último artifact de Linux se colgaba al cargar (FXServer mostraba un volcado de /proc/self/maps), y cambiar al artifact recomendado lo solucionó. Es el único informe de Linux que tenemos; todavía no hemos ejecutado ZeroDev Sound en un servidor Linux nosotros mismos.

Servidores Linux: usa el artifact de servidor Recommended, no Latest. En la página de descarga del servidor de FiveM (docs.fivem.net/docs/server-download/) elige Linux y la rama de actualización Recommended. Un servidor con el último artifact de Linux se colgaba al cargar (FXServer mostraba un volcado de /proc/self/maps), y cambiar al artifact recomendado lo solucionó. Es el único informe de Linux que tenemos; todavía no hemos ejecutado ZeroDev Sound en un servidor Linux nosotros mismos.

En un servidor standalone (sin framework) todo es gratis: la tienda y las piezas de coche no cobran nada.

2. Instalación

Paso 1. Pon la carpeta. Pon la carpeta zerodev-sound en tu carpeta resources (vale cualquier subcarpeta, por ejemplo resources/[zerodev]/zerodev-sound). Mantén el nombre de carpeta zerodev-sound: las entradas de items de ox_inventory lo llaman por ese nombre.

Paso 2. Añádelo a server.cfg, después de tu base de datos, framework e inventario:

server.cfg
ensure oxmysql
ensure es_extended        # or qb-core / qbx_core, or nothing on a standalone server
ensure ox_inventory       # or your inventory
ensure ox_target          # optional, or qb-target
ensure phone              # optional: Pulse Phone
ensure zerodev-sound

Paso 3. Da a tus admins el permiso de admin (sin límite de altavoces, la lista de /soundadmin, detener y quitar a distancia):

server.cfg
add_ace group.admin zerodev.sound.admin allow

Paso 4. Configura los items para tu inventario: sección 3. En el inventario de ESX y en QBCore esto se hace por ti.

Paso 5. Reinicia el servidor (un reinicio completo, no solo del resource, para que todos los jugadores carguen los modelos) y revisa la consola: sección 4.

3. Items para tu inventario

Hay 12 items: diez altavoces, el pie de micro y el kit de reparación.

Nombre del item Etiqueta Peso
zds_roam Altavoz portátil Roam 2 kg
zds_room_shelf Altavoz de estantería 4 kg
zds_room_tower Altavoz de torre 10 kg
zds_room_ceiling Altavoz de techo 2 kg
zds_room_sub Subwoofer de casa 8 kg
zds_stage_pa Altavoz PA 10 kg
zds_stage_sub Subwoofer de concierto 15 kg
zds_stage_array Altavoz line array 12 kg
zds_stage_monitor Monitor de escenario 6 kg
zds_stage_mixer Mesa de mezclas de DJ 5 kg
zds_stage_mic Pie de micro 3 kg
zds_repair_kit Kit de reparación de altavoces 0.6 kg

Las imágenes están en zerodev-sound/web/img/items/. Nunca tienes que adivinar: cuando falta algo, la consola del servidor muestra las entradas exactas para tu inventario y nombra cualquier imagen que aún no esté en su sitio.

¿Qué inventario tienes?

Inventario Qué haces Las imágenes van en
Inventario de ESX (ESX Legacy sin ox) Nada. Los items se añaden a la tabla items al iniciar. Nada que copiar
ox_inventory (ESX, Qbox o standalone) Pega el bloque de ox_inventory en ox_inventory/data/items.lua, dentro de la tabla. Reinicia ox_inventory y después zerodev-sound. Nada que copiar: las entradas cargan las imágenes desde zerodev-sound
qb-inventory, ps-inventory, lj-inventory (QBCore) Nada. Los items se añaden a los shared items de QBCore al iniciar. Copia web/img/items/*.png a <your inventory>/html/images/
qs-inventory En QBCore pega el bloque de QBCore en qb-core/shared/items.lua. En ESX pega las mismas entradas en qs-inventory/shared/items.lua. qs-inventory/html/images/
codem-inventory Añade los 12 items a codem-inventory/config/itemlist.lua con los nombres, etiquetas y pesos del bloque de QBCore. En QBCore, completa también el paso de instalación propio de codem-inventory que dirige QBCore.Functions.UseItem a codem-inventory, o los items no se podrán usar. La carpeta de imágenes de items de codem-inventory
core_inventory Nada. Los items se añaden por ti a los shared items de QBCore o a la tabla items de ESX. La carpeta de imágenes de items de core_inventory
origen_inventory Añade los 12 items a origen_inventory/config/items.lua con los nombres, etiquetas y pesos del bloque de QBCore. La carpeta de imágenes de items de origen_inventory
tgiann-inventory Añade los 12 items a tgiann-inventory/items/items.lua con los nombres, etiquetas y pesos del bloque de QBCore. inventory_images/images/
Sin inventario Nada. Los altavoces comprados y recogidos esperan en /sound bajo Your speakers, con un botón Set up. Nada que copiar

Para añadir tú los items a qb-core en lugar de dejar que lo haga el script, pega el bloque de QBCore en qb-core/shared/items.lua.

Otro inventario que copie una de estas APIs: pon Config.Inventory en ese (consulta la sección 5). Un inventario propio se puede conectar en server/bridge.lua, que es legible: cada inventario ahí son tres pequeñas funciones (contar, añadir, quitar).

Bloque de ox_inventory

Pega dentro de la tabla return { ... } de ox_inventory/data/items.lua:

Lua
    ['zds_repair_kit'] = { label = 'Speaker Repair Kit', weight = 600, stack = false, close = true, description = 'Fixes a broken speaker. Use it next to one.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_repair_kit.png' } },
    ['zds_roam'] = { label = 'Roam Portable Speaker', weight = 2000, stack = false, close = true, description = 'Portable speaker with twin bass radiators. Carry it or set it down.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_roam.png' } },
    ['zds_room_ceiling'] = { label = 'Ceiling Speaker', weight = 2000, stack = false, close = true, description = 'Indoor. Round ceiling or wall speaker for background music in a business.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_ceiling.png' } },
    ['zds_room_shelf'] = { label = 'Shelf Speaker', weight = 4000, stack = false, close = true, description = 'Indoor. Bookshelf speaker: link several around a home or shop.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_shelf.png' } },
    ['zds_room_sub'] = { label = 'Home Subwoofer', weight = 8000, stack = false, close = true, description = 'Indoor. Cube subwoofer: link it to your indoor speakers for deep bass.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_sub.png' } },
    ['zds_room_tower'] = { label = 'Tower Speaker', weight = 10000, stack = false, close = true, description = 'Indoor. Floor-standing tower with two woofers: deep, clean sound for a whole room.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_room_tower.png' } },
    ['zds_stage_array'] = { label = 'Line Array Speaker', weight = 12000, stack = false, close = true, description = 'Concert. Line-array speaker for long throw over a big crowd. Stack them.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_array.png' } },
    ['zds_stage_mic'] = { label = 'Mic Stand', weight = 3000, stack = false, close = true, description = 'Concert. A mic on a boom stand: link it to your concert speakers, stand at it and sing through them (/soundmic).',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_mic.png' } },
    ['zds_stage_mixer'] = { label = 'DJ Mixer', weight = 5000, stack = false, close = true, description = 'Concert. Not a speaker: whoever stands at it runs every linked concert speaker (volume, bass, sound, timing).',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_mixer.png' } },
    ['zds_stage_monitor'] = { label = 'Stage Monitor', weight = 6000, stack = false, close = true, description = 'Concert. Wedge monitor so the DJ or band hears the mix on stage.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_monitor.png' } },
    ['zds_stage_pa'] = { label = 'PA Speaker', weight = 10000, stack = false, close = true, description = 'Concert. Powered 15" PA top on a tripod: link many for an event.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_pa.png' } },
    ['zds_stage_sub'] = { label = 'Concert Subwoofer', weight = 15000, stack = false, close = true, description = 'Concert. Double 18" sub cabinet: the bass you feel at a show.',
        client = { export = 'zerodev-sound.useItem', image = 'nui://zerodev-sound/web/img/items/zds_stage_sub.png' } },

Bloque de QBCore

El formato de item de QBCore, que leen qb-, ps-, lj- y qs-inventory:

Lua
    ['zds_repair_kit'] = { name = 'zds_repair_kit', label = 'Speaker Repair Kit', weight = 600, type = 'item', image = 'zds_repair_kit.png', unique = true, useable = true, shouldClose = true, description = 'Fixes a broken speaker. Use it next to one.' },
    ['zds_roam'] = { name = 'zds_roam', label = 'Roam Portable Speaker', weight = 2000, type = 'item', image = 'zds_roam.png', unique = true, useable = true, shouldClose = true, description = 'Portable speaker with twin bass radiators. Carry it or set it down.' },
    ['zds_room_ceiling'] = { name = 'zds_room_ceiling', label = 'Ceiling Speaker', weight = 2000, type = 'item', image = 'zds_room_ceiling.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Round ceiling or wall speaker for background music in a business.' },
    ['zds_room_shelf'] = { name = 'zds_room_shelf', label = 'Shelf Speaker', weight = 4000, type = 'item', image = 'zds_room_shelf.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Bookshelf speaker: link several around a home or shop.' },
    ['zds_room_sub'] = { name = 'zds_room_sub', label = 'Home Subwoofer', weight = 8000, type = 'item', image = 'zds_room_sub.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Cube subwoofer: link it to your indoor speakers for deep bass.' },
    ['zds_room_tower'] = { name = 'zds_room_tower', label = 'Tower Speaker', weight = 10000, type = 'item', image = 'zds_room_tower.png', unique = true, useable = true, shouldClose = true, description = 'Indoor. Floor-standing tower with two woofers: deep, clean sound for a whole room.' },
    ['zds_stage_array'] = { name = 'zds_stage_array', label = 'Line Array Speaker', weight = 12000, type = 'item', image = 'zds_stage_array.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Line-array speaker for long throw over a big crowd. Stack them.' },
    ['zds_stage_mic'] = { name = 'zds_stage_mic', label = 'Mic Stand', weight = 3000, type = 'item', image = 'zds_stage_mic.png', unique = true, useable = true, shouldClose = true, description = 'Concert. A mic on a boom stand: link it to your concert speakers, stand at it and sing through them (/soundmic).' },
    ['zds_stage_mixer'] = { name = 'zds_stage_mixer', label = 'DJ Mixer', weight = 5000, type = 'item', image = 'zds_stage_mixer.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Not a speaker: whoever stands at it runs every linked concert speaker (volume, bass, sound, timing).' },
    ['zds_stage_monitor'] = { name = 'zds_stage_monitor', label = 'Stage Monitor', weight = 6000, type = 'item', image = 'zds_stage_monitor.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Wedge monitor so the DJ or band hears the mix on stage.' },
    ['zds_stage_pa'] = { name = 'zds_stage_pa', label = 'PA Speaker', weight = 10000, type = 'item', image = 'zds_stage_pa.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Powered 15" PA top on a tripod: link many for an event.' },
    ['zds_stage_sub'] = { name = 'zds_stage_sub', label = 'Concert Subwoofer', weight = 15000, type = 'item', image = 'zds_stage_sub.png', unique = true, useable = true, shouldClose = true, description = 'Concert. Double 18" sub cabinet: the bass you feel at a show.' },

Si cambiaste una etiqueta, un precio o un peso en config/catalogue.lua, copia las entradas de tu propia consola: las muestra a partir de tus ajustes.

4. Primer inicio: lo que deberías ver

En la consola del servidor

ZeroDev Sound muestra un recuadro de comprobación (escribe soundcheck en la consola del servidor para volver a mostrarlo): base de datos y esquema, framework, dinero, inventario e items, la tabla de garajes, targeting, Pulse Phone, modelos, talleres de instalación y ajustes cambiados en el juego. Cada línea que no esté en OK dice qué hacer; docs/SETUP.md muestra un ejemplo y docs/TROUBLESHOOTING.md explica cada línea.

  • La línea del framework nombra lo que se encontró. Si es incorrecto, configura Config.Framework o Config.Inventory en config/config.lua.
  • Una línea amarilla Add these to ox_inventory/data/items.lua ... (o ... if these items are not in ... yet, add them) seguida de entradas de items: haz la sección 3 para tu inventario y reinicia. El mensaje de ox_inventory desaparece cuando los items están. En qs-, codem-, origen- y tgiann-inventory las entradas se muestran en cada inicio como recordatorio, las hayas añadido o no.
  • Una línea amarilla Copy zds_....png from zerodev-sound/web/img/items into ...: esas imágenes aún no están en la carpeta de imágenes de tu inventario. Nombra la carpeta.
  • Pulse Phone app not registered: ...: Pulse Phone está en marcha pero rechazó la app. Consulta la sección 9.

En el juego (cinco comprobaciones)

  1. El mapa muestra un blip ZeroDev Sound en Legion Square y un blip Car audio bay en Benny's.
  2. En la tienda, un dependiente está junto a un expositor con los altavoces. Apunta al dependiente con el target (o pulsa E si no hay resource de target) y compra un Roam Portable Speaker.
  3. Úsalo desde tu inventario. Sale a tus manos. Pulsa E, abre Library y reproduce Night Drive (una pista de demostración que viene con el script). La gente a tu alrededor lo oye.
  4. Súbete a un coche. Las primeras veces, la esquina de la pantalla indica qué tecla abre el estéreo del coche (K por defecto).
  5. Entra en el taller de audio de coche como conductor y pulsa E. El instalador se abre sobre tu coche.

5. Los ajustes que más se cambian

En el juego: /soundadmin > Settings cambia en vivo los más comunes para todos (talleres de instalación, quién puede instalar, qué coches, precios, volumen máximo, horario de silencio, límites, tienda, policía y daños). Se guardan en la base de datos y tienen prioridad sobre config.lua hasta que pulses Reset to config en el panel.

Todo está en config/config.lua salvo que se indique otra cosa. Los productos, precios y piezas de coche están en config/catalogue.lua; el sonido de fábrica de cada coche está en config/vehicles.lua.

Lo que quieres Ajuste
Forzar el framework o el inventario Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none)
Cambiar el comando del mando Config.Command (por defecto sound, es decir, /sound)
Cambiar la tecla del estéreo del coche Config.HeadUnitKey (por defecto K). Los jugadores pueden reasignarla ellos mismos en los ajustes de GTA > Key Bindings > FiveM.
Altavoces por jugador Config.MaxPlacedPerPlayer (por defecto 8). Los admins no tienen límite.
Altavoces en un grupo enlazado Config.MaxLinkedPerGroup (por defecto 16)
A qué distancia conectar y hasta dónde controlar Config.PairRange (15 m), Config.ControlRange (80 m)
Mover la tienda o añadir más tiendas Config.Shop.locations. Cada una lleva label, coords, blip y, opcionalmente, heading (hacia dónde mira el expositor) y clerk (un modelo de ped). Config.Shop.account es bank o cash. Config.Shop.enabled = false quita la tienda.
Precios de los altavoces price en cada producto de config/catalogue.lua > Catalogue.Speakers. El precio del kit de reparación es Config.Damage.repairPrice.
Dónde se monta el audio de coche Config.Install.bays (cada uno con label, coords, radius, blip). Por defecto: un taller en Benny's.
Dejar que los dueños monten en su coche en cualquier sitio Config.Install.anywhere = true. Añade un botón Install en el estéreo del coche y el comando /caraudio (Config.Install.command).
Qué coches se pueden montar Config.Install.vehicles: 'owned' (por defecto) o 'any'. Consulta la sección 7.
Solo los mecánicos pueden instalar Config.Install.anyone = false y pon los trabajos en Config.Install.jobs (deben estar de servicio).
Piezas de coche gratis Config.Install.chargeParts = false. Config.Install.account es bank o cash.
Precios de las piezas de coche y los kits listos Catalogue.CarParts y Catalogue.CarKits en config/catalogue.lua
El sonido de fábrica de un coche Vehicles.ByClass y Vehicles.ByModel en config/vehicles.lua (basic, premium, reference, bike, none)
Biblioteca activada o desactivada Config.Sources.library. Mira la sección 8.
Tus propias canciones Config.Library (archivos en web/library/)
Horario de silencio Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (hora local del servidor)
Trabajos y poderes de la policía Config.Police (consulta la sección 10)
Altavoces que se rompen al dispararles Config.Damage.enabled
Límites de rendimiento Config.Streaming.propRange (modelos dibujados a menos de 90 m), maxAudibleSessions (6 canciones distintas oídas a la vez), maxMovingParts (24 conos animados por frame)
Líneas de consola extra para soporte Config.Debug (ponlo en true mientras buscas un problema)

Nombres de items. Si otro script ya usa uno de los nombres de item zds_, cambia la clave de ese producto en Catalogue.Speakers (por ejemplo zds_roam = { ... }), usa el nuevo nombre en tu inventario y renombra su imagen para que coincida.

6. Controles

Qué Cómo
Abrir el mando /sound, o E en un altavoz, o la app Sound en Pulse Phone
Estéreo del coche K sentado en un coche (reasignable en los ajustes de GTA)
Colocar un altavoz Usa su item. Apunta a donde debe ir: se ve en verde donde cabe. La rueda del ratón o Q / E lo giran. Enter o clic izquierdo lo coloca; Backspace o clic derecho cancela.
Apilar un line array Mientras lo colocas, Arrow Up / Arrow Down lo sube o lo baja
Llevar un Roam Sale a tus manos y sigue sonando mientras caminas. E música, G dejarlo, H recogerlo. Al subir a un coche o entrar en el agua se guarda.
Mover o recoger un altavoz tuyo Apúntalo con el target y elige Move o Pack up, o sin resource de target ponte a su lado: G mover (en un Roam: volver a llevarlo), H recoger. La pestaña Speakers del mando también puede recogerlo.
Enlazar altavoces Conéctate a uno de los tuyos, abre la pestaña Speakers del mando y pulsa Link junto a tus otros altavoces cercanos. Los portátiles se enlazan con portátiles, los de interior con los de interior y los de concierto con los de concierto (a menos de 40 m, 60 m y 250 m respectivamente).
Instalador de audio de coche Entra en el taller como conductor y pulsa E (o el botón Install del estéreo / /caraudio cuando está activado montar en cualquier sitio). Arrastra una pieza para deslizarla por las superficies del coche, Alt + arrastrar la desliza en plano a su altura (sin imán), Shift + arrastrar la levanta, Q / E o Shift + rueda la giran.
Canta por los altavoces En la Mesa de mezclas de DJ o en un Pie de micro (se vende en la tienda, enlázalo como un altavoz) de los altavoces a los que estás conectado, o en el pie de micro de un montaje en coche: /soundmic coge el micro y /soundmic otra vez lo devuelve a su sitio
Denunciar música alta /noise
Lista de admin /soundadmin
Dar un item (consola del servidor) givespeaker <player id> <item name>
Reventar un sub para mostrar el efecto (staff) /soundblow en el coche, o soundblow <plate> en la consola

En el mando: Music (la biblioteca de tu servidor), Queue (lo siguiente, playlists guardadas), Speakers (encendido y volumen de cada altavoz, enlazar, recoger) y Tune (seis modos de sonido, un ecualizador de tres bandas, quién elige la música, horario y "Real distance" para montajes de conciertos). Quién elige la música: Only me; Party, donde cualquiera cerca puede pedir canciones que el dueño aprueba; o Anyone, donde la gente cerca puede reproducir, pausar, saltar, poner en cola y avanzar. Opening hours reproduce solo una de las playlists del dueño entre dos horas, para una tienda o un club.

El micro (necesita pma-voice). Mientras lo tienes, todos los que estén cerca de cualquier altavoz de ese sistema oyen tu voz a través de él, con sonido de megafonía, tan alto como ese altavoz suena con la música y hasta donde llega; aléjate 4 m de la mesa de mezclas o del pie de micro, desconéctate o devuelve el micro, y tu voz vuelve a ser normal. Solo el dueño del sistema (y los admins, si es un coche) puede cantar a través de él; da a otros jugadores el ace zds.mic para que puedan usar cualquier sistema. Tu voz no sale desde el punto de cada altavoz: el chat de voz no puede colocar una voz ahí, así que quien está cerca de un altavoz te oye con el volumen de ese altavoz. Ajustes: Config.Mic.

7. Audio de coche

Cómo montan los jugadores

  1. Entra en el taller de audio de coche (Benny's por defecto) y pulsa E como conductor.
  2. Empieza con un kit listo (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) o elige piezas: subwoofers (de 8" a 18"), cajas, etapas, altavoces de puerta, tweeters, pods, falsos suelos, paneles, metacrilato, condensador, segunda batería, tira LED y radio.
  3. Arrastra cada pieza a su sitio en el coche. Los subs encajan en los huecos de su caja. Cada pieza admite un acabado (ocho colores), y los subs y altavoces una rejilla y un anillo de luz. Mirror copia una pieza al otro lado; Fine position la mueve en pasos pequeños. Cinco vistas de cámara: Boot, Cabin, Side, Front, Top. Size: los subs vienen en 8", 10", 12", 15" y 18" (todos los subs de una caja son del mismo tamaño y la caja se construye a su alrededor, hasta un 30% más grande o más pequeña de lo que se diseñó); los altavoces de puerta en 5.25", 6.5" y 6x9"; las demás piezas del 80% al 130% en pasos del 5% (la radio tiene un tamaño estándar). Las cajas y paneles más grandes cuestan más; una pieza que se hace más pequeña no cuesta nada. Los conos se mueven más en los altavoces más grandes, y un altavoz de puerta más grande llega más abajo.
  4. Pulsa Test system para oír cómo suena el montaje en el coche antes de pagar. Reproduce la primera canción de Config.Library (la pista de demostración incluida, salvo que la hayas cambiado).
  5. Pulsa Install. Solo se cobran las piezas nuevas para el coche; las piezas que se conservan de la instalación anterior no se vuelven a cobrar.

La instalación se guarda asociada a la matrícula y vuelve cada vez que vuelve el coche: desde cualquier garaje, depósito o reaparición. Nada que editar en tu script de garajes.

Lo que oyen los jugadores

  • Cada coche ya tiene un sonido de fábrica según su clase y modelo: un sistema de 4 altavoces, uno premium de 10 altavoces o uno de referencia de 13 altavoces, y altavoces en el carenado de las motos; las bicicletas, aeronaves y trenes no tienen. Los altavoces montados sustituyen a los altavoces de fábrica más cercanos; los subs se suman.
  • Fuera del coche, sobre todo los graves atraviesan la carrocería. Las puertas abiertas, las ventanillas abiertas y el maletero abierto dejan salir más cada uno, hacia el lado al que dan.
  • Un coche con subs rebota suavemente sobre sus muelles con los graves mientras está aparcado o va muy despacio (nunca en marcha), y todos los que van dentro sienten el golpe.
  • El estéreo (K) tiene volumen, nivel del sub, fader y balance.
  • Los subs forzados muy por encima de lo que permiten su etapa y su potencia nominal, cerca del volumen máximo, durante un rato, pueden reventar. Todos los que están cerca del coche ven una fina voluta de humo saliendo de ese sub y oyen un pop sordo. Un sub reventado deja de moverse, los graves bajan, y su cono se queda chamuscado hasta que se sustituye en el taller (el sub nuevo se paga; quitar la marca no es una reparación gratis). El staff puede mostrarlo: /soundblow en el coche, o soundblow <plate> en la consola del servidor.

Qué coches se pueden montar (Config.Install.vehicles)

  • 'owned' (por defecto): solo los coches de la tabla de vehículos en propiedad de tu framework (owned_vehicles en ESX, player_vehicles en QBCore y Qbox).
  • 'any': también los coches que no son de nadie (coches de NPC, generados, de alquiler).
  • En cualquier caso, un coche que es de otro jugador sigue siendo suyo: solo su dueño, un mecánico de servicio de Config.Install.jobs o un admin pueden cambiarlo. En un servidor standalone todos los coches cuentan como en propiedad.

Garajes, matrículas y depósitos

  • Las matrículas se comparan sin espacios sobrantes y en mayúsculas, así que los garajes que rellenan o cambian las mayúsculas de las matrículas siguen coincidiendo.
  • Un coche con una matrícula falsa o cambiada no encuentra su instalación hasta que vuelve a tener su matrícula guardada.
  • Los coches que solo existen en la pantalla de un jugador (vistas previas de garajes, algunos coches de concesionario) nunca tienen instalación: para los demás no son coches reales.

Otros scripts de sonido o de estéreo

ZeroDev Sound es su propio resource con sus propios comandos (/sound, /caraudio, ...), eventos y state bags de vehículo, así que no sustituye ni modifica otros scripts (mientras suena en un coche solo apaga la propia radio del coche de GTA). No se ha probado usar a la vez dos scripts de audio de coche en el mismo coche: usa un estéreo por coche.

8. Fuentes de música

La música solo se reproduce desde archivos de audio que añades al recurso. Los jugadores eligen de tu lista; no pueden introducir enlaces, y nunca se reproduce ninguna dirección web. Añade solo audio que sea tuyo o cuyos derechos de uso y distribución tengas.

  • Pon archivos mp3 u ogg en zerodev-sound/web/library/ y apunta cada uno en Config.Library como { title = '...', artist = '...', file = 'name.mp3' }. Tienen la experiencia completa: sonido 3D, salas y paredes, cabinas de coche, modos de sonido, EQ y conos que se mueven con los graves reales.
  • Config.Sources.library = false desactiva la biblioteca.
  • La radio propia del coche de GTA sigue funcionando en cualquier coche mientras no suene en él ninguna canción de este recurso.
  • El cuadro de arranque muestra cuántas canciones pueden elegir los jugadores y avisa de cada entrada que omitió (un nombre de archivo que no es mp3 u ogg dentro de web/library/).
  • Al actualizar desde 3.0.0: las canciones guardadas, las canciones recientes y las entradas de playlists que eran enlaces ya no se muestran ni se reproducen. Las canciones de la biblioteca siguen funcionando.

9. Pulse Phone

Nada que configurar. Cuando Pulse Phone está en marcha en el servidor (nombre de resource phone, cualquiera de las dos ediciones):

  • Cada teléfono recibe una app Sound en su pantalla de inicio. Es el mismo mando que /sound: conectarse a un altavoz o al coche, elegir música, controlar todo el grupo. Los jugadores pueden quitarla y recuperarla desde App Hub.
  • Lo que suena en el altavoz o el coche conectado, con el tiempo restante, aparece en la Island y en la pantalla de bloqueo. Un toque abre la app Sound.
  • Pulse Drive (la pantalla de coche de Pulse, F10 por defecto) muestra el estéreo del coche en el que vas sentado: canción, artista y portada, con reproducir, pausa, anterior, siguiente y volumen, y un botón Open para la app Sound. Esto necesita Pulse Phone 1.2.9 o superior; las versiones anteriores simplemente no lo muestran.

Los jugadores sin el teléfono usan /sound y K, que hacen todo lo que hace la app.

Si renombraste la carpeta del teléfono, añade esta línea a config/config.lua con su nombre:

Lua
Config.PulseResource = 'phone'

10. Policía, vecinos y admins

Qué Cómo Ajuste
Denunciar música alta /noise envía el altavoz sonando más cercano (a menos de 60 m) a la policía de servicio como un blip parpadeante durante 3 minutos. Una denuncia por jugador cada 2 minutos. Config.Police.complaints, complaintRange
Apagar un altavoz Policía de servicio: apunta al altavoz con el target > Turn off (police), o la pestaña Tune del mando > Police. A menos de 12 m. Config.Police.canSilence, silenceMinutes (15)
Confiscar un altavoz Policía de servicio, a menos de 4 m: target > Seize (police), o Tune > Police > Seize. El altavoz pasa al agente. Config.Police.canSeize
Trabajos de policía Jugadores con estos trabajos, de servicio Config.Police.jobs
Altavoces rotos Disparar a un altavoz colocado lo rompe: chisporrotea y se para. Un Speaker Repair Kit (a la venta en la tienda, en Accessories) lo arregla: usa el kit a su lado. Config.Damage
Lista de admin /soundadmin: todos los altavoces del servidor, qué reproducen y de quién son, con botones para poner un waypoint, detener la música o quitar el altavoz. Config.AdminAce (zerodev.sound.admin)
Dar un item Consola del servidor: givespeaker <player id> <item name>

11. Idiomas

El script viene en los mismos 25 idiomas que Pulse Phone. Elige uno en config/config.lua:

Código Idioma Código Idioma Código Idioma
en Inglés hu Magyar pt-PT Português (Portugal)
ar العربية it Italiano ro Română
bs Bosanski ja 日本語 ru Русский
cs Čeština ko 한국어 sl Slovenščina
da Dansk nb Norsk bokmål sv Svenska
de Deutsch nl Nederlands th ไทย
es Español pl Polski tr Türkçe
fr Français pt-BR Português (Brasil) uk Українська
zh-CN 简体中文

Config.Locale = 'de', por ejemplo. El valor por defecto, 'auto', sigue a Pulse Phone: el servidor toma el Config.Locale de Pulse, y cada jugador recibe Sound en el idioma que eligió en su teléfono. Sin Pulse, está en inglés. Los mensajes del juego, los avisos de tecla, los nombres de los objetos y el nombre de la tecla del estéreo están en locales/<code>.lua; la interfaz (mando, estéreo del coche, tienda, instalador, app de Pulse) está en locales/<code>_ui.lua. Todo lo que falte se muestra en inglés.

Para cambiar una línea, edítala en el archivo de ese idioma. Deja cada %s, %d, %.1f, %% y ~a~ tal como están. Para añadir un idioma propio, copia locales/en.lua a locales/xx.lua, cambia Locales['en'] por Locales['xx'] (en los dos sitios), traduce el texto entre comillas y pon Config.Locale = 'xx'. locales/ui_strings.txt lista todas las claves de la interfaz para un xx_ui.lua.

12. Solución de problemas

Los jugadores no pueden usar los items de altavoz

  • ox_inventory: las entradas deben estar dentro de ox_inventory/data/items.lua con su línea client, y hay que reiniciar ox_inventory después de pegarlas. La carpeta debe seguir llamándose zerodev-sound (las entradas llaman a zerodev-sound.useItem).
  • QBCore / ESX: zerodev-sound debe iniciarse después de tu framework en server.cfg.
  • codem-inventory en QBCore: completa el paso propio de codem-inventory que dirige QBCore.Functions.UseItem hacia él.
  • Sin inventario: los altavoces no son items. Los jugadores abren /sound y pulsan Set up en Your speakers.

Faltan las imágenes de los items

  • ox_inventory: nada que copiar; la ruta de la imagen apunta a zerodev-sound. Si aparecen en blanco, revisa la línea image = 'nui://zerodev-sound/...' de la entrada y el nombre de la carpeta.
  • Otros inventarios: lee la línea de consola Copy ... into ...: lista las imágenes que faltan y la carpeta donde van. Cópialas desde zerodev-sound/web/img/items/ y reinicia el inventario.

Es a propósito: los jugadores eligen solo de tu biblioteca. Añade la canción a Config.Library (sección 8).

No hay ningún sonido

  • El navegador integrado de FiveM inicia el sonido sin clic, así que los jugadores nunca tienen que pulsar nada para "permitir" el audio. Si un jugador no oye nada mientras los demás sí, revisa FiveM en su mezclador de volumen de Windows.
  • Revisa el altavoz en la pestaña Speakers del mando: puede estar apagado, o Broken.
  • Puede que la policía lo haya apagado (durante Config.Police.silenceMinutes), o que el horario de silencio esté limitando el volumen (Config.QuietHours).
  • Un jugador oye como máximo Config.Streaming.maxAudibleSessions canciones distintas a la vez (6), empezando por las más cercanas.
  • Test system en el instalador no suena cuando Config.Library está vacío o Config.Sources.library = false: reproduce la primera canción de la biblioteca.

La tienda no está

  • Config.Shop.enabled debe ser true.
  • El dependiente y el expositor solo aparecen cuando un jugador está a unos 70 m de Config.Shop.locations, y solo en la pantalla de ese jugador. Revisa las coordenadas que pusiste.
  • Con ox_target o qb-target, apunta al dependiente. Sin ninguno, ponte junto al dependiente: E Browse speakers.

Un altavoz aparece como un altavoz normal de GTA, o no aparece

Falta la carpeta stream/ o se renombró, o el jugador entró antes de que arrancara el resource. Reinicia el servidor y vuelve a conectarte.

Mensajes del audio de coche y lo que significan

Mensaje Por qué Solución
Drive into a car audio bay to build. Montar en cualquier sitio está desactivado y el coche no está en un taller. Entra en el taller (Config.Install.bays), o pon Config.Install.anywhere = true.
Stand next to your car to build its sound system. Montar en cualquier sitio está activado y estás a más de 8 m del coche, o /caraudio no encontró ningún coche a menos de 4 m. Ponte junto al coche o siéntate en él.
Stop the car first. El coche se está moviendo. Detente.
Car audio can only be fitted to a car you own. Config.Install.vehicles = 'owned' y esta matrícula no está en tu tabla de vehículos en propiedad. También se muestra a todos salvo a los admins cuando esa tabla no se puede leer: entonces la consola muestra una línea roja could not read the owned-vehicles table. Usa un coche en propiedad, pon 'any', o corrige el error de base de datos que nombra la consola.
Only the owner can change this car's audio. El coche es de otro jugador. También se muestra cuando Config.Install.anyone = false y el jugador no tiene un trabajo de servicio de Config.Install.jobs. Lo monta el dueño, un mecánico de servicio o un admin.
Not enough money. Las piezas nuevas cuestan más de lo que el jugador tiene en Config.Install.account. Quita piezas, o pon Config.Install.chargeParts = false.
A subwoofer blew. It needs replacing. Los subs se forzaron demasiado durante demasiado tiempo cerca del volumen máximo. Sustituye el sub en el taller; una etapa más grande ayuda.

La policía no ve sus opciones

Añade tus nombres de trabajo de policía a Config.Police.jobs. Los jugadores deben estar de servicio.

13. Actualizar

De la 1.x a la 2.0: lee UPGRADING.md. Entre versiones 2.x:

  1. Haz una copia de seguridad de tu carpeta config/, de locales/ si la tradujiste, y de las canciones que añadiste a web/library/.
  2. Detén el servidor. Sustituye la carpeta zerodev-sound por la nueva (conserva el nombre).
  3. Vuelve a poner tus archivos de config/. Si las notas de la actualización mencionan ajustes nuevos, copia esas líneas de los archivos nuevos a los tuyos.
  4. Inicia el servidor y lee la consola. Los items nuevos, si los hay, se muestran para tu inventario.

Los altavoces colocados, las instalaciones en coches y las listas de reproducción se guardan en la base de datos (zds_speakers, zds_car_builds, zds_playlists, zds_stash) y una actualización no los toca.

Volver atrás: guarda la carpeta zerodev-sound anterior fuera de resources hasta que la nueva versión funcione bien, y haz una copia de seguridad de la base de datos antes de actualizar. Para volver atrás, detén el servidor, vuelve a poner la carpeta anterior y tu config/, y arráncalo. Volver de la 3.0 a la 2.x con la misma base de datos no se ha probado, así que restaura la copia de seguridad de la base de datos si algo no va bien.

Traducido del inglés. Si algo de aquí no coincide con la página en inglés, la página en inglés es la correcta. English