Documentação do ZeroDev Sound

ZeroDev Sound: guia de instalação

Para o ZeroDev Sound 3.0.127 min de leituraAtualizado a

Este recurso não contém nem fornece qualquer integração de áudio ou música de terceiros. A música é reproduzida apenas a partir de ficheiros de áudio que o dono do servidor adiciona ao recurso e da rádio integrada do GTA. Os jogadores não podem introduzir links. Adicione apenas áudio que seja seu ou cujos direitos de utilização e distribuição possua; transmitir conteúdo em streaming sem autorização pode violar o Cfx.re Creator Platform License Agreement e a lei.

Colunas que os jogadores compram, transportam, pousam e ligam entre si, e áudio automóvel que montam nos seus próprios carros. Esta é a referência completa. Para a versão curta, leia docs/SETUP.md (5 passos); para problemas, docs/TROUBLESHOOTING.md; se vem da 1.x, UPGRADING.md.

Índice 1. Requisitos 2. Instalação 3. Itens para o seu inventário 4. Primeiro arranque: o que deve ver 5. As definições mais alteradas 6. Controlos 7. Áudio automóvel 8. Fontes de música 9. Pulse Phone 10. Polícia, vizinhos e administradores 11. Idiomas 12. Resolução de problemas 13. Atualizar

1. Requisitos

Obrigatório oxmysql. O ZeroDev Sound cria as suas próprias tabelas no primeiro arranque; não há ficheiro SQL para importar.
Framework ESX Legacy, QBCore, Qbox, ou nenhum (standalone). Detetado 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. Detetado sozinho.
Opcional ox_target ou qb-target (sem nenhum, os jogadores veem um aviso de tecla no ecrã). Pulse Phone 1.2.9 ou mais recente (acrescenta a app Sound e o rádio do carro no Pulse Drive). pma-voice para o microfone: sem ele, pode pegar no microfone e cantar, mas ninguém ouve a voz pelas colunas.

Mais nada: sem ox_lib, sem chave de API, sem conta Google.

Servidores Linux

Servidores Linux: use o artifact de servidor Recommended, não o Latest. Na página de transferência do servidor FiveM (docs.fivem.net/docs/server-download/), escolha Linux e o ramo de atualização Recommended. Um servidor com o artifact Linux mais recente crashou ao carregar (o FXServer mostrou um dump de /proc/self/maps), e mudar para o artifact recomendado resolveu. É o único relato de Linux que temos; ainda não corremos o ZeroDev Sound num servidor Linux.

Servidores Linux: use o artifact de servidor Recommended, não o Latest. Na página de transferência do servidor FiveM (docs.fivem.net/docs/server-download/), escolha Linux e o ramo de atualização Recommended. Um servidor com o artifact Linux mais recente crashou ao carregar (o FXServer mostrou um dump de /proc/self/maps), e mudar para o artifact recomendado resolveu. É o único relato de Linux que temos; ainda não corremos o ZeroDev Sound num servidor Linux.

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. Ponha 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 itens do ox_inventory chamam-na por esse nome.

Passo 2. Adicione-o ao server.cfg, depois da base de dados, do framework e do 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 administradores a permissão de administração (sem limite de colunas, a lista /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: secção 3. No inventário do ESX e no QBCore, isto é feito por si.

Passo 5. Reinicie o servidor (um reinício completo, não só do resource, para que todos os jogadores carreguem os modelos) e veja a consola: secção 4.

3. Itens para o seu inventário

São 12 itens: dez colunas, o pé de microfone e o kit de reparação.

Nome do item Etiqueta Peso
zds_roam Coluna portátil Roam 2 kg
zds_room_shelf Coluna de prateleira 4 kg
zds_room_tower Coluna de torre 10 kg
zds_room_ceiling Coluna de teto 2 kg
zds_room_sub Subwoofer de casa 8 kg
zds_stage_pa Coluna PA 10 kg
zds_stage_sub Subwoofer de concerto 15 kg
zds_stage_array Coluna line array 12 kg
zds_stage_monitor Monitor de palco 6 kg
zds_stage_mixer Mesa de mistura DJ 5 kg
zds_stage_mic Pé de microfone 3 kg
zds_repair_kit Kit de reparação de colunas 0,6 kg

As imagens estão em zerodev-sound/web/img/items/. Nunca tem de adivinhar: sempre que falta alguma coisa, a consola do servidor mostra as entradas exatas para o seu inventário e indica qualquer imagem que ainda não esteja no lugar.

Que inventário tem?

Inventário O que faz As imagens vão para
Inventário do ESX (ESX Legacy sem ox) Nada. Os itens são adicionados à tabela items no arranque. Nada para copiar
ox_inventory (ESX, Qbox ou standalone) Cole o bloco ox_inventory em ox_inventory/data/items.lua, dentro da tabela. Reinicie o ox_inventory e depois o zerodev-sound. Nada para copiar: as entradas carregam as imagens a partir do zerodev-sound
qb-inventory, ps-inventory, lj-inventory (QBCore) Nada. Os itens são adicionados aos shared items do QBCore no arranque. Copie web/img/items/*.png para <your inventory>/html/images/
qs-inventory No QBCore, cole o bloco 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 a codem-inventory/config/itemlist.lua com os nomes, etiquetas e pesos do bloco QBCore. No QBCore, conclua 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 por si 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 a origen_inventory/config/items.lua com os nomes, etiquetas e pesos do bloco QBCore. A pasta de imagens de itens do origen_inventory
tgiann-inventory Adicione os 12 itens a tgiann-inventory/items/items.lua com os nomes, etiquetas e pesos do bloco QBCore. inventory_images/images/
Sem inventário Nada. As colunas compradas e arrumadas ficam à espera em /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 fazê-lo, cole o bloco QBCore em qb-core/shared/items.lua.

Outro inventário que copie uma destas APIs: defina Config.Inventory para essa (veja a secção 5). Um inventário feito internamente pode ser ligado em server/bridge.lua, que é legível: cada inventário aí são três pequenas funções (contar, adicionar, remover).

Bloco 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 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 alterou uma etiqueta, preço ou peso em config/catalogue.lua, copie antes as entradas da sua própria consola: ela mostra-as a partir das suas definições.

4. Primeiro arranque: o que deve ver

Na consola do servidor

O ZeroDev Sound mostra uma caixa de verificação (escreva soundcheck na consola do servidor para a mostrar outra vez): base de dados e esquema, framework, dinheiro, inventário e itens, a tabela da garagem, targeting, Pulse Phone, modelos, oficinas de instalação e definições alteradas em jogo. Cada linha que não esteja OK diz o que fazer; o docs/SETUP.md mostra um exemplo e o docs/TROUBLESHOOTING.md explica cada linha.

  • A linha do framework indica o que foi encontrado. Se estiver errada, 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 itens: faça a secção 3 para o seu inventário e depois reinicie. A mensagem do ox_inventory desaparece quando os itens lá estiverem. No qs-, codem-, origen- e tgiann-inventory, as entradas são mostradas em cada arranque como lembrete, quer as tenha 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. Indica a pasta.
  • Pulse Phone app not registered: ...: o Pulse Phone está a correr mas recusou a app. Veja a secção 9.

Em jogo (cinco verificações)

  1. O mapa mostra um blip ZeroDev Sound em Legion Square e um blip Car audio bay na Benny's.
  2. Na loja, está um funcionário num expositor com as colunas à mostra. Aponte para o funcionário (ou carregue em E quando não há resource de target) e compre uma Roam Portable Speaker.
  3. Use-a a partir do inventário. Sai para as suas mãos. Carregue em E, abra Library e toque Night Drive (uma faixa de demonstração que vem com o script). Quem estiver à sua volta ouve-a.
  4. Entre num carro. Das primeiras vezes, o canto do ecrã diz que tecla abre o rádio do carro (K por defeito).
  5. Entre com o carro na oficina de instalação de áudio como condutor e carregue em E. O instalador abre-se no seu carro.

5. As definições mais alteradas

Em jogo: /soundadmin > Settings altera as mais comuns em direto para todos (oficinas de instalação, quem pode instalar, que carros, preços, volume máximo, horas de silêncio, limites, loja, polícia e danos). Ficam guardadas na base de dados e têm prioridade sobre o config.lua até carregar em Reset to config no painel.

Está tudo em config/config.lua, salvo indicação em contrário. Os produtos, os preços e as peças de carro estão em config/catalogue.lua; o som de fábrica de cada carro está em config/vehicles.lua.

O que quer Definiçã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 comando à distância Config.Command (padrão sound, ou seja /sound)
Mudar a tecla do rádio do carro Config.HeadUnitKey (padrão K). Os jogadores podem mudá-la eles próprios nas definições do GTA > Key Bindings > FiveM.
Colunas por jogador Config.MaxPlacedPerPlayer (padrão 8). Os administradores não têm limite.
Colunas num grupo ligado Config.MaxLinkedPerGroup (padrão 16)
A que distância se liga, até onde se controla Config.PairRange (15 m), Config.ControlRange (80 m)
Mudar a loja de sítio ou acrescentar mais lojas Config.Shop.locations. Cada uma aceita label, coords, blip e, opcionalmente, heading (para onde está virado o expositor) e clerk (um modelo de ped). Config.Shop.account é bank ou cash. Config.Shop.enabled = false remove a loja.
Preços das colunas price em cada produto em config/catalogue.lua > Catalogue.Speakers. O preço do kit de reparação é Config.Damage.repairPrice.
Onde é montado o áudio automóvel Config.Install.bays (cada uma com label, coords, radius, blip). Padrão: uma oficina na Benny's.
Deixar os donos montar no carro em qualquer sítio Config.Install.anywhere = true. Acrescenta um botão Install no rádio do carro e o comando /caraudio (Config.Install.command).
Em que carros se pode montar Config.Install.vehicles: 'owned' (padrão) ou 'any'. Veja a secção 7.
Só os mecânicos podem instalar Config.Install.anyone = false e indique os empregos em Config.Install.jobs (têm de estar de 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 secção 8.
As suas próprias músicas Config.Library (ficheiros em web/library/)
Horas de silêncio Config.QuietHours = { enabled = true, from = 23, to = 7, maxVolume = 0.35 } (hora local do servidor)
Empregos e poderes da polícia Config.Police (veja a secção 10)
Colunas que se estragam quando levam tiros Config.Damage.enabled
Limites de desempenho Config.Streaming.propRange (modelos desenhados até 90 m), maxAudibleSessions (6 músicas diferentes ouvidas ao mesmo tempo), maxMovingParts (24 cones animados por frame)
Linhas extra na consola para o suporte Config.Debug (defina-o como true enquanto investiga um problema)

Nomes dos itens. Se outro script já usar um dos nomes de itens zds_, mude a chave desse produto em Catalogue.Speakers (por exemplo zds_roam = { ... }), depois use o novo nome no seu inventário e mude o nome da imagem para corresponder.

6. Controlos

O quê Como
Abrir o comando /sound, ou E junto a uma coluna, ou a app Sound no Pulse Phone
Rádio do carro K sentado num carro (pode ser mudada nas definições do GTA)
Pousar uma coluna Use o item. Aponte para onde deve ficar: fica verde onde cabe. A roda do rato ou Q / E rodam-na. Enter ou clique esquerdo pousa-a; Backspace ou clique direito cancela.
Empilhar um line array Enquanto o pousa, Seta para cima / Seta para baixo sobe-o ou desce-o
Levar uma Roam Sai para as suas mãos e continua a tocar enquanto anda. E música, G pousar, H arrumar. Entrar num carro ou na água arruma-a.
Mover ou arrumar uma coluna sua Aponte para ela e escolha Move ou Pack up, ou, sem resource de target, fique ao lado dela: G mover (numa Roam: voltar a levá-la), H arrumar. O separador Speakers do comando também pode arrumar.
Ligar colunas Ligue-se a uma das suas, abra o separador Speakers do comando e carregue em Link junto às suas outras colunas próximas. As portáteis ligam-se com portáteis, as de interior com as de interior, as de concerto com as de concerto (até 40 m, 60 m e 250 m, respetivamente).
Instalador de áudio automóvel Entre com o carro na oficina como condutor e carregue em E (ou no botão Install do rádio / /caraudio quando construir em qualquer lado está ativo). Arraste uma peça para a deslizar pelas superfícies do carro, Alt + arrastar desliza-a na horizontal, à sua altura (sem encaixe), Shift + arrastar levanta-a, Q / E ou Shift + roda do rato roda-a.
Cante pelas colunas Na Mesa de mistura DJ ou num pé de microfone (vendido na loja, ligue-o como uma coluna) das colunas a que está ligado, ou no pé de microfone de uma montagem de carro: /soundmic pega no microfone, /soundmic outra vez volta a pousá-lo
Denunciar música alta /noise
Lista de administração /soundadmin
Dar um item (consola do servidor) givespeaker <player id> <item name>
Queimar um subwoofer para mostrar o efeito (staff) /soundblow no carro, ou soundblow <plate> na consola

No comando: Music (a biblioteca do seu servidor), Queue (a seguir, playlists guardadas), Speakers (energia e volume de cada coluna, ligação, arrumação) 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 concertos). 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 reproduzir, pausar, saltar, pôr em fila e avançar. Opening hours reproduz sozinho uma das playlists do dono entre duas horas, para uma loja ou um clube.

O microfone (requer pma-voice). Enquanto o segura, todos os que estão perto de qualquer coluna desse sistema ouvem a sua voz através dela, com som de PA, tão alto quanto essa coluna toca música e até onde chega; afaste-se 4 m da mesa de mistura ou do pé de microfone, desligue-se ou pouse o microfone, e a sua voz volta ao normal. Só o dono do sistema (e os administradores, no caso de um carro) pode cantar através dele; dê aos outros jogadores o ace zds.mic para poderem usar qualquer sistema. A sua voz não sai do sítio de cada coluna: o chat de voz não consegue colocar uma voz ali, por isso quem está perto de uma coluna ouve-o ao volume dessa coluna. Definições: Config.Mic.

7. Áudio automóvel

Como os jogadores montam

  1. Entre com o carro na oficina de áudio automóvel (a Benny's, por defeito) e carregue em E como condutor.
  2. Comece com um kit pronto (Daily thump, Competition, Trunk wall, Sound quality, Clean and hidden) ou escolha peças: subwoofers (8" a 18"), caixas, amplificadores, altifalantes de porta, tweeters, pods, fundos falsos, painéis, acrílico, condensador, segunda bateria, fita LED e auto-rádio.
  3. Arraste cada peça para o seu lugar no carro. Os subwoofers encaixam nos recortes da caixa. Cada peça leva um acabamento (oito cores), e os subwoofers e altifalantes uma grelha e um anel de luz. Mirror copia uma peça para o outro lado; Fine position move-a em pequenos passos. Cinco vistas de câmara: Boot, Cabin, Side, Front, Top. Tamanho: os subwoofers existem em 8", 10", 12", 15" e 18" (todos os subwoofers numa caixa têm o mesmo tamanho e a caixa é construída à volta deles, até 30% maior ou menor do que aquilo para que foi feita); os altifalantes de porta em 5.25", 6.5" e 6x9"; todas as outras peças de 80% a 130%, em passos de 5% (o auto-rádio tem um tamanho padrão). Caixas e painéis maiores custam mais; uma peça feita mais pequena não custa nada. Os cones movem-se mais em altifalantes maiores, e um altifalante de porta maior desce mais nos graves.
  4. Carregue em Test system para ouvir a montagem a tocar no carro antes de pagar. Toca a primeira música de Config.Library (a faixa de demonstração incluída, a menos que a tenha mudado).
  5. Carregue em Install. Só as peças novas no carro são cobradas; as peças mantidas da última instalação não voltam a ser cobradas.

A instalação fica guardada associada à matrícula e volta sempre que o carro volta: de qualquer garagem, apreensão ou respawn. Nada a editar no seu script de garagem.

O que os jogadores ouvem

  • Todos os carros já têm um som de fábrica conforme a classe e o modelo: um sistema de 4 altifalantes, um premium de 10 altifalantes ou um de referência de 13 altifalantes, altifalantes na carenagem nas motas; bicicletas, aeronaves e comboios não têm nenhum. Os altifalantes montados substituem os de fábrica mais próximos; os subwoofers somam-se.
  • Fora do carro, passa sobretudo o grave através da carroçaria. Portas abertas, vidros abertos e a bagageira aberta deixam sair mais, cada um para o lado para onde está virado.
  • Um carro com subwoofers balança suavemente nas molas com os graves enquanto está estacionado ou a andar muito devagar (nunca durante a condução), e todos lá dentro sentem o kick.
  • O rádio (K) tem volume, nível do subwoofer, fader e balanço.
  • Subwoofers levados muito para além do que o amplificador e a sua potência permitem, perto do volume máximo, durante algum tempo, podem queimar. Todos perto do carro veem um fio de fumo a sair desse subwoofer e ouvem um estalo abafado. Um subwoofer queimado deixa de se mexer, o grave baixa, e o cone fica queimado até ser substituído na oficina (um subwoofer novo é pago; limpar a marca não é uma reparação grátis). O staff pode mostrá-lo: /soundblow no carro, ou soundblow <plate> na consola do servidor.

Em que carros se pode 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 que não pertencem a ninguém (carros de NPC, carros gerados, alugados).
  • Em qualquer caso, um carro que pertence a outro jogador continua a ser dele: só o dono, um mecânico de serviço de Config.Install.jobs ou um administrador o podem alterar. Num servidor standalone, todos os carros contam como próprios.

Garagens, matrículas e apreensões

  • As matrículas são comparadas sem espaços nas pontas e em maiúsculas, por isso as garagens que acrescentam espaços ou mudam as maiúsculas continuam a corresponder.
  • Um carro com matrícula falsa ou alterada não encontra a sua instalação até voltar a ter a matrícula guardada.
  • Os carros que só existem no ecrã de um jogador (pré-visualizações de garagem, alguns carros de stand) nunca têm instalação: não são carros reais para mais ninguém.

Outros scripts de som ou de rádio

O ZeroDev Sound é um resource próprio com os seus comandos (/sound, /caraudio, ...), eventos e state bags de veículo, por isso não substitui nem altera outros scripts (enquanto toca num carro, só desliga o rádio do próprio GTA). Correr dois scripts de áudio automóvel no mesmo carro ao mesmo tempo não foi testado: use um único rádio por carro.

8. Fontes de música

A música é reproduzida apenas a partir de ficheiros de áudio que adiciona ao recurso. Os jogadores escolhem da sua lista; não podem introduzir links, e nenhum endereço web é reproduzido. Adicione apenas áudio que seja seu ou cujos direitos de utilização e distribuição possua.

  • Coloque ficheiros mp3 ou ogg em zerodev-sound/web/library/ e liste cada um em Config.Library como { title = '...', artist = '...', file = 'name.mp3' }. Têm a experiência completa: som 3D, salas e paredes, cabines de carro, modos de som, EQ e cones que se mexem com os graves reais.
  • Config.Sources.library = false desliga a biblioteca.
  • A rádio de carro do próprio GTA continua a funcionar em qualquer carro enquanto nenhuma música deste recurso estiver a tocar nele.
  • A caixa de arranque mostra quantas músicas os jogadores podem escolher e avisa sobre qualquer entrada ignorada (um nome de ficheiro que não é mp3 nem ogg dentro de web/library/).
  • Atualizar a partir da 3.0.0: as músicas guardadas, as músicas recentes e os itens de playlist que eram links já não são mostrados nem reproduzidos. As músicas da biblioteca continuam a funcionar.

9. Pulse Phone

Nada a configurar. Quando o Pulse Phone está a correr no servidor (nome do resource phone, qualquer uma das edições):

  • Todos os telemóveis recebem uma app Sound no ecrã principal. É o mesmo comando que /sound: ligar-se a uma coluna ou ao carro, escolher música, controlar o grupo inteiro. Os jogadores podem removê-la e voltar a instalá-la a partir da App Hub.
  • O que está a tocar na coluna ou no carro ligado, com o tempo restante, aparece na Island e no ecrã de bloqueio. Um toque abre a app Sound.
  • O Pulse Drive (o ecrã de carro do Pulse, F10 por defeito) mostra o rádio do carro em que está sentado: música, artista e capa, com play, pausa, anterior, seguinte e volume, e um botão Open para a app Sound. Isto requer o Pulse Phone 1.2.9 ou mais recente; as versões mais antigas simplesmente não o mostram.

Os jogadores sem telemóvel usam /sound e K, que fazem tudo o que a app faz.

Se mudou o nome da pasta do telemóvel, adicione esta linha a config/config.lua com esse nome:

Lua
Config.PulseResource = 'phone'

10. Polícia, vizinhos e administradores

O quê Como Definição
Denunciar música alta O /noise envia a coluna a tocar mais próxima (até 60 m) à polícia de serviço como um blip intermitente durante 3 minutos. Uma denúncia por jogador a cada 2 minutos. Config.Police.complaints, complaintRange
Desligar uma coluna Polícia de serviço: aponte para a coluna > Turn off (police), ou separador Tune do comando > Police. Até 12 m. Config.Police.canSilence, silenceMinutes (15)
Apreender uma coluna Polícia de serviço, até 4 m: aponte > Seize (police), ou Tune > Police > Seize. A coluna vai para o agente. Config.Police.canSeize
Empregos de polícia Jogadores com estes empregos, de serviço Config.Police.jobs
Colunas estragadas Disparar sobre uma coluna colocada estraga-a: crepita e para. Um Speaker Repair Kit (vendido na loja, em Accessories) repara-a: use o kit ao lado dela. Config.Damage
Lista de administração /soundadmin: todas as colunas do servidor, o que estão a tocar e a quem pertencem, com botões para marcar um waypoint, parar a música ou remover a coluna. Config.AdminAce (zerodev.sound.admin)
Dar um item Consola do servidor: givespeaker <player id> <item name>

11. Idiomas

O script vem nos mesmos 25 idiomas que o 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 valor predefinido, 'auto', segue o Pulse Phone: o servidor usa o Config.Locale do Pulse, e cada jogador recebe o Sound no idioma que escolheu no telemóvel. Sem o Pulse, fica em inglês. As mensagens do jogo, os avisos de tecla, os nomes dos itens e o nome da tecla do rádio ficam em locales/<code>.lua; a interface (comando, rádio do carro, loja, instalador, app do Pulse) fica em locales/<code>_ui.lua. O que faltar aparece em inglês.

Para mudar uma linha, edite-a no ficheiro desse idioma. Mantenha cada %s, %d, %.1f, %% e ~a~ tal como estão. Para acrescentar um idioma seu, copie locales/en.lua para locales/xx.lua, mude Locales['en'] para Locales['xx'] (nos dois sítios), 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. Resolução de problemas

Os jogadores não conseguem usar os itens das colunas

  • ox_inventory: as entradas têm de estar dentro de ox_inventory/data/items.lua com a sua linha client, e o ox_inventory tem de ser reiniciado depois de colar. A pasta tem de continuar a chamar-se zerodev-sound (as entradas chamam zerodev-sound.useItem).
  • QBCore / ESX: o zerodev-sound tem de arrancar depois do seu framework no server.cfg.
  • codem-inventory no QBCore: conclua o passo do próprio codem-inventory que aponta QBCore.Functions.UseItem para ele.
  • Sem inventário: as colunas não são itens. Os jogadores abrem /sound e carregam em Set up em Your speakers.

Faltam as imagens dos itens

  • ox_inventory: nada para copiar; o caminho das imagens aponta para o zerodev-sound. Se aparecerem vazias, verifique a linha image = 'nui://zerodev-sound/...' da entrada e o nome da pasta.
  • Outros inventários: leia a linha da consola Copy ... into ...: lista as imagens em falta e a pasta para onde vão. Copie-as de zerodev-sound/web/img/items/ e reinicie o inventário.

Isto é propositado: os jogadores escolhem apenas da sua biblioteca. Adicione a música a Config.Library (secção 8).

Não há som nenhum

  • O browser incluído no FiveM inicia o som sem clique, por isso os jogadores nunca precisam de carregar em nada para "permitir" o áudio. Se um jogador não ouve nada enquanto os outros ouvem, verifique o FiveM no misturador de volume do Windows dele.
  • Veja a coluna no separador Speakers do comando: pode estar desligada, ou Broken.
  • A polícia pode tê-la desligado (durante Config.Police.silenceMinutes), ou as horas de silêncio podem estar a limitar o volume (Config.QuietHours).
  • Um jogador ouve no máximo Config.Streaming.maxAudibleSessions músicas diferentes ao mesmo tempo (6), começando pelas mais próximas.
  • O Test system do instalador fica em silêncio quando Config.Library está vazio ou Config.Sources.library = false: toca a primeira música da biblioteca.

A loja não está lá

  • O Config.Shop.enabled tem de estar a true.
  • O funcionário e o expositor só aparecem quando um jogador está a menos de cerca de 70 m de Config.Shop.locations, e só no ecrã desse jogador. Verifique as coordenadas que definiu.
  • Com ox_target ou qb-target, aponte para o funcionário. Sem nenhum, fique junto ao funcionário: E Browse speakers.

Uma coluna aparece como uma coluna simples do GTA, ou não aparece

A pasta stream/ falta ou foi renomeada, ou o jogador entrou antes de o resource arrancar. Reinicie o servidor e volte a ligar-se.

Mensagens do áudio automóvel e o que significam

Mensagem Porquê Solução
Drive into a car audio bay to build. Montar em qualquer sítio 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 sítio está ativo e está a mais de 8 m do carro, ou o /caraudio não encontrou nenhum carro a menos de 4 m. Fique junto ao carro ou sente-se 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 matrícula não está na sua tabela de veículos próprios. Também aparece a todos menos aos administradores quando essa tabela não pode ser lida: a consola mostra então uma linha vermelha could not read the owned-vehicles table. Use um carro próprio, defina 'any', ou corrija o erro de base de dados que a consola 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 de serviço de Config.Install.jobs. Monta-o o dono, um mecânico de serviço ou um administrador.
Not enough money. As peças novas custam mais do que o jogador tem em Config.Install.account. Retire peças, ou defina Config.Install.chargeParts = false.
A subwoofer blew. It needs replacing. Os subwoofers foram levados demasiado ao limite durante demasiado tempo, perto do volume máximo. Substitua o subwoofer na oficina; um amplificador maior ajuda.

A polícia não vê as suas opções

Adicione os nomes dos seus empregos de polícia a Config.Police.jobs. Os jogadores têm de estar de serviço.

13. Atualizar

Da 1.x para a 2.0: leia o UPGRADING.md. Entre versões 2.x:

  1. Faça uma cópia de segurança da sua pasta config/, da locales/ se a traduziu, e de quaisquer músicas que tenha acrescentado em web/library/.
  2. Pare o servidor. Substitua a pasta zerodev-sound pela nova (mantenha o nome).
  3. Reponha os seus ficheiros de config/. Se as notas da atualização mencionarem novas definições, copie essas linhas dos ficheiros novos para os seus.
  4. Inicie o servidor e leia a consola. Os itens novos, se houver, são mostrados para o seu inventário.

As colunas colocadas, as instalações em carros e as playlists ficam na base 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 nova versão funcionar bem, e faça uma cópia de segurança da base de dados antes de atualizar. Para voltar atrás, pare o servidor, reponha a pasta anterior e a sua config/, e inicie-o. Voltar da 3.0 para a 2.x na mesma base de dados não foi testado, por isso restaure a cópia de segurança da base de dados se algo parecer errado.

Traduzido do inglês. Se alguma coisa aqui não coincidir com a página em inglês, vale a página em inglês. English