FiveM NUI: como funciona, erros comuns e a skill de IA
Atualizado em
Não quer gerenciar as skills por conta própria? Obtenha o app completo.
NUI é como um recurso do FiveM mostra uma interface HTML: ui_page a carrega, SendNUIMessage envia dados, SetNuiFocus dá o controle e RegisterNUICallback recebe as respostas. Este guia cobre os erros que deixam o jogador travado e a skill de IA com a API real.
FiveM NUI é o sistema que permite a um recurso desenhar sua interface com HTML, CSS e JavaScript dentro de um navegador embutido. Cada inventário, celular, HUD e menu de loja personalizado em um servidor FiveM é uma página NUI. Se você está construindo uma interface que o ox_lib não cobre, precisa entender como a página é declarada, como Lua e JavaScript conversam e onde fica a fronteira de segurança.
O que o FiveM NUI oferece
O recurso declara sua página no fxmanifest.lua com ui_page 'html/index.html' e lista cada asset que o navegador vai carregar no bloco files {}. A página renderiza em tela cheia por cima do jogo.
- De Lua para JavaScript.
SendNUIMessage({ action = 'open', data = ... })no cliente envia um objeto JSON. A página recebe comwindow.addEventListener('message', ...)e lêevent.data. - Foco e cursor.
SetNuiFocus(hasFocus, hasCursor)decide se a página captura teclado e mouse. Abra comSetNuiFocus(true, true)e feche comSetNuiFocus(false, false). - De JavaScript para Lua.
RegisterNUICallback('close', function(data, cb) ... cb('ok') end)no cliente. A página chama comfetch('https://<resource-name>/close', { method: 'POST', body: JSON.stringify(data) }). UseGetParentResourceName()no JS para obter o nome do recurso sem escrever à mão. - Segurança. O código NUI roda na máquina do jogador. Tudo o que ele envia precisa ser validado no servidor antes de tocar dinheiro, itens ou o banco de dados.
Os natives estão documentados em docs.fivem.net/natives.
Erros comuns com FiveM NUI
- Esquecer
SetNuiFocus(false, false)ao fechar. A página some, mas o jogador não consegue se mover nem abrir o menu de pausa. Todo caminho de fechamento, incluindo a tecla Escape e o botão de fechar, precisa liberar o foco. - URL errada no
fetch. A pasta do recurso se chamamy-shop, mas o JS chamahttps://myshop/buy. O console F8 mostra 404 ou "failed to fetch". UseGetParentResourceName()e mantenha o nome do callback idêntico nos dois lados. - Nunca chamar
cb. O callback Lua roda, faz o trabalho e termina semcb(...). A promise dofetchno JS nunca resolve e a UI trava. Chamecbsempre, mesmo com uma tabela vazia. - Confiar nos dados da NUI como se o servidor tivesse validado. Um callback recebe
{ price = 0 }e o cliente repassa ao servidor, que cobra zero. Callbacks NUI chegam do cliente, então o servidor precisa consultar preços e permissões por conta própria. - Arquivos faltando em
files {}. A página carrega em branco e o console F8 mostra 404 para a folha de estilos ou o script. Cada arquivo que a página carrega precisa estar listado, incluindo imagens e fontes.
Por que assistentes de IA erram com FiveM NUI
Assistentes genéricos confundem as camadas. Colocam SendNUIMessage em um script de servidor, inventam um RegisterNUICallback no servidor ou escrevem fetch('/callback') com um caminho relativo que o navegador CEF não resolve. Também tratam o payload do callback como entrada confiável e escrevem lógica de negócio no cliente, que qualquer jogador pode editar.
A skill de FiveM NUI dá ao assistente um arquivo de regras por tema: setup.md para o manifest e a estrutura de pastas, fullscreen-nui.md para mensagens e foco, nui-callbacks.md para o contrato do callback e suas regras de segurança, best-practices.md para desempenho e tratamento de erros, e reference-links.md para a documentação oficial. O assistente lê a regra correspondente e escreve o native certo do lado certo.
Instale a skill de FiveM NUI em 30 segundos
- Clique em "Download SKILL.md" no topo desta página.
- Descompacte na pasta de skills ou rules da sua ferramenta de IA. A seção de instalação abaixo mostra o caminho exato para Claude Code, Cursor e VS Code.
- Peça ao assistente algo concreto, como "um menu em tela cheia que abre com um comando e fecha com Escape", e confira se ele usa
SetNuiFocus,RegisterNUICallbackcomcbe lista todos os arquivos nofxmanifest.lua.
Como instalar esta skill
Baixe o zip, descompacte e coloque a pasta onde a sua ferramenta carrega skills ou regras. O caminho exato depende da ferramenta:
Claude Code
Descompacte em .claude/skills/fivem-nui/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/fivem-nui/.
Cursor
O Cursor carrega as regras do projeto de .cursor/rules/. Adicione ali um arquivo de regra apontando para a skill descompactada, ou cole o conteúdo do SKILL.md e dos arquivos de regras em uma regra. O formato é .mdc com frontmatter e muda entre versões, então confira a documentação da sua versão.
VS Code / Copilot
O Copilot lê arquivos de instruções em .github/instructions/*.instructions.md. Copie o SKILL.md para lá com um glob applyTo para os seus arquivos Lua e mantenha os arquivos de regras ao lado.
O arquivo SKILL.md
Este é o arquivo que o seu assistente de IA lê. Ele aponta para os arquivos de regras incluídos no download.
O conteúdo da skill está em inglês: é documentação técnica feita 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.
Perguntas frequentes
- Sim. NUI é um navegador CEF, então qualquer framework que compile para HTML, CSS e JS estáticos funciona. Faça o build do projeto, aponte ui_page para a saída e liste cada arquivo gerado no bloco files do fxmanifest.lua.
- Use ox_lib para notificações, diálogos, menus e barras de progresso padrão. Construa uma NUI só quando precisar de uma interface personalizada que o ox_lib não oferece, como uma grade de inventário ou um celular.
- Sim, com um passo manual. O SKILL.md é markdown puro, então você pode colar na conversa como contexto. O suporte nativo a skills é para Claude Code, Cursor e VS Code.
Posso usar React ou Vue em uma NUI do FiveM?
Uso NUI ou ox_lib para a minha interface?
Posso usar esta skill com o ChatGPT?
Guias relacionados
Leituras mais longas do blog da FiveAI sobre o mesmo tema.