Archivos y manifiesto
fxmanifest.luaui_page "NUI/index.html"- Carga CSS/JS/assets desde
NUI/src/* shared_script "config.lua"client_script "client/*.lua"
- Lógica principal del cliente:
client/main.lua - Configuración:
config.lua - NUI:
NUI/index.html,NUI/src/css/*,NUI/src/js/{config.js,index.js,events.js},NUI/src/images/micro.png
Configuración (config.lua)
Config = {
DEBUG = false,
-- How to get ESX:
ESX_method = "function", -- "function" (export) or "event"
eventNameESX = "esx:getSharedObject",
extendedName = "extended", -- e.g. "es_extended" / "extended"
VERSION_ESX = "final", -- "legacy" or "final" (informational)
-- Status source (list of {name, percent}):
statusEventName = "esx_customui:updateStatus",
ACTIVED = {
JOB = true,
JOB2 = true,
MONEY = true,
BLACK_MONEY = true,
MICRO = true
}
}
Notas
- Si usa un tick de estado alternativo (por ejemplo,.
sigma_hud:onTick), el cliente escucha enConfig.statusEventNameo recurre a"sigma_hud:onTick".
Eventos y flujo de datos del cliente
- Inicialización
esx:playerLoaded→ HUD se inicializa con los datos del jugador ESX.- Al iniciar, se muestra el HUD y el NUI recibe:
SendNUIMessage({ type = "init", config = Config.ACTIVED })
- Actualizaciones de estado (Hambre/Sed)
- Escucha
Config.statusEventName(por defectoesx_customui:updateStatus) y emitir una lista como:TriggerEvent("esx_customui:updateStatus", { { name = "hunger", percent = 48.0 }, { name = "thirst", percent = 72.0 } }) - HUD mapea estos a las dos barras de estado.
- Escucha
- Trabajo / Segundo trabajo
esx:setJobyesx:setJob2son manejados automáticamente. NUI recibe:SendNUIMessage({ type = "updateJob", jobs = { { label = job.label, grade = job.grade_label }, { label = job2.label, grade = job2.grade_label } }})
- Dinero
esx:setAccountMoneyactualizaciones de efectivo y dinero negro:SendNUIMessage({ type = "updateMoney", moneys = { { label = "Liquide", value = cash.money }, { label = black.label, value = black.money } }})
- Voz (indicador de hablar)
- Encuestas
NetworkIsPlayerTalking(PlayerId()); muestra/oculta el icono del micrófono con:SendNUIMessage({ type = "toogleMicro", show = true/false }) - Una ayuda para cambiar las clases de proximidad existe en NUI (
type = "changeMicro"), para que puedas integrarlo en tu recurso de voz si lo deseas.
- Encuestas
- Mostrar/Ocultar HUD (personalizado)
- Disparador desde cualquier lugar del lado del cliente:
TriggerEvent("iHud-V2::show", true) -- show TriggerEvent("iHud-V2::show", false) -- hide
- Disparador desde cualquier lugar del lado del cliente:
Instalación
- Deja la carpeta en tu
resources(p.ejresources/[ui]/iHud-V2). - Asegúrate del recurso:
ensure iHud-V2 - Configurar Método de acceso ESX, nombre del evento de estado, y activa secciones en
config.lua. - Confirma que el script de estado emite
{ name = "hunger"/"thirst", percent = <0-100> }arrays aConfig.statusEventName.
Compatibilidad y consejos
- recuperación ESX
functionmodo espera:ESX = exports[Config.extendedName]:getSharedObject()eventmodo espera:TriggerEvent(Config.eventNameESX, function(obj) ESX = obj end)
- Proximidad de voz
- El HUD viene con un indicador de habla listo para usar. Para mostrar niveles de proximidad (susurro/normal/grito), haz que tu recurso de voz envíe un mensaje de NUI con
type="changeMicro"y tu clase CSS elegida.
- El HUD viene con un indicador de habla listo para usar. Para mostrar niveles de proximidad (susurro/normal/grito), haz que tu recurso de voz envíe un mensaje de NUI con
- Estilo
- Fuentes e iconos cargados desde CDNs; UI es responsivo y se mantiene minimalista para servidores RP.
Si lo deseas, puedo adaptar el texto anterior al nombre exacto de tu servidor e incluir un bloque corto de “Requisitos del servidor / Dependencias” (por ejemplo, los nombres de los recursos de estado/voz) o agregar capturas de pantalla.




