ox_lib para FiveM: o que é, erros comuns e a skill de IA

Ver no skills.sh

Atualizado em

Não quer gerenciar as skills por conta própria? Obtenha o app completo.

O ox_lib é uma biblioteca independente do FiveM que oferece notificações, diálogos, callbacks, comandos, zonas e utilidades compartilhadas para seus recursos. Funciona com ESX e QBCore, e este guia cobre a configuração, os erros comuns e a skill de IA com a API real.

ox_lib é uma biblioteca standalone para FiveM que dá aos seus recursos UI pronta, callbacks cliente-servidor, comandos, zonas e utilitários compartilhados. Recursos como ox_inventory e ox_target dependem dela, e a maioria dos servidores ESX e QBCore modernos já a tem instalada. Se você escreve scripts para um servidor com ox_lib, use a biblioteca em vez de montar sua própria NUI ou copiar código de menu antigo.

O que o ox_lib oferece

O setup é uma linha no fxmanifest.lua: shared_scripts { '@ox_lib/init.lua' }. Você pode adicionar ox_libs { 'locale', 'callback' } para pré-carregar os módulos que usa com frequência.

  • Interface. lib.notify para notificações, lib.alertDialog para confirmações, lib.inputDialog para formulários, além de menus de contexto, barras de progresso e TextUI. Os ícones vêm do Font Awesome 6.
  • Callbacks. lib.callback.register no servidor, lib.callback.await no cliente. O cliente pergunta, o servidor responde e você recebe o valor na mesma linha.
  • Comandos. lib.addCommand no servidor com help, params e restricted, para que o comando valide os argumentos e verifique permissões por você.
  • Zonas. lib.zones.poly, lib.zones.box e lib.zones.sphere com handlers onEnter, onExit e inside. Use no cliente. O suporte no servidor é limitado.
  • Utilitários. Keybinds, locales, lib.table, lib.string e outros módulos compartilhados.

A referência completa está em coxdocs.dev/ox_lib.

Erros comuns com ox_lib

  • Esquecer @ox_lib/init.lua no manifest. O script carrega e morre com "attempt to index a nil value (global 'lib')". Adicione shared_scripts { '@ox_lib/init.lua' } e garanta que o ox_lib inicia antes do seu recurso.
  • Registrar o callback do lado errado. Um cliente que chama lib.callback.await('myjob:getData') não recebe nada porque o callback também foi registrado no cliente. Registre com lib.callback.register no servidor e use await no cliente. Se o servidor precisa perguntar a um cliente, passe o source do jogador como segundo argumento.
  • Usar callback para avisar e esquecer. Se o cliente só precisa dizer ao servidor "apertei o botão", um net event basta. Callbacks bloqueiam até a resposta chegar, então use apenas quando precisar de um valor de volta.
  • Tratar zonas como recurso de servidor. Zonas rodam no cliente, onde está a posição do jogador. O suporte a zonas no servidor é limitado, então detecte entradas e saídas no cliente e mande o resultado ao servidor se precisar.
  • Misturar padrões antigos. Chamadas exports.ox_lib, menus ESX velhos e uma NUI própria para um simples diálogo de confirmação são sinais de código escrito antes do ox_lib existir. Substitua por lib.alertDialog, lib.inputDialog e menus de contexto.

Por que assistentes de IA erram com ox_lib

Um assistente genérico viu anos de código FiveM, quase todo escrito antes do ox_lib ou com uma versão antiga. Peça um diálogo de confirmação e ele pode inventar um export como exports.ox_lib:showDialog, escrever um menu ESX ou entregar um callback registrado no cliente. O código parece certo e falha na primeira execução.

A skill do ox_lib corrige isso com arquivos de regras, um por módulo: init.md, callback.md, interface.md, addCommand.md e zones.md. Cada um indica os nomes reais das funções, a que lado da rede pertencem e quais argumentos recebem. O assistente lê a regra que corresponde ao seu pedido e escreve contra a API documentada em vez de adivinhar.

Instale a skill do ox_lib 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 "adicione um callback de servidor que retorne o emprego do jogador e mostre com lib.notify", e confira se ele usa lib.callback.register no servidor e lib.callback.await no cliente.

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/oxlib/ dentro do projeto (a pasta precisa conter SKILL.md). Para todos os projetos, use ~/.claude/skills/oxlib/.

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.

Ox Lib

Standalone library for FiveM: reusable UI, callbacks, commands, and shared modules. Used by many Ox resources (ox_inventory, ox_target, etc.). Always prefer ox_lib over custom NUI or legacy patterns when the user wants notifications, dialogs, menus, or client-server calls.

When to use

  • User asks for notifications, alert dialogs, input dialogs, menus, progress bars, or TextUI.
  • Client needs to call server (or server calls client): use lib.callback / lib.callback.await and lib.callback.register.
  • Registering server commands with help and params: use lib.addCommand.
  • Keybinds, context menus, skill checks, locales, or shared helpers (lib.table, lib.string, etc.).
  • Zones: “when player enters/leaves area”, “is player inside” — use lib.zones.poly, lib.zones.box, lib.zones.sphere (prefer client; server has limited support for onEnter/onExit/inside).

Setup

  • In fxmanifest.lua: shared_scripts { '@ox_lib/init.lua' }. Optional: ox_libs { 'locale', 'callback', ... } to preload modules.

Rules

Read the rule that matches what you're doing:

  • rules/init.md — Adding ox_lib to fxmanifest, shared_script, ox_libs.
  • rules/callback.md — Client↔server: lib.callback, lib.callback.await, lib.callback.register.
  • rules/interface.md — UI: lib.notify, lib.alertDialog, lib.inputDialog; icons (Font Awesome 6).
  • rules/addCommand.md — Server commands: lib.addCommand with help, params, restricted.
  • rules/zones.md — Zones: lib.zones.poly, lib.zones.box, lib.zones.sphere; onEnter, onExit, inside; remove, contains, setDebug.

References (look up if not covered in the rules above)

If something isn't covered in the rules above, check the official docs:

Perguntas frequentes

O ox_lib funciona com ESX e QBCore?
Sim. O ox_lib é standalone e não depende de nenhum framework. Servidores ESX e QBCore usam a biblioteca, e as skills da FiveAI para esses frameworks a recomendam para notificações, diálogos e menus.
O ox_lib é gratuito?
Sim. O ox_lib é open source e está publicado no GitHub sob a licença LGPL. Você pode usar em qualquer servidor sem pagar, desde que respeite os termos da licença.
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