ai-target para desarrolladores
La API de cliente de ox_target a la que responde ai-target, la forma de las opciones, lo que recibe el handler de una opción y el export HandleInteract.
Para tus propios lugares, NPC y opciones de modelo usa los puntos de interacción de AI Core: Points de la lib en TypeScript o aiLib.Points en Lua (mira la referencia de la lib). Un punto se muestra como aviso o como marcador de target, lo que haya elegido el dueño, en el script de target que esté en uso, y el mismo onPressed se ejecuta en ambos casos. Llama a la API de abajo solo cuando portes un script escrito para ox_target.
Exports
Cada export es de cliente, responde bajo exports['ai-target'] y exports.ox_target (ai-target hace provide de ox_target) y no espera. Las opciones pertenecen al recurso que las añadió y se quitan cuando se detiene.
TargetOption
La forma de opción que reciben todos los exports add*, una opción o una lista. Una opción sin label se omite.
Prop
Type
TargetResponse
Lo que reciben onSelect, export, event y serverEvent.
Prop
Type
addBoxZone
Añade una zona con forma de caja con opciones. addSphereZone y addPolyZone funcionan igual con otras formas.
Lado: Cliente · Espera: no
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
Devuelve
number: el id de la zona. 0 cuando faltan las coordenadas o no son válidas (se registra un aviso).
Ejemplo
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);
});Las zonas de un recurso se quitan cuando ese recurso se detiene, así que el handler de parada de arriba es opcional. Quita tú una zona cuando el lugar desaparece mientras tu recurso sigue en marcha.
removeZone
Quita una zona. Lado: Cliente · Espera: no.
removeZone(id: number | string): voidid es el número que devolvió add*Zone, o el name de la zona.
zoneExists
Lado: Cliente · Espera: no
zoneExists(id: number | string): booleanDevuelve true mientras existe la zona con ese número o nombre.
addModel
Pone opciones en cada entidad de estos modelos (puertas de un modelo, cajeros, contenedores).
Lado: Cliente · Espera: no
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
Devuelve
Nada.
addEntity and addLocalEntity
addEntity pone opciones en entidades en red por network id (vehículos o peds que creó el servidor). addLocalEntity las pone en entidades por handle (un ped o prop que creó tu cliente). Cada uno tiene un gemelo remove* que recibe los mismos ids y nombres de opción opcionales.
Lado: Cliente · Espera: no
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[]): voidOpciones globales por tipo
Opciones en cada ped, vehículo, objeto o jugador.
Lado: Cliente · Espera: no
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 // y 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 (una opción sobre nada) no se ofrece. Registra un aviso y no hace nada. Pon esas acciones en el menú radial (radial de la lib).
disableTargeting
Desactiva los marcadores (true) o los vuelve a activar (false) para este jugador. Lado: Cliente · Espera: no.
disableTargeting(state: boolean): voidisActive
Lado: Cliente · Espera: no
isActive(): booleanDevuelve true mientras haya al menos un marcador cerca del jugador.
HandleInteract
El export propio de ai-target (no de ox_target). La tecla de interacción de AI Core le pregunta primero: ejecuta la opción enfocada.
Lado: Cliente · Espera: no
HandleInteract(): booleanDevuelve true cuando se usó una opción enfocada (o se abrió su menú), false cuando no hay nada enfocado, así que la tecla pasa a los avisos. Tipado en AiTargetClientExports. No necesitas llamarlo.
Eventos
Ninguno para otros scripts.