Documentación de ZeroDev Sound
ZeroDev Sound: guía de instalación
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:
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-soundPaso 3. Da a tus admins el permiso de admin (sin límite de altavoces, la lista de /soundadmin, detener y quitar a distancia):
add_ace group.admin zerodev.sound.admin allowPaso 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:
['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:
['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.FrameworkoConfig.Inventoryenconfig/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)
- El mapa muestra un blip ZeroDev Sound en Legion Square y un blip Car audio bay en Benny's.
- 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.
- Ú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.
- 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).
- 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
- Entra en el taller de audio de coche (Benny's por defecto) y pulsa E como conductor.
- 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.
- 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.
- 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). - 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:
/soundblowen el coche, osoundblow <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_vehiclesen ESX,player_vehiclesen 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.jobso 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 enConfig.Librarycomo{ 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 = falsedesactiva 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:
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.luacon su líneaclient, y hay que reiniciar ox_inventory después de pegarlas. La carpeta debe seguir llamándosezerodev-sound(las entradas llaman azerodev-sound.useItem). - QBCore / ESX:
zerodev-sounddebe iniciarse después de tu framework enserver.cfg. - codem-inventory en QBCore: completa el paso propio de codem-inventory que dirige
QBCore.Functions.UseItemhacia él. - Sin inventario: los altavoces no son items. Los jugadores abren
/soundy 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 desdezerodev-sound/web/img/items/y reinicia el inventario.
Un jugador no puede reproducir un enlace
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.maxAudibleSessionscanciones distintas a la vez (6), empezando por las más cercanas. - Test system en el instalador no suena cuando
Config.Libraryestá vacío oConfig.Sources.library = false: reproduce la primera canción de la biblioteca.
La tienda no está
Config.Shop.enableddebe sertrue.- 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:
- Haz una copia de seguridad de tu carpeta
config/, delocales/si la tradujiste, y de las canciones que añadiste aweb/library/. - Detén el servidor. Sustituye la carpeta
zerodev-soundpor la nueva (conserva el nombre). - 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. - 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.