ox_target para FiveM: qué es, errores comunes y la skill de IA

Ver en skills.sh

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:

  • addLocalEntity para una entidad que creaste en local y addEntity para una entidad en red.
  • addModel para todas las instancias de un modelo.
  • addGlobalPed, addGlobalVehicle, addGlobalObject y addGlobalPlayer para categorías enteras, y addGlobalOption para todo.
  • addBoxZone, addSphereZone y addPolyZone para 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 serverEvent y 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 name en cada opción que vayas a quitar.
  • Dejar la distancia por defecto. Define distance de forma explícita para cualquier cosa a más de unos 2,5 m.
  • Comprobar condiciones dentro de onSelect. Controla la visibilidad con groups, items o canInteract para 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_lib arranque primero en server.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

  1. Haz clic en "Download SKILL.md" en la parte superior de esta página.
  2. 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.
  3. 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:addLocalEntity y gestiona la compra en un serverEvent.

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/.

Documentación de skills de Claude Code

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.

Documentación de reglas de Cursor

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.

Documentación de instrucciones de VS Code

El archivo SKILL.md

Este es el archivo que lee tu asistente de IA. Enlaza a los archivos de reglas incluidos en la descarga.

Contenido de la skill (incluye SKILL.md y cualquier otro archivo)

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 global ox_target table.
  • onSelect runs on the CLIENT. Never trust its arguments server-side: re-validate in the serverEvent handler.
  • Always pass name on an option you intend to remove later. Removal is by name, not by index.
  • distance defaults to the resource default; set it explicitly for anything above ~2.5m.
  • Zone and entity functions are CLIENT-side only.
  • Prefer addLocalEntity for entities you spawned yourself; use addEntity only 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

  1. Confirm ox_target is started AFTER ox_lib in server.cfg.
  2. Pick the function from the Decision Gates table.
  3. Build the options array. Read rules/options.md for every allowed field.
  4. Gate visibility with groups, items or canInteract rather than checking inside onSelect.
  5. Route the action: onSelect for client logic, serverEvent for anything that grants money, items or state.
  6. 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

¿ox_target reemplaza a qb-target?
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.
¿ox_target es gratis?
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.
¿Es seguro dar ítems desde onSelect?
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.

Lecturas más largas del blog de FiveAI sobre el mismo tema.

Más skills