ox_lib para FiveM: qué es, errores comunes y la skill de IA
Actualizado
¿No quieres gestionar las skills tú mismo? Consigue la app completa.
ox_lib es una librería independiente de FiveM que ofrece notificaciones, diálogos, callbacks, comandos, zonas y utilidades compartidas para tus recursos. Funciona con ESX y QBCore, y esta guía cubre la configuración, los errores comunes y la skill de IA con su API real.
ox_lib es una librería standalone para FiveM que da a tus recursos UI lista para usar, callbacks cliente-servidor, comandos, zonas y utilidades compartidas. Recursos como ox_inventory y ox_target dependen de ella, y la mayoría de servidores ESX y QBCore modernos ya la tienen instalada. Si escribes scripts para un servidor con ox_lib, úsala en lugar de montar tu propia NUI o copiar código de menús antiguo.
Qué te da ox_lib
El setup es una línea en fxmanifest.lua: shared_scripts { '@ox_lib/init.lua' }. Puedes añadir ox_libs { 'locale', 'callback' } para precargar los módulos que uses con frecuencia.
- Interfaz.
lib.notifypara notificaciones,lib.alertDialogpara confirmaciones,lib.inputDialogpara formularios, además de menús contextuales, barras de progreso y TextUI. Los iconos vienen de Font Awesome 6. - Callbacks.
lib.callback.registeren el servidor,lib.callback.awaiten el cliente. El cliente pregunta, el servidor responde y recibes el valor en la misma línea. - Comandos.
lib.addCommanden el servidor conhelp,paramsyrestricted, para que el comando valide sus argumentos y compruebe permisos por ti. - Zonas.
lib.zones.poly,lib.zones.boxylib.zones.spherecon handlersonEnter,onExiteinside. Úsalas en el cliente. El soporte en servidor es limitado. - Utilidades. Keybinds, locales,
lib.table,lib.stringy otros módulos compartidos.
La referencia completa está en coxdocs.dev/ox_lib.
Errores comunes con ox_lib
- Olvidar
@ox_lib/init.luaen el manifest. El script carga y muere con "attempt to index a nil value (global 'lib')". Añadeshared_scripts { '@ox_lib/init.lua' }y asegúrate de que ox_lib arranca antes que tu recurso. - Registrar el callback en el lado equivocado. Un cliente que llama a
lib.callback.await('myjob:getData')no recibe nada porque el callback también se registró en el cliente. Registra conlib.callback.registeren el servidor y espera conawaiten el cliente. Si el servidor necesita preguntar a un cliente, pasa el source del jugador como segundo argumento. - Usar un callback para avisar y olvidar. Si el cliente solo necesita decirle al servidor "pulsé el botón", basta con un net event. Los callbacks bloquean hasta que llega la respuesta, así que úsalos solo cuando necesites un valor de vuelta.
- Tratar las zonas como función de servidor. Las zonas corren en el cliente, donde está la posición del jugador. El soporte de zonas en servidor es limitado, así que detecta entradas y salidas en el cliente y manda el resultado al servidor si lo necesitas.
- Mezclar patrones antiguos. Llamadas
exports.ox_lib, menús ESX viejos y una NUI propia para un simple diálogo de confirmación son señales de código escrito antes de que existiera ox_lib. Sustitúyelos porlib.alertDialog,lib.inputDialogy menús contextuales.
Por qué los asistentes de IA se equivocan con ox_lib
Un asistente genérico ha visto años de código FiveM, casi todo escrito antes de ox_lib o con una versión antigua. Pide un diálogo de confirmación y puede inventarse un export como exports.ox_lib:showDialog, escribir un menú ESX o darte un callback registrado en el cliente. El código parece correcto y falla en la primera ejecución.
La skill de ox_lib lo corrige con archivos de reglas, uno por módulo: init.md, callback.md, interface.md, addCommand.md y zones.md. Cada uno indica los nombres reales de las funciones, a qué lado de la red pertenecen y qué argumentos reciben. El asistente lee la regla que coincide con tu petición y escribe contra la API documentada en vez de adivinar.
Instala la skill de ox_lib 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 "añade un callback de servidor que devuelva el trabajo del jugador y muéstralo con lib.notify", y comprueba que usa
lib.callback.registeren el servidor ylib.callback.awaiten el cliente.
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/oxlib/ dentro del proyecto (la carpeta debe contener SKILL.md). Para todos los proyectos, usa ~/.claude/skills/oxlib/.
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.
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
Preguntas frecuentes
- Sí. ox_lib es standalone y no depende de ningún framework. Los servidores ESX y QBCore lo usan, y las skills de FiveAI para esos frameworks lo recomiendan para notificaciones, diálogos y menús.
- Sí. ox_lib es open source y está publicado en GitHub bajo licencia LGPL. Puedes usarlo en cualquier servidor sin pagar, siempre que respetes los términos de la licencia.
- 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.
¿ox_lib funciona con ESX y QBCore?
¿ox_lib es gratis?
¿Puedo usar esta skill con ChatGPT?
Guías relacionadas
Lecturas más largas del blog de FiveAI sobre el mismo tema.