Documentação do ZeroDev Sound
ZeroDev Sound: guia de instalação
Este recurso não contém nem fornece nenhuma integração de áudio ou música de terceiros. A música toca apenas a partir de arquivos de áudio que o dono do servidor adiciona ao recurso e do rádio integrado do GTA. Os jogadores não podem inserir links. Adicione apenas áudio que seja seu ou cujos direitos de uso e distribuição você tenha; transmitir conteúdo em streaming sem permissão pode violar o Cfx.re Creator Platform License Agreement e a lei.
Caixas de som que os jogadores compram, carregam, colocam no chão e conectam, e som automotivo que eles montam no próprio carro. Esta é a referência completa. Para a versão curta, leia docs/SETUP.md (5 passos); para problemas, docs/TROUBLESHOOTING.md; vindo da 1.x, UPGRADING.md.
Conteúdo 1. Requisitos 2. Instalação 3. Itens para o seu inventário 4. Primeira inicialização: o que você deve ver 5. As configurações mais alteradas 6. Controles 7. Som automotivo 8. Fontes de música 9. Pulse Phone 10. Polícia, vizinhos e admins 11. Idiomas 12. Solução de problemas 13. Atualização
1. Requisitos
| Obrigatório | oxmysql. O ZeroDev Sound cria as próprias tabelas na primeira inicialização; não há arquivo SQL para importar. |
| Framework | ESX Legacy, QBCore, Qbox, ou nenhum (standalone). Detectado sozinho. |
| Inventário | ox_inventory, qb-inventory (também ps- e lj-inventory), qs-inventory, codem-inventory, core_inventory, origen_inventory, tgiann-inventory, o inventário do ESX, ou nenhum. Detectado sozinho. |
| Opcional | ox_target ou qb-target (sem nenhum deles, os jogadores recebem um aviso de tecla na tela). Pulse Phone 1.2.9 ou mais recente (adiciona o app Sound e o som do carro no Pulse Drive). pma-voice para o microfone: sem ele, dá para segurar o microfone e cantar, mas ninguém ouve pelas caixas de som. |
Mais nada: sem ox_lib, sem API key, sem conta Google.
Servidores Linux
Servidores Linux: use o artifact de servidor Recommended, não o Latest. Na página de download do servidor FiveM (docs.fivem.net/docs/server-download/), escolha Linux e o branch de atualização Recommended. Um servidor no artifact Linux mais recente travou ao carregar (o FXServer imprimiu um dump de /proc/self/maps), e mudar para o artifact recomendado resolveu. Esse é o único relato de Linux que temos; ainda não rodamos o ZeroDev Sound num servidor Linux nós mesmos.
Servidores Linux: use o artifact de servidor Recommended, não o Latest. Na página de download do servidor FiveM (docs.fivem.net/docs/server-download/), escolha Linux e o branch de atualização Recommended. Um servidor no artifact Linux mais recente travou ao carregar (o FXServer imprimiu um dump de /proc/self/maps), e mudar para o artifact recomendado resolveu. Esse é o único relato de Linux que temos; ainda não rodamos o ZeroDev Sound num servidor Linux nós mesmos.
Num servidor standalone (sem framework), tudo é grátis: a loja e as peças de carro não cobram nada.
2. Instalação
Passo 1. Coloque a pasta. Coloque a pasta zerodev-sound na sua pasta resources (qualquer subpasta serve, por exemplo resources/[zerodev]/zerodev-sound). Mantenha o nome da pasta zerodev-sound: as entradas de item do ox_inventory a chamam por esse nome.
Passo 2. Adicione ao server.cfg, depois do seu banco de dados, framework e inventário:
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-soundPasso 3. Dê aos seus admins a permissão de admin (sem limite de caixas de som, a lista do /soundadmin, parar e remover à distância):
add_ace group.admin zerodev.sound.admin allowPasso 4. Configure os itens para o seu inventário: seção 3. No inventário do ESX e no QBCore isso é feito para você.
Passo 5. Reinicie o servidor (um reinício completo, não só do resource, para todo jogador carregar os modelos) e confira o console: seção 4.
3. Itens para o seu inventário
São 12 itens: dez caixas de som, o pedestal de microfone e o kit de reparo.
| Nome do item | Rótulo | Peso |
|---|---|---|
zds_roam |
Caixa portátil Roam | 2 kg |
zds_room_shelf |
Caixa de estante | 4 kg |
zds_room_tower |
Caixa torre | 10 kg |
zds_room_ceiling |
Caixa de teto | 2 kg |
zds_room_sub |
Subwoofer de casa | 8 kg |
zds_stage_pa |
PA Speaker | 10 kg |
zds_stage_sub |
Subwoofer de show | 15 kg |
zds_stage_array |
Line Array Speaker | 12 kg |
zds_stage_monitor |
Monitor de palco | 6 kg |
zds_stage_mixer |
Mixer de DJ | 5 kg |
zds_stage_mic |
Pedestal de microfone | 3 kg |
zds_repair_kit |
Speaker Repair Kit | 0.6 kg |
As imagens estão em zerodev-sound/web/img/items/. Você nunca precisa adivinhar: sempre que algo está faltando, o console do servidor imprime as entradas exatas para o seu inventário e indica qualquer imagem que ainda não esteja no lugar.
Qual inventário você tem?
| Inventário | O que você faz | As imagens vão em |
|---|---|---|
| Inventário do ESX (ESX Legacy sem ox) | Nada. Os itens são adicionados à tabela items na inicialização. |
Nada para copiar |
| ox_inventory (ESX, Qbox ou standalone) | Cole o bloco do ox_inventory em ox_inventory/data/items.lua, dentro da tabela. Reinicie o ox_inventory, depois o zerodev-sound. |
Nada para copiar: as entradas carregam as imagens do zerodev-sound |
| qb-inventory, ps-inventory, lj-inventory (QBCore) | Nada. Os itens são adicionados aos shared items do QBCore na inicialização. | Copie web/img/items/*.png para <your inventory>/html/images/ |
| qs-inventory | No QBCore, cole o bloco do QBCore em qb-core/shared/items.lua. No ESX, cole as mesmas entradas em qs-inventory/shared/items.lua. |
qs-inventory/html/images/ |
| codem-inventory | Adicione os 12 itens em codem-inventory/config/itemlist.lua com os nomes, rótulos e pesos do bloco QBCore. No QBCore, complete também o passo de instalação do próprio codem-inventory que aponta QBCore.Functions.UseItem para o codem-inventory, senão os itens não podem ser usados. |
A pasta de imagens de itens do codem-inventory |
| core_inventory | Nada. Os itens são adicionados para você aos shared items do QBCore ou à tabela items do ESX. |
A pasta de imagens de itens do core_inventory |
| origen_inventory | Adicione os 12 itens em origen_inventory/config/items.lua com os nomes, rótulos e pesos do bloco QBCore. |
A pasta de imagens de itens do origen_inventory |
| tgiann-inventory | Adicione os 12 itens em tgiann-inventory/items/items.lua com os nomes, rótulos e pesos do bloco QBCore. |
inventory_images/images/ |
| Sem inventário | Nada. As caixas de som compradas e guardadas esperam no /sound em Your speakers, com um botão Set up. |
Nada para copiar |
Para adicionar os itens ao qb-core à mão em vez de deixar o script fazer isso, cole o bloco do QBCore em qb-core/shared/items.lua.
Outro inventário que copia uma dessas APIs: defina Config.Inventory para essa (veja a seção 5). Um inventário próprio pode ser conectado em server/bridge.lua, que é legível: cada inventário ali são três funções pequenas (contar, adicionar, remover).
Bloco do ox_inventory
Cole dentro da tabela 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' } },Bloco do QBCore
O formato de item do QBCore, que o qb-, ps-, lj- e qs-inventory leem:
['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.' },Se você mudou um rótulo, preço ou peso em config/catalogue.lua, copie as entradas do seu próprio console: ele as imprime a partir das suas configurações.
4. Primeira inicialização: o que você deve ver
No console do servidor
O ZeroDev Sound imprime um quadro de verificação (digite soundcheck no console do servidor para imprimir de novo): banco de dados e schema, framework, dinheiro, inventário e itens, a tabela de garagem, targeting, Pulse Phone, modelos, oficinas de instalação e configurações alteradas no jogo. Toda linha que não está OK diz o que fazer; o docs/SETUP.md mostra um exemplo e o docs/TROUBLESHOOTING.md explica cada linha.
- A linha do framework diz o que foi encontrado. Se estiver errado, defina
Config.FrameworkouConfig.Inventoryemconfig/config.lua. - Uma linha amarela
Add these to ox_inventory/data/items.lua ...(ou... if these items are not in ... yet, add them) seguida de entradas de item: faça a seção 3 para o seu inventário e depois reinicie. A mensagem do ox_inventory para quando os itens estiverem lá. No qs-, codem-, origen- e tgiann-inventory, as entradas são impressas a cada inicialização como lembrete, tendo você adicionado ou não. - Uma linha amarela
Copy zds_....png from zerodev-sound/web/img/items into ...: essas imagens ainda não estão na pasta de imagens do seu inventário. Ela indica a pasta. Pulse Phone app not registered: ...: o Pulse Phone está rodando, mas recusou o app. Veja a seção 9.
No jogo (cinco verificações)
- O mapa mostra um blip ZeroDev Sound na Legion Square e um blip Car audio bay na Benny's.
- Na loja, um atendente fica num estande com as caixas de som em exposição. Mire no atendente (ou aperte E quando não houver resource de target) e compre uma Roam Portable Speaker.
- Use-a pelo inventário. Ela sai nas suas mãos. Aperte E, abra Library e toque Night Drive (uma faixa de demonstração que vem com o script). As pessoas ao seu redor ouvem.
- Entre num carro. Nas primeiras vezes, o canto da tela diz qual tecla abre o som do carro (K por padrão).
- Entre com o carro na oficina de som automotivo como motorista e aperte E. O instalador abre no seu carro.
5. As configurações mais alteradas
No jogo: /soundadmin > Settings muda as mais comuns ao vivo para todos (oficinas de instalação, quem pode instalar, quais carros, preços, volume máximo, horário de silêncio, limites, loja, polícia e danos). Elas ficam salvas no banco de dados e têm prioridade sobre o config.lua até você apertar Reset to config no painel.
Tudo fica em config/config.lua, salvo indicação. Produtos, preços e peças de carro ficam em config/catalogue.lua; o som de fábrica de cada carro fica em config/vehicles.lua.
| O que você quer | Configuração |
|---|---|
| Forçar o framework ou o inventário | Config.Framework (auto, esx, qb, qbox, standalone), Config.Inventory (auto, ox, qb, qs, codem, core, origen, tgiann, esx, none) |
| Mudar o comando do controle | Config.Command (padrão sound, ou seja, /sound) |
| Mudar a tecla do som do carro | Config.HeadUnitKey (padrão K). Os próprios jogadores podem trocá-la nas configurações do GTA > Key Bindings > FiveM. |
| Caixas de som por jogador | Config.MaxPlacedPerPlayer (padrão 8). Admins não têm limite. |
| Caixas de som em um grupo conectado | Config.MaxLinkedPerGroup (padrão 16) |
| Distância para conectar e alcance para controlar | Config.PairRange (15 m), Config.ControlRange (80 m) |
| Mudar a loja de lugar ou adicionar mais lojas | Config.Shop.locations. Cada uma recebe label, coords, blip e, opcionalmente, heading (para onde o estande fica virado) e clerk (um modelo de ped). Config.Shop.account é bank ou cash. Config.Shop.enabled = false remove a loja. |
| Preços das caixas de som | price em cada produto em config/catalogue.lua > Catalogue.Speakers. O preço do kit de reparo é Config.Damage.repairPrice. |
| Onde o som automotivo é instalado | Config.Install.bays (cada uma com label, coords, radius, blip). Padrão: uma oficina na Benny's. |
| Deixar os donos montarem no próprio carro em qualquer lugar | Config.Install.anywhere = true. Adiciona um botão Install no som do carro e o comando /caraudio (Config.Install.command). |
| Em quais carros dá para montar | Config.Install.vehicles: 'owned' (padrão) ou 'any'. Veja a seção 7. |
| Só mecânicos podem instalar | Config.Install.anyone = false e liste os empregos em Config.Install.jobs (eles precisam estar em serviço). |
| Peças de carro grátis | Config.Install.chargeParts = false. Config.Install.account é bank ou cash. |
| Preços das peças de carro e os kits prontos | Catalogue.CarParts e Catalogue.CarKits em config/catalogue.lua |
| O som de fábrica de um carro | Vehicles.ByClass e Vehicles.ByModel em config/vehicles.lua (basic, premium, reference, bike, none) |
| Biblioteca ligada ou desligada | Config.Sources.library. Veja a seção 8. |
| Suas próprias músicas | Config.Library (arquivos em web/library/) |
| Horário de silêncio | Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (horário local do servidor) |
| Empregos e poderes da polícia | Config.Police (veja a seção 10) |
| Caixas de som quebrando quando levam tiro | Config.Damage.enabled |
| Limites de desempenho | Config.Streaming.propRange (modelos desenhados a até 90 m), maxAudibleSessions (6 músicas diferentes ouvidas ao mesmo tempo), maxMovingParts (24 cones animados por frame) |
| Linhas extras no console para o suporte | Config.Debug (defina como true enquanto investiga um problema) |
Nomes dos itens. Se outro script já usa um dos nomes de item zds_, renomeie a chave daquele produto em Catalogue.Speakers (por exemplo zds_roam = { ... }), depois use o novo nome no seu inventário e renomeie a imagem para combinar.
6. Controles
| O quê | Como |
|---|---|
| Abrir o controle | /sound, ou E em uma caixa de som, ou o app Sound no Pulse Phone |
| Som do carro | K sentado num carro (dá para trocar nas configurações do GTA) |
| Colocar uma caixa de som no chão | Use o item dela. Mire onde ela deve ficar: fica verde onde cabe. A roda do mouse ou Q / E gira. Enter ou clique esquerdo coloca; Backspace ou clique direito cancela. |
| Empilhar um line array | Enquanto posiciona, Seta para cima / Seta para baixo sobe ou desce |
| Carregar uma Roam | Ela sai nas suas mãos e continua tocando enquanto você anda. E música, G colocar no chão, H guardar. Entrar num carro ou na água guarda a caixa. |
| Mover ou guardar uma caixa de som sua | Mire nela e escolha Move ou Pack up, ou, sem resource de target, fique ao lado dela: G mover (numa Roam: carregar de novo), H guardar. A aba Speakers do controle também guarda. |
| Conectar caixas de som | Conecte-se a uma das suas, abra a aba Speakers do controle e aperte Link ao lado das suas outras caixas por perto. Portáteis conectam com portáteis, de casa com de casa, de show com de show (a até 40 m, 60 m e 250 m, respectivamente). |
| Instalador de som automotivo | Entre com o carro na oficina como motorista e aperte E (ou o botão Install no som do carro / /caraudio quando construir em qualquer lugar está ativado). Arraste uma peça para deslizá-la pelas superfícies do carro, Alt + arrastar desliza a peça na horizontal, na altura dela (sem encaixe), Shift + arrastar a levanta, Q / E ou Shift + rolagem a gira. |
| Cante pelas caixas de som | No Mixer de DJ ou em um pedestal de microfone (vendido na loja, vincule-o como uma caixa de som) das caixas de som às quais você está conectado, ou no pedestal de microfone de uma montagem de carro: /soundmic pega o microfone, /soundmic de novo o devolve |
| Denunciar música alta | /noise |
| Lista do admin | /soundadmin |
| Dar um item (console do servidor) | givespeaker <player id> <item name> |
| Queimar um sub para mostrar o efeito (staff) | /soundblow no carro, ou soundblow <plate> no console |
No controle: Music (a biblioteca do seu servidor), Queue (próximas, playlists salvas), Speakers (energia e volume de cada caixa de som, vincular, guardar) e Tune (seis modos de som, um equalizador de três bandas, quem escolhe a música, horário de funcionamento e "Real distance" para montagens de show). Quem escolhe a música: Only me; Party, onde qualquer pessoa por perto pode pedir músicas que o dono aprova; ou Anyone, onde as pessoas por perto podem tocar, pausar, pular, enfileirar e avançar. Opening hours toca sozinho uma das playlists do dono entre dois horários, para uma loja ou um clube.
O microfone (precisa do pma-voice). Enquanto você o segura, todo mundo perto de qualquer caixa de som desse sistema ouve sua voz por ela, com som de PA, tão alto quanto essa caixa toca música e até onde o som dela alcança; afaste-se 4 m do mixer ou do pedestal, desconecte-se ou coloque o microfone de volta, e sua voz volta ao normal. Só o dono do sistema (e os admins, no caso de um carro) pode cantar por ele; dê aos outros jogadores o ace zds.mic para que possam usar qualquer sistema. Sua voz não sai do ponto de cada caixa de som: o chat de voz não consegue posicionar uma voz ali, então quem está perto de uma caixa ouve você no volume daquela caixa. Configurações: Config.Mic.
7. Som automotivo
Como os jogadores montam
- Entre com o carro na oficina de som automotivo (a Benny's por padrão) e aperte E como motorista.
- Comece por um kit pronto (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) ou escolha as peças: subwoofers (de 8" a 18"), caixas, amplificadores, alto-falantes de porta, tweeters, pods, fundos falsos, painéis, acrílico, capacitor, segunda bateria, fita de LED e head unit.
- Arraste cada peça para o lugar no carro. Os subs encaixam nos recortes da caixa. Cada peça recebe um acabamento (oito cores), e subs e alto-falantes recebem uma grade e um anel de luz. Mirror copia uma peça para o outro lado; Fine position move em passos pequenos. Cinco vistas de câmera: Boot, Cabin, Side, Front, Top. Size: os subs vêm em 8", 10", 12", 15" e 18" (todos os subs de uma caixa têm o mesmo tamanho e a caixa é montada ao redor deles, até 30% maior ou menor do que foi feita); alto-falantes de porta em 5.25", 6.5" e 6x9"; todas as outras peças de 80% a 130%, em passos de 5% (a head unit tem tamanho padrão). Caixas e painéis maiores custam mais; uma peça diminuída não custa nada. Os cones se movem mais nos alto-falantes maiores, e um alto-falante de porta maior desce mais grave.
- Aperte Test system para ouvir a montagem tocando no carro antes de pagar. Ela toca a primeira música de
Config.Library(a faixa de demonstração que vem com o script, a menos que você tenha mudado). - Aperte Install. Só as peças novas no carro são cobradas; peças mantidas da última instalação não são cobradas de novo.
A instalação fica salva vinculada à placa e volta sempre que o carro volta: de qualquer garagem, pátio ou respawn. Nada para editar no seu script de garagem.
O que os jogadores ouvem
- Todo carro já tem um som de fábrica por classe e modelo: um sistema de 4 alto-falantes, um premium de 10 alto-falantes ou um de referência com 13, alto-falantes na carenagem das motos; bicicletas, aeronaves e trens não têm. Os alto-falantes instalados substituem os de fábrica mais próximos; os subs somam ao sistema.
- Fora do carro, passa principalmente o grave pela lataria. Portas abertas, vidros abertos e um porta-malas aberto deixam sair mais som, cada um para o lado em que está.
- Um carro com subs balança de leve nas molas com o grave enquanto está parado ou bem devagar (nunca dirigindo), e todo mundo dentro sente o kick.
- O som (K) tem volume, nível do sub, fader e balanço.
- Subs forçados muito além do que o amplificador e a especificação permitem, perto do volume máximo, por um tempo, podem queimar. Todo mundo perto do carro vê um fiozinho de fumaça saindo daquele sub e ouve um estalo abafado. Um sub queimado para de se mexer, o grave cai, e o cone fica chamuscado até ser trocado na oficina (um sub novo é pago; apagar a marca não é um reparo grátis). A staff pode mostrar isso:
/soundblowno carro, ousoundblow <plate>no console do servidor.
Em quais carros dá para montar (Config.Install.vehicles)
'owned'(padrão): só carros da tabela de veículos próprios do seu framework (owned_vehiclesno ESX,player_vehiclesno QBCore e no Qbox).'any': também carros sem dono (carros de NPC, spawnados, alugados).- Em qualquer caso, um carro de outro jogador continua sendo dele: só o dono, um mecânico em serviço de
Config.Install.jobsou um admin pode mexer nele. Num servidor standalone, todo carro conta como próprio.
Garagens, placas e pátios
- As placas são comparadas sem espaços nas pontas e em maiúsculas, então garagens que completam com espaços ou mudam maiúsculas e minúsculas continuam batendo.
- Um carro com placa falsa ou trocada não encontra a instalação até voltar a ter a placa salva.
- Carros que existem só na tela de um jogador (prévias de garagem, alguns carros de concessionária) nunca recebem uma instalação: para os outros, eles não são carros de verdade.
Outros scripts de som ou de rádio
O ZeroDev Sound é um resource próprio, com comandos (/sound, /caraudio, ...), eventos e state bags de veículo próprios, então ele não substitui nem altera outros scripts (enquanto toca num carro, ele só desliga o rádio do carro do próprio GTA). Rodar dois scripts de som automotivo no mesmo carro ao mesmo tempo não foi testado: use um som por carro.
8. Fontes de música
A música toca apenas a partir de arquivos de áudio que você adiciona ao recurso. Os jogadores escolhem da sua lista; eles não podem inserir links, e nenhum endereço da web é tocado. Adicione apenas áudio que seja seu ou cujos direitos de uso e distribuição você tenha.
- Coloque arquivos mp3 ou ogg em
zerodev-sound/web/library/e liste cada um emConfig.Librarycomo{ title = '...', artist = '...', file = 'name.mp3' }. Eles ganham a experiência completa: som 3D, salas e paredes, cabines de carro, modos de som, EQ e cones que se mexem com o grave real. Config.Sources.library = falsedesliga a biblioteca.- O rádio de carro do próprio GTA continua funcionando em qualquer carro enquanto nenhuma música deste recurso estiver tocando nele.
- A caixa de inicialização mostra quantas músicas os jogadores podem escolher e avisa sobre qualquer entrada que foi pulada (um nome
de arquivo que não é mp3 nem ogg dentro de
web/library/). - Atualizando da 3.0.0: músicas salvas, músicas recentes e itens de playlist que eram links não são mais mostrados nem tocados. As músicas da biblioteca continuam funcionando.
9. Pulse Phone
Nada para configurar. Quando o Pulse Phone roda no servidor (nome do resource phone, qualquer edição):
- Todo celular ganha um app Sound na Home Screen. É o mesmo controle do
/sound: conecte-se a uma caixa de som ou ao carro, escolha a música, comande o grupo todo. Os jogadores podem removê-lo e pegá-lo de volta no App Hub. - O que está tocando na caixa de som ou no carro conectado, com o tempo restante, aparece na Island e na Lock Screen. Um toque abre o app Sound.
- O Pulse Drive (a tela de carro do Pulse, F10 por padrão) mostra o som do carro em que você está sentado: música, artista e capa, com tocar, pausar, anterior, próxima e volume, e um botão Open para o app Sound. Isso precisa do Pulse Phone 1.2.9 ou mais recente; versões mais antigas simplesmente não mostram.
Jogadores sem o celular usam /sound e K, que fazem tudo o que o app faz.
Se você renomeou a pasta do celular, adicione esta linha ao config/config.lua com o nome dela:
Config.PulseResource = 'phone'10. Polícia, vizinhos e admins
| O quê | Como | Configuração |
|---|---|---|
| Denunciar música alta | O /noise envia a caixa de som tocando mais próxima (a até 60 m) para a polícia em serviço como um blip piscando por 3 minutos. Uma denúncia por jogador a cada 2 minutos. |
Config.Police.complaints, complaintRange |
| Desligar uma caixa de som | Polícia em serviço: mire na caixa > Turn off (police), ou a aba Tune do controle > Police. A até 12 m. | Config.Police.canSilence, silenceMinutes (15) |
| Apreender uma caixa de som | Polícia em serviço, a até 4 m: mire > Seize (police), ou Tune > Police > Seize. A caixa vai para o policial. | Config.Police.canSeize |
| Empregos de polícia | Jogadores com esses empregos, em serviço | Config.Police.jobs |
| Caixas de som quebradas | Atirar numa caixa de som posicionada quebra a caixa: ela chia e para. Um Speaker Repair Kit (vendido na loja em Accessories) conserta: use o kit ao lado dela. | Config.Damage |
| Lista do admin | /soundadmin: todas as caixas de som do servidor, o que tocam e quem é o dono, com botões para marcar waypoint, parar a música ou remover a caixa. |
Config.AdminAce (zerodev.sound.admin) |
| Dar um item | Console do servidor: givespeaker <player id> <item name> |
11. Idiomas
O script vem nos mesmos 25 idiomas do Pulse Phone. Defina um em 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 exemplo. O padrão, 'auto', segue o Pulse Phone: o servidor usa o Config.Locale do Pulse, e cada jogador recebe o Sound no idioma que escolheu no celular. Sem o Pulse, fica em inglês. Mensagens do jogo, avisos de tecla, nomes de itens e o nome da tecla do som do carro ficam em locales/<code>.lua; a interface (controle, som do carro, loja, instalador, app do Pulse) fica em locales/<code>_ui.lua. O que estiver faltando aparece em inglês.
Para mudar uma linha, edite-a no arquivo desse idioma. Mantenha cada %s, %d, %.1f, %% e ~a~ como estão. Para adicionar um idioma seu, copie locales/en.lua para locales/xx.lua, troque Locales['en'] por Locales['xx'] (nos dois lugares), traduza o texto entre aspas e defina Config.Locale = 'xx'. O locales/ui_strings.txt lista todas as chaves da interface para um xx_ui.lua.
12. Solução de problemas
Os jogadores não conseguem usar os itens de caixa de som
- ox_inventory: as entradas precisam estar dentro de
ox_inventory/data/items.luacom a linhaclientdelas, e o ox_inventory precisa ser reiniciado depois de colar. A pasta ainda precisa se chamarzerodev-sound(as entradas chamamzerodev-sound.useItem). - QBCore / ESX: o
zerodev-soundprecisa iniciar depois do seu framework noserver.cfg. - codem-inventory no QBCore: complete o passo do próprio codem-inventory que aponta
QBCore.Functions.UseItempara ele. - Sem inventário: as caixas de som não são itens. Os jogadores abrem o
/sounde apertam Set up em Your speakers.
Faltam as imagens dos itens
- ox_inventory: nada para copiar; o caminho da imagem aponta para o zerodev-sound. Se estiverem em branco, confira a linha
image = 'nui://zerodev-sound/...'da entrada e o nome da pasta. - Outros inventários: leia a linha do console
Copy ... into ...: ela lista as imagens que faltam e a pasta para onde vão. Copie-as dezerodev-sound/web/img/items/e reinicie o inventário.
Um jogador não consegue tocar um link
Isso é de propósito: os jogadores escolhem apenas da sua biblioteca. Adicione a música em
Config.Library (seção 8).
Nenhum som
- O navegador integrado do FiveM inicia o som sem clique, então os jogadores nunca precisam apertar nada para "permitir" o áudio. Se um jogador não ouve nada enquanto os outros ouvem, confira o FiveM no mixer de volume do Windows dele.
- Confira a caixa de som na aba Speakers do controle: ela pode estar desligada, ou Broken.
- A polícia pode ter desligado a caixa (por
Config.Police.silenceMinutes), ou o horário de silêncio pode estar limitando o volume (Config.QuietHours). - Um jogador ouve no máximo
Config.Streaming.maxAudibleSessionsmúsicas diferentes ao mesmo tempo (6), das mais próximas para as mais distantes. - O Test system do instalador fica mudo quando
Config.Libraryestá vazio ouConfig.Sources.library = false: ele toca a primeira música da biblioteca.
A loja não está lá
Config.Shop.enabledprecisa sertrue.- O atendente e o estande só aparecem quando um jogador está a cerca de 70 m de
Config.Shop.locations, e só na tela desse jogador. Confira as coordenadas que você definiu. - Com ox_target ou qb-target, mire no atendente. Sem nenhum deles, fique ao lado do atendente: E Browse speakers.
Uma caixa de som aparece como uma caixa comum do GTA, ou não aparece
A pasta stream/ está faltando ou foi renomeada, ou o jogador entrou antes de o resource iniciar. Reinicie o servidor e reconecte.
Mensagens do som automotivo e o que significam
| Mensagem | Por quê | Solução |
|---|---|---|
| Drive into a car audio bay to build. | Montar em qualquer lugar está desligado e o carro não está numa oficina. | Entre com o carro na oficina (Config.Install.bays), ou defina Config.Install.anywhere = true. |
| Stand next to your car to build its sound system. | Montar em qualquer lugar está ligado e você está a mais de 8 m do carro, ou o /caraudio não encontrou nenhum carro a até 4 m. |
Fique ao lado do carro ou sente nele. |
| Stop the car first. | O carro está em movimento. | Pare. |
| Car audio can only be fitted to a car you own. | Config.Install.vehicles = 'owned' e esta placa não está na sua tabela de veículos próprios. Também aparece para todos, menos admins, quando essa tabela não pode ser lida: o console então mostra uma linha vermelha could not read the owned-vehicles table. |
Use um carro próprio, defina 'any', ou corrija o erro de banco de dados que o console indica. |
| Only the owner can change this car's audio. | O carro pertence a outro jogador. Também aparece quando Config.Install.anyone = false e o jogador não tem um emprego em serviço de Config.Install.jobs. |
Quem monta é o dono, um mecânico em serviço ou um admin. |
| Not enough money. | As peças novas custam mais do que o jogador tem em Config.Install.account. |
Remova peças, ou defina Config.Install.chargeParts = false. |
| A subwoofer blew. It needs replacing. | Os subs foram forçados demais por tempo demais perto do volume máximo. | Troque o sub na oficina; um amplificador maior ajuda. |
A polícia não vê as opções dela
Adicione os nomes dos seus empregos de polícia em Config.Police.jobs. Os jogadores precisam estar em serviço.
13. Atualização
Vindo da 1.x para a 2.0: leia o UPGRADING.md. Entre versões 2.x:
- Faça backup da sua pasta
config/, dalocales/se você traduziu, e de qualquer música que adicionou emweb/library/. - Pare o servidor. Substitua a pasta
zerodev-soundpela nova (mantenha o nome). - Coloque de volta os seus arquivos de
config/. Se as notas da atualização citarem configurações novas, copie essas linhas dos arquivos novos para os seus. - Inicie o servidor e leia o console. Itens novos, se houver, são impressos para o seu inventário.
As caixas de som posicionadas, as instalações em carros e as playlists ficam no banco de dados (zds_speakers, zds_car_builds, zds_playlists, zds_stash) e não são tocadas por uma atualização.
Voltar atrás: guarde a pasta zerodev-sound anterior fora de resources até a versão nova rodar bem, e faça backup do banco de dados antes de atualizar. Para voltar, pare o servidor, coloque de volta a pasta anterior e a sua config/, e inicie de novo. Voltar da 3.0 para a 2.x no mesmo banco de dados não foi testado, então restaure o backup do banco se algo parecer errado.