AI Core
Temelai-target

Geliştiriciler için ai-target

ai-target’ın cevapladığı ox_target client API’si, seçenek yapısı, bir seçeneğin handler’ının ne aldığı ve HandleInteract export’u.

Kendi yerlerin, NPC’lerin ve model seçeneklerin için AI Core’un etkileşim noktalarını kullan: TypeScript’te lib Points, Lua’da aiLib.Points (bkz. lib başvurusu). Bir nokta, sunucu sahibi hangisini seçtiyse istem ya da target işareti olarak, hangi target script’i çalışıyorsa onda görünür ve her iki durumda da aynı onPressed çalışır. Aşağıdaki API’yi sadece ox_target için yazılmış bir script’i taşırken çağır.

Export’lar

Her export client tarafındadır, hem exports['ai-target'] hem exports.ox_target altında cevap verir (ai-target ox_target’ı provide eder) ve beklemez. Seçenekler onları ekleyen resource’a aittir ve o resource durduğunda kaldırılır.

TargetOption

Her add* export’unun aldığı seçenek yapısı, tek seçenek veya bir liste. label olmayan bir seçenek dışarıda bırakılır.

Prop

Type

TargetResponse

onSelect, export, event ve serverEvent’in aldığı değer.

Prop

Type

addBoxZone

Seçenekli, kutu şeklinde bir bölge ekler. addSphereZone ve addPolyZone başka şekillerle aynı şekilde çalışır.

Taraf: Client · Bekler: hayır

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 = { ... } })

Parametreler

Prop

Type

Dönüş değeri

number: bölge id’si. Koordinatlar eksik veya geçersizse 0 (bir uyarı loglanır).

Örnek

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);
});

Bir resource’un bölgeleri o resource durduğunda kaldırılır, bu yüzden yukarıdaki durdurma handler’ı isteğe bağlıdır. Resource’un çalışmaya devam ederken yer ortadan kalkıyorsa bölgeyi kendin kaldır.

removeZone

Bir bölgeyi kaldırır. Taraf: Client · Bekler: hayır.

Signature
removeZone(id: number | string): void

id, add*Zone’un döndüğü numara veya bölgenin name değeridir.

zoneExists

Taraf: Client · Bekler: hayır.

Signature
zoneExists(id: number | string): boolean

O numara veya ada sahip bölge var olduğu sürece true döner.

addModel

Bu modellerin her entity’sine seçenek koyar (bir modelin kapıları, ATM’ler, çöp konteynerleri).

Taraf: Client · Bekler: hayır

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 } })

Parametreler

Prop

Type

Dönüş değeri

Hiçbir şey.

addEntity and addLocalEntity

addEntity, ağa bağlı entity’lere network id ile seçenek koyar (server’ın oluşturduğu araçlar veya ped’ler). addLocalEntity onları handle ile entity’lere koyar (client’ının oluşturduğu bir ped veya prop). Her birinin aynı id’leri ve isteğe bağlı seçenek adlarını alan bir remove* ikizi vardır.

Taraf: Client · Bekler: hayır

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

Türe göre global seçenekler

Her ped, araç, obje veya oyuncu üzerindeki seçenekler.

Taraf: Client · Bekler: hayır

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   // ve 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 (hiçbir şeye bağlı olmayan bir seçenek) sunulmaz. Bir uyarı loglar ve hiçbir şey yapmaz. Bu tür eylemleri bunun yerine radyal menüye koy (lib radial).

disableTargeting

Bu oyuncu için işaretleri kapatır (true) veya tekrar açar (false). Taraf: Client · Bekler: hayır.

Signature
disableTargeting(state: boolean): void

isActive

Taraf: Client · Bekler: hayır.

Signature
isActive(): boolean

Oyuncunun yakınında en az bir işaret olduğu sürece true döner.

HandleInteract

ai-target’ın kendi export’u (ox_target’ın değil). AI Core’un etkileşim tuşu önce ona sorar: odaktaki seçeneği çalıştırır.

Taraf: Client · Bekler: hayır

Signature
HandleInteract(): boolean

Odaktaki bir seçenek kullanıldıysa (veya menüsü açıldıysa) true, odakta hiçbir şey yoksa false döner; bu durumda tuş istemlere geçer. AiTargetClientExports içinde tiplenmiştir. Onu çağırman gerekmez.

Event’ler

Diğer script’ler için yok.

Bu sayfada