AI Core
Esencialesai-target

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

Firma
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

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.

Firma
removeZone(id: number | string): void

id es el número que devolvió add*Zone, o el name de la zona.

zoneExists

Lado: Cliente · Espera: no

Firma
zoneExists(id: number | string): boolean

Devuelve 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

Firma
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

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

Firma
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

Opciones globales por tipo

Opciones en cada ped, vehículo, objeto o jugador.

Lado: Cliente · Espera: no

Firma
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, 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 (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.

Firma
disableTargeting(state: boolean): void

isActive

Lado: Cliente · Espera: no

Firma
isActive(): boolean

Devuelve 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

Firma
HandleInteract(): boolean

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

En esta página