ox_target 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_target é o recurso de terceiro olho para FiveM. Você adiciona opções de interação a entidades, modelos, jogadores e zonas com exports.ox_target. Este guia cobre a API, os erros que abrem exploits e a skill de IA que os evita.

O ox_target é o recurso de terceiro olho para FiveM. Ele substitui o qb-target e o bt-target e é compatível com ox_core, ESX e qbx_core. Você adiciona opções a entidades, modelos, jogadores e zonas, e o jogador as escolhe com a tecla de target. Todas as funções são chamadas com exports.ox_target:<fn>(...), porque não existe tabela global ox_target.

Referência rápida

Cada função é exports.ox_target:<nome>(...) e roda no cliente. Todas recebem um array de tabelas de opções.

Export Use para
addLocalEntity(entity, options) Uma entidade criada localmente
addEntity(netId, options) Uma entidade em rede
addModel(models, options) Todas as instâncias de um modelo
addGlobalPed / addGlobalVehicle / addGlobalObject / addGlobalPlayer Uma categoria inteira
addGlobalOption(options) Tudo, sem filtro
addBoxZone / addSphereZone / addPolyZone Um lugar em vez de uma entidade; retorna um id de zona
removeZone(zoneId) Remove uma zona

Campos de opção comuns: label, name, icon, distance, groups, items, canInteract, onSelect, serverEvent. Defina name em toda opção que você pretende remover.

O que a skill de ox_target oferece

A skill liga cada alvo à função certa:

  • addLocalEntity para uma entidade criada localmente e addEntity para uma entidade em rede.
  • addModel para todas as instâncias de um modelo.
  • addGlobalPed, addGlobalVehicle, addGlobalObject e addGlobalPlayer para categorias inteiras, e addGlobalOption para tudo.
  • addBoxZone, addSphereZone e addPolyZone para um local em vez de uma entidade.

Os arquivos de regras cobrem a instalação, cada campo da tabela de opções, entidades, zonas e a migração do qb-target. A referência original está em overextended.dev/ox_target.

Erros comuns com o ox_target

  • Confiar no onSelect. Ele roda no cliente. Tudo que der dinheiro, itens ou mudar o estado deve passar por serverEvent e ser validado de novo no handler do servidor.
  • Usar sintaxe do qb-target. O formato das opções é diferente. Monte o array com os campos documentados.
  • Esquecer o nome da opção. Opções são removidas por nome, não por índice. Passe name em cada opção que você pretende remover.
  • Deixar a distância no padrão. Defina distance explicitamente para qualquer coisa acima de uns 2,5 m.
  • Checar condições dentro do onSelect. Controle a visibilidade com groups, items ou canInteract para o jogador não ver opções que não pode usar.
  • Chamar funções de zona no servidor. Funções de zonas e entidades são só de cliente.
  • Iniciar o ox_target antes do ox_lib. Garanta que o ox_lib inicie primeiro no server.cfg.

Por que assistentes de IA erram no ox_target

Muitos exemplos na internet usam qb-target, então os assistentes costumam gerar chamadas a exports['qb-target'] ou inventar uma tabela global. Os dois casos falham no ox_target. Eles também tendem a colocar a lógica de recompensa dentro do onSelect, o que deixa o servidor aberto a eventos forjados.

A skill do ox_target lista as funções reais e a tabela de decisão para escolher uma. O assistente lê a regra que combina com o seu pedido e escreve código com exports.ox_target e serverEvent para tudo que mude o estado.

Para ver como uma skill se compara a outras configurações de IA para FiveM, leia nosso comparativo.

Instale a skill de ox_target em 30 segundos

  1. Clique em "Download SKILL.md" no topo desta página.
  2. Descompacte na pasta de skills ou regras 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 uma opção de terceiro olho a um ped que abre uma loja", e confira se ele usa exports.ox_target:addLocalEntity e trata a compra em um serverEvent.

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

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_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

Perguntas frequentes

O ox_target substitui o qb-target?
Sim. O ox_target substitui o qb-target e o bt-target, e a skill inclui uma regra de migração do qb-target. O formato das opções é diferente, então não cole sintaxe do qb-target.
O ox_target é gratuito?
Sim. O ox_target é open source e publicado no GitHub pelas equipes Overextended e CommunityOx, então você pode usá-lo em qualquer servidor sem custo.
É seguro dar itens dentro do onSelect?
Não. O onSelect roda no cliente, então não dá para confiar nos argumentos. Use serverEvent para tudo que der dinheiro, itens ou mudar o estado, e valide de novo no handler do servidor.

Leituras mais longas do blog da FiveAI sobre o mesmo tema.

Mais skills