Configuración

Todos los ajustes están en config/config.lua. El archivo está fuera de Asset Escrow — totalmente modificable.

Config = {}

Config.Locale       = 'en'         -- 14 idiomas disponibles
Config.Debug        = false        -- Logs en la consola F8

Config.OpenKey      = 'F7'         -- Tecla por defecto (modificable en el menú de pausa)
Config.OpenCommand  = 'audiomixer' -- Comando de chat

Config.KVPPrefix    = 'hz_amix_v2_' -- Prefijo de almacenamiento (no cambiar tras la puesta en producción)
Config.DefaultVolume = 100         -- 0-100, 100 = volumen máximo (precisión 1%)

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


Referencia de parámetros

Config.Locale

Idioma de la interfaz. Valores válidos:

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

Coloca un archivo nuevo en locales/<code>.lua para añadir traducciones personalizadas. Usa cualquier locale existente como plantilla.

Config.OpenKey

Tecla por defecto para abrir el mezclador. Los jugadores pueden reasignarla en el menú de pausa de FiveM (Ajustes → Atajos). Los valores válidos siguen el formato RegisterKeyMapping de FiveM — habituales: F1–F12, letras, teclado numérico, etc.

Config.OpenCommand

Alias del comando de chat. Con el valor por defecto audiomixer, los jugadores pueden escribir /audiomixer para abrir el mezclador.

Config.KVPPrefix

Prefijo de las claves en las que se guardan los volúmenes de cada jugador (una clave KVP de cliente por canal: prefijo + ID del canal). Cambiarlo hace que todos los jugadores vuelvan a empezar desde Config.DefaultVolume, así que déjalo como está una vez que los jugadores hayan guardado sus ajustes.

Config.DefaultVolume

Volumen aplicado a todas las categorías en la primera conexión (cuando no existe ningún valor guardado). Rango 0–100 (precisión 1%). También es el valor al que vuelven la tecla de restablecer (R) y el export resetAll.

  • 100 = volumen máximo — recomendado
  • 0 = silenciado en el primer inicio (no recomendado salvo que quieras un silencio por defecto)

Config.Categories

Pon cualquier entrada en false para ocultar esa categoría de la interfaz del mezclador. El control deslizante no aparecerá, el parche de escena de audio correspondiente no se aplicará y los exports la ignoran (setVolume devuelve false).

Ejemplo — ocultar el control deslizante de la radio:

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

Config.Debug

Activa los mensajes de depuración en la consola F8 del cliente:

[HZ-AudioMixer] Scene active

Útil para la solución de problemas. Deja false en producción.


Personalizar la interfaz

El panel del mezclador está construido con el kit UI de hz_lib, como las demás pantallas HZ. Los archivos de html/ están fuera de Asset Escrow: index.html (estructura), style.css (disposición del panel) y app.js (filas, grupos, teclado).

Colores y fuentes

En este recurso no hay ningún color ni fuente que configurar. El panel usa tu tema hz_lib: cambia el acento, las superficies y las fuentes en /hzpanel (pestaña Appearance), consulta el panel de administración de hz_lib. Todas las pantallas HZ siguen el cambio.

Dónde cambiar qué

QuéDónde
Textos: título, nombres de los grupos, nombres y descripciones de los canales, indicaciones de teclas, pregunta de restablecimientolocales/<code>.lua (claves ui_* y cat_*)
Ocultar un canalConfig.Categories
Grupos y orden de los canalesGROUPS en html/app.js
Paso de las teclas de flecha (5%, Shift para 1%)STEP en html/app.js
Iconos de los canalesICONS en html/app.js (SVG en línea)
Ancho y relleno del panel, fondo oscuro detrás del panel.amx-panel y .amx-shade en html/style.css
Las clases hz-* vienen del kit de hz_lib y las comparten todas las pantallas HZ. Cambia el estilo de las clases amx-* en style.css en lugar de las del kit.

Disposición y secciones

Las categorías se agrupan en 4 secciones lógicas (Acción, Entorno, Personas, Audio). Edita el array GROUPS al principio 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'] },
];

Añade, quita o reordena los grupos libremente. Un canal que no está en ningún grupo no se muestra. Los nombres de las cuatro secciones vienen del archivo de locale, en las claves ui_section_*; un grupo que añadas muestra su texto fallback.


Añadir un idioma personalizado

  1. Copia locales/en.lua → locales/<tu_codigo>.lua
  2. Traduce los valores (las claves deben seguir siendo las mismas)
  3. Define Config.Locale = '<tu_codigo>'
  4. Reinicia el recurso
Si a tu archivo le falta una clave, se usa el texto en inglés.

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


Paso siguiente