Documentação do ZeroDev Sound
ZeroDev Sound: guia de instalação
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:
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 administradores a permissão de administração (sem limite de colunas, a lista /soundadmin, parar e remover à distância):
add_ace group.admin zerodev.sound.admin allowPasso 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:
['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:
['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.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 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)
- O mapa mostra um blip ZeroDev Sound em Legion Square e um blip Car audio bay na Benny's.
- 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.
- 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.
- Entre num carro. Das primeiras vezes, o canto do ecrã diz que tecla abre o rádio do carro (K por defeito).
- 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
- Entre com o carro na oficina de áudio automóvel (a Benny's, por defeito) e carregue em E como condutor.
- 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.
- 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.
- 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). - 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:
/soundblowno carro, ousoundblow <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_vehiclesno ESX,player_vehiclesno 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.jobsou 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 emConfig.Librarycomo{ 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 = falsedesliga 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:
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.luacom a sua linhaclient, e o ox_inventory tem de ser reiniciado depois de colar. A pasta tem de continuar a chamar-sezerodev-sound(as entradas chamamzerodev-sound.useItem). - QBCore / ESX: o
zerodev-soundtem de arrancar depois do seu framework noserver.cfg. - codem-inventory no QBCore: conclua o passo do próprio codem-inventory que aponta
QBCore.Functions.UseItempara ele. - Sem inventário: as colunas não são itens. Os jogadores abrem
/sounde 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 dezerodev-sound/web/img/items/e reinicie o inventário.
Um jogador não consegue tocar um link
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.maxAudibleSessionsmúsicas diferentes ao mesmo tempo (6), começando pelas mais próximas. - O Test system do instalador fica em silêncio quando
Config.Libraryestá vazio ouConfig.Sources.library = false: toca a primeira música da biblioteca.
A loja não está lá
- O
Config.Shop.enabledtem de estar atrue. - 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:
- Faça uma cópia de segurança da sua pasta
config/, dalocales/se a traduziu, e de quaisquer músicas que tenha acrescentado emweb/library/. - Pare o servidor. Substitua a pasta
zerodev-soundpela nova (mantenha o nome). - 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. - 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.