FiveM NUI: como funciona, erros comuns e a skill de IA

488 instalações no skills.sh

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 com window.addEventListener('message', ...) e lê event.data.
  • Foco e cursor. SetNuiFocus(hasFocus, hasCursor) decide se a página captura teclado e mouse. Abra com SetNuiFocus(true, true) e feche com SetNuiFocus(false, false).
  • De JavaScript para Lua. RegisterNUICallback('close', function(data, cb) ... cb('ok') end) no cliente. A página chama com fetch('https://<resource-name>/close', { method: 'POST', body: JSON.stringify(data) }). Use GetParentResourceName() 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 chama my-shop, mas o JS chama https://myshop/buy. O console F8 mostra 404 ou "failed to fetch". Use GetParentResourceName() e mantenha o nome do callback idêntico nos dois lados.
  • Nunca chamar cb. O callback Lua roda, faz o trabalho e termina sem cb(...). A promise do fetch no JS nunca resolve e a UI trava. Chame cb sempre, 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

  1. Clique em "Download SKILL.md" no topo desta página.
  2. 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.
  3. 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, RegisterNUICallback com cb e lista todos os arquivos no fxmanifest.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/.

Documentação de skills do Claude Code

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.

Documentação de regras do Cursor

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.

Documentação de instruções do VS Code

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.

Conteúdo da skill (inclui SKILL.md e quaisquer outros arquivos)

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_page in 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

Posso usar React ou Vue em uma NUI do FiveM?
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.
Uso NUI ou ox_lib para a minha interface?
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.
Posso usar esta skill com o ChatGPT?
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.

Leituras mais longas do blog da FiveAI sobre o mesmo tema.

Mais skills