ox_lib para FiveM: o que é, erros comuns e a skill de IA
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.notifypara notificações,lib.alertDialogpara confirmações,lib.inputDialogpara formulários, além de menus de contexto, barras de progresso e TextUI. Os ícones vêm do Font Awesome 6. - Callbacks.
lib.callback.registerno servidor,lib.callback.awaitno cliente. O cliente pergunta, o servidor responde e você recebe o valor na mesma linha. - Comandos.
lib.addCommandno servidor comhelp,paramserestricted, para que o comando valide os argumentos e verifique permissões por você. - Zonas.
lib.zones.poly,lib.zones.boxelib.zones.spherecom handlersonEnter,onExiteinside. Use no cliente. O suporte no servidor é limitado. - Utilitários. Keybinds, locales,
lib.table,lib.stringe outros módulos compartilhados.
A referência completa está em coxdocs.dev/ox_lib.
Erros comuns com ox_lib
- Esquecer
@ox_lib/init.luano manifest. O script carrega e morre com "attempt to index a nil value (global 'lib')". Adicioneshared_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 comlib.callback.registerno servidor e useawaitno 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 porlib.alertDialog,lib.inputDialoge 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
- 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 "adicione um callback de servidor que retorne o emprego do jogador e mostre com lib.notify", e confira se ele usa
lib.callback.registerno servidor elib.callback.awaitno 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/.
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.
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.awaitandlib.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.addCommandwith 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:
- Ox Lib (index): https://coxdocs.dev/ox_lib
- Interface (notify, alert, input, menu, progress, textui): https://coxdocs.dev/ox_lib/Modules/Interface
- Callback (client/server): https://coxdocs.dev/ox_lib/Modules/Callback/Lua/Server and …/Client
- AddCommand: https://coxdocs.dev/ox_lib/Modules/AddCommand/Server
- Zones: https://coxdocs.dev/ox_lib/Modules/Zones/Shared
- AddKeybind: https://coxdocs.dev/ox_lib/Modules/AddKeybind/Client
- Locale, Table, String, Math, etc.: navigate from https://coxdocs.dev/ox_lib
Perguntas frequentes
- 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.
- 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.
- 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.
O ox_lib funciona com ESX e QBCore?
O ox_lib é gratuito?
Posso usar esta skill com o ChatGPT?
Guias relacionados
Leituras mais longas do blog da FiveAI sobre o mesmo tema.