FiveM NUI: cómo funciona, errores comunes y la skill de IA
488 instalaciones en skills.sh
Actualizado
¿No quieres gestionar las skills tú mismo? Consigue la app completa.
NUI es la forma en que un recurso de FiveM muestra una interfaz HTML: ui_page la carga, SendNUIMessage le envía datos, SetNuiFocus le da el control y RegisterNUICallback recibe sus respuestas. Esta guía cubre los errores que dejan al jugador atascado y la skill de IA con la API real.
FiveM NUI es el sistema que permite a un recurso dibujar su interfaz con HTML, CSS y JavaScript dentro de un navegador embebido. Cada inventario, teléfono, HUD y menú de tienda personalizado en un servidor FiveM es una página NUI. Si construyes una interfaz que ox_lib no cubre, necesitas entender cómo se declara la página, cómo se comunican Lua y JavaScript y dónde está la frontera de seguridad.
Qué te da FiveM NUI
El recurso declara su página en fxmanifest.lua con ui_page 'html/index.html' y lista cada asset que cargará el navegador en el bloque files {}. La página se renderiza a pantalla completa sobre el juego.
- De Lua a JavaScript.
SendNUIMessage({ action = 'open', data = ... })en el cliente envía un objeto JSON. La página lo recibe conwindow.addEventListener('message', ...)y leeevent.data. - Foco y cursor.
SetNuiFocus(hasFocus, hasCursor)decide si la página captura teclado y ratón. Abre conSetNuiFocus(true, true)y cierra conSetNuiFocus(false, false). - De JavaScript a Lua.
RegisterNUICallback('close', function(data, cb) ... cb('ok') end)en el cliente. La página lo llama confetch('https://<resource-name>/close', { method: 'POST', body: JSON.stringify(data) }). UsaGetParentResourceName()en JS para obtener el nombre del recurso sin escribirlo a mano. - Seguridad. El código NUI corre en la máquina del jugador. Todo lo que envíe debe validarse en el servidor antes de tocar dinero, items o la base de datos.
Los natives están documentados en docs.fivem.net/natives.
Errores comunes con FiveM NUI
- Olvidar
SetNuiFocus(false, false)al cerrar. La página desaparece pero el jugador no puede moverse ni abrir el menú de pausa. Cada ruta de cierre, incluida la tecla Escape y el botón de cerrar, debe liberar el foco. - URL equivocada en
fetch. La carpeta del recurso se llamamy-shoppero el JS llama ahttps://myshop/buy. La consola F8 muestra un 404 o "failed to fetch". UsaGetParentResourceName()y mantén el nombre del callback idéntico en ambos lados. - No llamar nunca a
cb. El callback Lua se ejecuta, hace su trabajo y termina sincb(...). La promesa delfetchen JS nunca se resuelve y la UI se queda colgada. Llama acbsiempre, aunque sea con una tabla vacía. - Confiar en los datos de la NUI como si el servidor los hubiera validado. Un callback recibe
{ price = 0 }y el cliente lo reenvía al servidor, que cobra cero. Los callbacks NUI llegan del cliente, así que el servidor debe consultar precios y permisos por su cuenta. - Archivos que faltan en
files {}. La página carga en blanco y la consola F8 muestra un 404 para la hoja de estilos o el script. Cada archivo que carga la página debe estar listado, incluidas imágenes y fuentes.
Por qué los asistentes de IA se equivocan con FiveM NUI
Los asistentes genéricos confunden las capas. Ponen SendNUIMessage en un script de servidor, se inventan un RegisterNUICallback en el servidor o escriben fetch('/callback') con una ruta relativa que el navegador CEF no puede resolver. También tratan el payload del callback como entrada de confianza y escriben lógica de negocio en el cliente, que cualquier jugador puede editar.
La skill de FiveM NUI da al asistente un archivo de reglas por tema: setup.md para el manifest y la estructura de carpetas, fullscreen-nui.md para mensajería y foco, nui-callbacks.md para el contrato del callback y sus reglas de seguridad, best-practices.md para rendimiento y manejo de errores, y reference-links.md para la documentación oficial. El asistente lee la regla correspondiente y escribe el native correcto en el lado correcto.
Instala la skill de FiveM NUI en 30 segundos
- Haz clic en "Download SKILL.md" en la parte superior de esta página.
- Descomprímelo en la carpeta de skills o rules de tu herramienta de IA. La sección de instalación de abajo muestra la ruta exacta para Claude Code, Cursor y VS Code.
- Pide al asistente algo concreto, como "un menú a pantalla completa que se abre con un comando y se cierra con Escape", y comprueba que usa
SetNuiFocus,RegisterNUICallbackconcby lista todos los archivos enfxmanifest.lua.
Cómo instalar esta skill
Descarga el zip, descomprímelo y coloca la carpeta donde tu herramienta carga skills o reglas. La ruta exacta depende de la herramienta:
Claude Code
Descomprime en .claude/skills/fivem-nui/ dentro del proyecto (la carpeta debe contener SKILL.md). Para todos los proyectos, usa ~/.claude/skills/fivem-nui/.
Cursor
Cursor carga las reglas del proyecto desde .cursor/rules/. Añade ahí un archivo de regla que apunte a la skill descomprimida, o pega el contenido de SKILL.md y los archivos de reglas en una regla. El formato es .mdc con frontmatter y cambia entre versiones, así que revisa la documentación de tu versión.
VS Code / Copilot
Copilot lee archivos de instrucciones desde .github/instructions/*.instructions.md. Copia SKILL.md ahí con un glob applyTo para tus archivos Lua y deja los archivos de reglas al lado.
El archivo SKILL.md
Este es el archivo que lee tu asistente de IA. Enlaza a los archivos de reglas incluidos en la descarga.
El contenido de la skill está en inglés: es documentación técnica pensada para agentes de IA.
FiveM NUI Development
Best practices for FiveM NUI development — fullscreen UIs, NUI callbacks, messaging, and UI integration. Use this skill whenever you are dealing with FiveM user interfaces to obtain domain-specific knowledge.
When to use
- User asks how to create a UI for FiveM.
- Creating or editing HTML/CSS/JS files for FiveM resources.
- Setting up
ui_pagein fxmanifest.lua. - Questions about NUI callbacks, SendNUIMessage, or SetNUIFocus.
- Need to look up natives → point to https://docs.fivem.net/natives/.
How to use
Read individual rule files for detailed explanations and examples:
- rules/setup.md — Setting up NUI in a resource: ui_page, files entry, folder structure.
- rules/fullscreen-nui.md — Creating fullscreen NUI pages: SEND_NUI_MESSAGE, SET_NUI_FOCUS, developer tools, referencing assets.
- rules/nui-callbacks.md — NUI callbacks: RegisterNUICallback, fetch requests, data handling, security.
- rules/best-practices.md — Best practices: performance, security, communication patterns, error handling.
- rules/reference-links.md — Official docs and natives reference.
Preguntas frecuentes
- Sí. NUI es un navegador CEF, así que cualquier framework que compile a HTML, CSS y JS estáticos funciona. Compila el proyecto, apunta ui_page a la salida y lista cada archivo generado en el bloque files de fxmanifest.lua.
- Usa ox_lib para notificaciones, diálogos, menús y barras de progreso estándar. Construye una NUI solo cuando necesites una interfaz personalizada que ox_lib no ofrece, como una cuadrícula de inventario o un teléfono.
- Sí, con un paso manual. El SKILL.md es markdown plano, así que puedes pegarlo en la conversación como contexto. El soporte nativo de skills es para Claude Code, Cursor y VS Code.
¿Puedo usar React o Vue en una NUI de FiveM?
¿Uso NUI o ox_lib para mi interfaz?
¿Puedo usar esta skill con ChatGPT?
Guías relacionadas
Lecturas más largas del blog de FiveAI sobre el mismo tema.