Documentação do ZeroDev Sound

ZeroDev Sound: guia de instalação

Para o ZeroDev Sound 3.0.127 min de leituraAtualizado em

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:

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

Passo 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):

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

Passo 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:

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:

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.' },

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.Framework ou Config.Inventory em config/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)

  1. O mapa mostra um blip ZeroDev Sound na Legion Square e um blip Car audio bay na Benny's.
  2. 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.
  3. 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.
  4. Entre num carro. Nas primeiras vezes, o canto da tela diz qual tecla abre o som do carro (K por padrão).
  5. 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

  1. Entre com o carro na oficina de som automotivo (a Benny's por padrão) e aperte E como motorista.
  2. 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.
  3. 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.
  4. 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).
  5. 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: /soundblow no carro, ou soundblow <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_vehicles no ESX, player_vehicles no 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.jobs ou 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 em Config.Library como { 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 = false desliga 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:

Lua
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.lua com a linha client delas, e o ox_inventory precisa ser reiniciado depois de colar. A pasta ainda precisa se chamar zerodev-sound (as entradas chamam zerodev-sound.useItem).
  • QBCore / ESX: o zerodev-sound precisa iniciar depois do seu framework no server.cfg.
  • codem-inventory no QBCore: complete o passo do próprio codem-inventory que aponta QBCore.Functions.UseItem para ele.
  • Sem inventário: as caixas de som não são itens. Os jogadores abrem o /sound e 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 de zerodev-sound/web/img/items/ e reinicie o inventário.

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.maxAudibleSessions músicas diferentes ao mesmo tempo (6), das mais próximas para as mais distantes.
  • O Test system do instalador fica mudo quando Config.Library está vazio ou Config.Sources.library = false: ele toca a primeira música da biblioteca.

A loja não está lá

  • Config.Shop.enabled precisa ser true.
  • 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:

  1. Faça backup da sua pasta config/, da locales/ se você traduziu, e de qualquer música que adicionou em web/library/.
  2. Pare o servidor. Substitua a pasta zerodev-sound pela nova (mantenha o nome).
  3. 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.
  4. 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.

Traduzido do inglês. Se algo aqui divergir da página em inglês, vale a página em inglês. English