Configuração

Todas as configurações ficam em config/config.lua. O arquivo está fora do Asset Escrow — totalmente modificável.

Config = {}

Config.Locale       = 'en'         -- 14 idiomas disponíveis
Config.Debug        = false        -- Logs no console F8

Config.OpenKey      = 'F7'         -- Tecla padrão (modificável no menu de pausa)
Config.OpenCommand  = 'audiomixer' -- Comando no chat

Config.KVPPrefix    = 'hz_amix_v2_' -- Prefixo de armazenamento (não altere depois de colocar em produção)
Config.DefaultVolume = 100         -- 0-100, 100 = volume máximo (precisão de 1%)

Config.Categories = {
    weapons  = true,
    vehicles = true,
    ambience = true,
    weather  = true,
    speech   = true,
    peds     = true,
    scripted = true,
    music    = true,
    radio    = true,
}


Referência dos parâmetros

Config.Locale

Idioma da interface. Valores válidos:

en fr de es it pt nl pl ru tr ja ko zh ar

Coloque um novo arquivo em locales/<codigo>.lua para adicionar traduções personalizadas. Use qualquer locale existente como modelo.

Config.OpenKey

Tecla padrão para abrir o mixer. Os jogadores podem modificá-la no menu de pausa do FiveM (Configurações → Atalhos). Os valores válidos seguem o formato RegisterKeyMapping do FiveM — os mais comuns: F1–F12, letras, teclado numérico, etc.

Config.OpenCommand

Alias do comando no chat. Com o valor padrão audiomixer, os jogadores podem digitar /audiomixer para abrir o mixer.

Config.KVPPrefix

Prefixo das chaves em que os volumes de cada jogador são salvos (uma chave KVP no cliente por canal: prefixo + ID do canal). Alterá-lo faz todos os jogadores recomeçarem a partir de Config.DefaultVolume, então não mexa nele depois que os jogadores já tiverem salvo as suas configurações.

Config.DefaultVolume

Volume aplicado a todas as categorias na primeira conexão (quando não existe nenhum valor salvo). Faixa 0–100 (precisão de 1%). É também o valor para o qual voltam a tecla de redefinição (R) e o export resetAll.

  • 100 = volume máximo — recomendado
  • 0 = mudo no primeiro uso (não recomendado, a menos que você queira um silêncio padrão)

Config.Categories

Defina qualquer entrada como false para ocultar essa categoria da interface do mixer. O controle não aparece, o patch de cena de áudio correspondente não é aplicado e os exports a ignoram (setVolume retorna false).

Exemplo — ocultar o controle do rádio:

Config.Categories = {
    weapons  = true,
    vehicles = true,
    ambience = true,
    weather  = true,
    speech   = true,
    peds     = true,
    scripted = true,
    music    = true,
    radio    = false,    -- oculto
}

Config.Debug

Ativa as mensagens de debug no console F8 do cliente:

[HZ-AudioMixer] Scene active

Útil para a solução de problemas. Deixe false em produção.


Personalização da interface

O painel do mixer é construído com o kit de UI do hz_lib, como as outras telas HZ. Os arquivos de html/ estão fora do Asset Escrow: index.html (estrutura), style.css (layout do painel) e app.js (linhas, grupos, teclado).

Cores e fontes

Não há nenhuma cor nem fonte para definir neste recurso. O painel usa o seu tema hz_lib: altere o destaque, as superfícies e as fontes no /hzpanel (aba Appearance), veja o painel de administração do hz_lib. Todas as telas HZ acompanham a mudança.

Onde alterar o quê

O quêOnde
Textos: título, nomes dos grupos, nomes e descrições dos canais, dicas de teclas, pergunta de redefiniçãolocales/<codigo>.lua (chaves ui_* e cat_*)
Ocultar um canalConfig.Categories
Grupos e ordem dos canaisGROUPS em html/app.js
Passo das setas (5%, Shift para 1%)STEP em html/app.js
Ícones dos canaisICONS em html/app.js (SVG inline)
Largura e espaçamento do painel, sombra escura atrás do painel.amx-panel e .amx-shade em html/style.css
As classes hz-* vêm do kit do hz_lib e são compartilhadas por todas as telas HZ. Reestilize as classes amx-* em style.css em vez das classes do kit.

Layout e seções

As categorias são agrupadas em 4 seções lógicas (Ação, Ambiente, Pessoas, Áudio). Edite o array GROUPS no topo de html/app.js:

const GROUPS = [
  { key: 'sectionAction', fallback: 'Action', ids: ['weapons', 'vehicles'] },
  { key: 'sectionEnv', fallback: 'Environment', ids: ['ambience', 'weather'] },
  { key: 'sectionPeople', fallback: 'People', ids: ['speech', 'peds'] },
  { key: 'sectionAudio', fallback: 'Audio', ids: ['scripted', 'music', 'radio'] },
];

Adicione, remova e reordene à vontade. Um canal que não está em nenhum grupo não é exibido. Os nomes das quatro seções vêm do arquivo de locale, nas chaves ui_section_*; um grupo que você adicionar mostra o texto do seu fallback.


Adicionar um idioma personalizado

  1. Copie locales/en.lua → locales/<seu_codigo>.lua
  2. Traduza os valores (as chaves devem continuar as mesmas)
  3. Defina Config.Locale = '<seu_codigo>'
  4. Reinicie o recurso
Uma chave que falta no seu arquivo usa o texto em inglês.

-- locales/myloc.lua
return {
    ['ui_title']        = 'Mon Mixeur',
    ['ui_section_action']        = 'Action',
    -- ... (veja en.lua para a lista completa)
    ['cat_weapons']         = 'Armes',
    ['cat_weapons_desc']    = 'Armes à feu, explosions',
    -- ...
}


Próxima etapa