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
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[] }): numberlocal 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.
removeZone(id: number | string): voidid é o número que add*Zone retornou, ou o name da zona.
zoneExists
Lado: Cliente · Espera: não.
zoneExists(id: number | string): booleanRetorna 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
addModel(models: string | number | Array<string | number>, options: TargetOption | TargetOption[]): void
removeModel(models: string | number | Array<string | number>, names?: string | string[]): voidexports.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
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[]): voidOpções globais por tipo
Opções em todo ped, veículo, objeto ou jogador.
Lado: Cliente · Espera: não
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, removeGlobalPlayerexports.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.
disableTargeting(state: boolean): voidisActive
Lado: Cliente · Espera: não.
isActive(): booleanRetorna 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
HandleInteract(): booleanRetorna 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.