ox_target para FiveM: qué es, errores comunes y la skill de IA
Actualizado
¿No quieres gestionar las skills tú mismo? Consigue la app completa.
ox_target es el recurso de tercer ojo para FiveM. Añades opciones de interacción a entidades, modelos, jugadores y zonas con exports.ox_target. Esta guía cubre la API, los errores que abren exploits y la skill de IA que los evita.
ox_target es el recurso de tercer ojo para FiveM. Reemplaza a qb-target y bt-target y es compatible con ox_core, ESX y qbx_core. Añades opciones a entidades, modelos, jugadores y zonas, y el jugador las elige con la tecla de target. Todas las funciones se llaman con exports.ox_target:<fn>(...), porque no existe una tabla global ox_target.
Referencia rápida
Cada función es exports.ox_target:<nombre>(...) y se ejecuta en el cliente. Todas reciben un array de tablas de opciones.
| Export | Úsalo para |
|---|---|
addLocalEntity(entity, options) |
Una entidad que creaste en local |
addEntity(netId, options) |
Una entidad en red |
addModel(models, options) |
Todas las instancias de un modelo |
addGlobalPed / addGlobalVehicle / addGlobalObject / addGlobalPlayer |
Una categoría entera |
addGlobalOption(options) |
Todo, sin filtro |
addBoxZone / addSphereZone / addPolyZone |
Un lugar en vez de una entidad; devuelve un id de zona |
removeZone(zoneId) |
Quita una zona |
Campos de opción habituales: label, name, icon, distance, groups, items, canInteract, onSelect, serverEvent. Pon name en cada opción que vayas a quitar.
Qué te da la skill de ox_target
La skill asigna cada objetivo a la función correcta:
addLocalEntitypara una entidad que creaste en local yaddEntitypara una entidad en red.addModelpara todas las instancias de un modelo.addGlobalPed,addGlobalVehicle,addGlobalObjectyaddGlobalPlayerpara categorías enteras, yaddGlobalOptionpara todo.addBoxZone,addSphereZoneyaddPolyZonepara un lugar en vez de una entidad.
Los archivos de reglas cubren la instalación, cada campo de la tabla de opciones, entidades, zonas y la migración desde qb-target. La referencia original está en overextended.dev/ox_target.
Errores comunes con ox_target
- Fiarse de onSelect. Se ejecuta en el cliente. Todo lo que dé dinero, ítems o cambie el estado debe pasar por
serverEventy validarse de nuevo en el handler del servidor. - Usar sintaxis de qb-target. El formato de las opciones es distinto. Construye el array con los campos documentados.
- Olvidar el nombre de la opción. Las opciones se quitan por nombre, no por índice. Pasa
nameen cada opción que vayas a quitar. - Dejar la distancia por defecto. Define
distancede forma explícita para cualquier cosa a más de unos 2,5 m. - Comprobar condiciones dentro de onSelect. Controla la visibilidad con
groups,itemsocanInteractpara que el jugador no vea opciones que no puede usar. - Llamar a funciones de zona en el servidor. Las funciones de zonas y entidades son solo de cliente.
- Arrancar ox_target antes que ox_lib. Asegúrate de que
ox_libarranque primero enserver.cfg.
Por qué los asistentes de IA se equivocan con ox_target
Muchos ejemplos de internet usan qb-target, así que los asistentes suelen emitir llamadas a exports['qb-target'] o inventar una tabla global. Ambas cosas fallan en ox_target. Además tienden a poner la lógica de recompensa dentro de onSelect, lo que deja el servidor abierto a eventos falsificados.
La skill de ox_target lista las funciones reales y la tabla de decisión para elegir una. El asistente lee la regla que encaja con tu petición y escribe código con exports.ox_target y serverEvent para todo lo que cambie el estado.
Para ver cómo se compara una skill con otras configuraciones de IA para FiveM, lee nuestra comparativa.
Instala la skill de ox_target en 30 segundos
- Haz clic en "Download SKILL.md" en la parte superior de esta página.
- Descomprímela en la carpeta de skills o reglas de tu herramienta de IA. La sección de instalación de más abajo muestra la ruta exacta para Claude Code, Cursor y VS Code.
- Pídele al asistente algo concreto, como "añade una opción de tercer ojo a un ped que abra una tienda", y comprueba que usa
exports.ox_target:addLocalEntityy gestiona la compra en unserverEvent.
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/ox-target/ dentro del proyecto (la carpeta debe contener SKILL.md). Para todos los proyectos, usa ~/.claude/skills/ox-target/.
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_target
Third-eye targeting for FiveM. Replaces qb-target and bt-target. Supports ox_core, esx and qbx_core.
Activation Contract
Load this skill when the user asks to make something interactable: "press E on this ped", "third eye", "target option", "add an interaction to this vehicle/door/prop", or when migrating from qb-target.
Hard Rules
- Call every function through
exports.ox_target:<fn>(...). There is no globalox_targettable. onSelectruns on the CLIENT. Never trust its arguments server-side: re-validate in theserverEventhandler.- Always pass
nameon an option you intend to remove later. Removal is by name, not by index. distancedefaults to the resource default; set it explicitly for anything above ~2.5m.- Zone and entity functions are CLIENT-side only.
- Prefer
addLocalEntityfor entities you spawned yourself; useaddEntityonly for networked entities and expect the id to change on respawn.
Decision Gates
| Target | Function |
|---|---|
| One entity you spawned locally | addLocalEntity(entities, options) |
| A networked entity (net id) | addEntity(entities, options) |
| Every instance of a model | addModel(models, options) |
| Every ped / vehicle / object / player | addGlobalPed / addGlobalVehicle / addGlobalObject / addGlobalPlayer |
| Everything, no filter | addGlobalOption(options) |
| A location, not an entity | addBoxZone / addSphereZone / addPolyZone |
Execution Steps
- Confirm
ox_targetis started AFTERox_libinserver.cfg. - Pick the function from the Decision Gates table.
- Build the options array. Read rules/options.md for every allowed field.
- Gate visibility with
groups,itemsorcanInteractrather than checking insideonSelect. - Route the action:
onSelectfor client logic,serverEventfor anything that grants money, items or state. - Store the returned zone id if the zone must be removed later.
Output Contract
Return runnable Lua using exports.ox_target. Include the fxmanifest.lua dependency lines when the resource is new. Never emit qb-target syntax.
References
- rules/setup.md — install, fxmanifest, convars, framework support.
- rules/options.md — every field of the option table.
- rules/entities.md — entity, model and global targets.
- rules/zones.md — box, sphere and poly zones.
- rules/migration.md — qb-target to ox_target.
Upstream docs: https://overextended.dev/ox_target
Preguntas frecuentes
- Sí. ox_target reemplaza a qb-target y bt-target, y la skill incluye una regla de migración desde qb-target. El formato de las opciones es distinto, así que no pegues sintaxis de qb-target.
- Sí. ox_target es open source y lo publican en GitHub los equipos de Overextended y CommunityOx, así que puedes usarlo en cualquier servidor sin coste.
- No. onSelect se ejecuta en el cliente, así que no puedes fiarte de sus argumentos. Usa serverEvent para todo lo que dé dinero, ítems o cambie el estado, y vuelve a validar en el handler del servidor.
¿ox_target reemplaza a qb-target?
¿ox_target es gratis?
¿Es seguro dar ítems desde onSelect?
Guías relacionadas
Lecturas más largas del blog de FiveAI sobre el mismo tema.