AI Core
Essenciaisai-target

ai-target para desenvolvedores

A API de cliente do ox_target que o ai-target responde, o formato de opção, o que o handler de uma opção recebe, e o export HandleInteract.

Para os seus próprios lugares, NPCs e opções de modelo, use os pontos de interação do AI Core: o Points da lib em TypeScript ou aiLib.Points em Lua (veja a referência da lib). Um ponto aparece como aviso ou como marcador de target, o que o dono tiver escolhido, em qualquer script de target que estiver rodando, e o mesmo onPressed roda nos dois casos. Chame a API abaixo só quando você adapta um script escrito para o ox_target.

Exports

Todo export é do lado do cliente, responde tanto em exports['ai-target'] quanto em exports.ox_target (o ai-target faz provide de ox_target), e não espera. As opções pertencem ao recurso que as adicionou e são removidas quando ele para.

TargetOption

O formato de opção que todo export add* recebe, uma opção ou uma lista. Uma opção sem label fica de fora.

Prop

Type

TargetResponse

O que onSelect, export, event e serverEvent recebem.

Prop

Type

addBoxZone

Adiciona uma zona em forma de caixa com opções. addSphereZone e addPolyZone funcionam do mesmo jeito com outras formas.

Lado: Cliente · Espera: não

Signature
addBoxZone(data: { coords: Vec3; size?: Vec3; rotation?: number; name?: string; options: TargetOption | TargetOption[] }): number
addSphereZone(data: { coords: Vec3; radius?: number; name?: string; options: TargetOption | TargetOption[] }): number
addPolyZone(data: { points: Vec3[]; thickness?: number; name?: string; options: TargetOption | TargetOption[] }): number
Lua
local id = exports.ox_target:addBoxZone({ coords = vec3(x, y, z), size = vec3(2, 2, 2), rotation = 0, options = { ... } })

Parâmetros

Prop

Type

Retorno

number: o id da zona. 0 quando as coordenadas estão ausentes ou são inválidas (um aviso é registrado).

Exemplo

import { callExport } from "@aicore-fivem/lib/client";

const zone = callExport("ox_target", "addBoxZone", {
  coords: { x: 441.8, y: -982.0, z: 30.7 },
  size: { x: 1.5, y: 1.5, z: 2 },
  rotation: 0,
  options: [
    {
      name: "duty",
      label: "Go on duty",
      icon: "clipboard-check",
      groups: "police",
      onSelect: () => emitNet("myscript:toggleDuty"),
    },
  ],
}) as number;

on("onResourceStop", (name: string) => {
  if (name === GetCurrentResourceName()) callExport("ox_target", "removeZone", zone);
});

As zonas de um recurso são removidas quando esse recurso para, então o handler de parada acima é opcional. Remova uma zona você mesmo quando o lugar deixa de existir enquanto seu recurso continua rodando.

removeZone

Remove uma zona. Lado: Cliente · Espera: não.

Signature
removeZone(id: number | string): void

id é o número que add*Zone retornou, ou o name da zona.

zoneExists

Lado: Cliente · Espera: não.

Signature
zoneExists(id: number | string): boolean

Retorna true enquanto a zona com esse número ou nome existir.

addModel

Coloca opções em toda entidade desses modelos (portas de um modelo, caixas eletrônicos, caçambas).

Lado: Cliente · Espera: não

Signature
addModel(models: string | number | Array<string | number>, options: TargetOption | TargetOption[]): void
removeModel(models: string | number | Array<string | number>, names?: string | string[]): void
Lua
exports.ox_target:addModel({ 'prop_atm_01', 'prop_atm_02' }, { { name = 'atm', label = 'Use ATM', icon = 'credit-card', onSelect = openAtm } })

Parâmetros

Prop

Type

Retorno

Nada.

addEntity and addLocalEntity

addEntity coloca opções em entidades em rede pelo id de rede (veículos ou peds que o servidor criou). addLocalEntity as coloca em entidades pelo handle (um ped ou prop que seu cliente criou). Cada um tem um equivalente remove* que recebe os mesmos ids e nomes de opção opcionais.

Lado: Cliente · Espera: não

Signature
addEntity(netIds: number | number[], options: TargetOption | TargetOption[]): void
removeEntity(netIds: number | number[], names?: string | string[]): void
addLocalEntity(entities: number | number[], options: TargetOption | TargetOption[]): void
removeLocalEntity(entities: number | number[], names?: string | string[]): void

Opções globais por tipo

Opções em todo ped, veículo, objeto ou jogador.

Lado: Cliente · Espera: não

Signature
addGlobalPed(options: TargetOption | TargetOption[]): void
addGlobalVehicle(options: TargetOption | TargetOption[]): void
addGlobalObject(options: TargetOption | TargetOption[]): void
addGlobalPlayer(options: TargetOption | TargetOption[]): void
removeGlobalPed(names?: string | string[]): void   // e removeGlobalVehicle, removeGlobalObject, removeGlobalPlayer
Lua
exports.ox_target:addGlobalVehicle({
    { name = 'myscript_wash', label = 'Wash vehicle', icon = 'soap', distance = 2.0,
      canInteract = function(entity) return GetVehicleDirtLevel(entity) > 5.0 end,
      onSelect = function(data) TriggerServerEvent('myscript:wash', VehToNet(data.entity)) end },
})

addGlobalOption (uma opção em nada) não é oferecido. Ele registra um aviso e não faz nada. Coloque essas ações no menu radial (o radial da lib).

disableTargeting

Desliga os marcadores (true) ou os liga de novo (false) para este jogador. Lado: Cliente · Espera: não.

Signature
disableTargeting(state: boolean): void

isActive

Lado: Cliente · Espera: não.

Signature
isActive(): boolean

Retorna true enquanto pelo menos um marcador estiver perto do jogador.

HandleInteract

O export próprio do ai-target (não do ox_target). A tecla de interação do AI Core pergunta a ele primeiro: ele roda a opção em foco.

Lado: Cliente · Espera: não

Signature
HandleInteract(): boolean

Retorna true quando uma opção em foco foi usada (ou o menu dela abriu), false quando nada está em foco, então a tecla passa para os avisos. Tipado em AiTargetClientExports. Você não precisa chamá-lo.

Eventos

Nenhum para outros scripts.

Nesta página