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
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 = { ... } })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.
removeZone(id: number | string): voidid, add*Zone’un döndüğü numara veya bölgenin name değeridir.
zoneExists
Taraf: Client · Bekler: hayır.
zoneExists(id: number | string): booleanO 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
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 } })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
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[]): voidTüre göre global seçenekler
Her ped, araç, obje veya oyuncu üzerindeki seçenekler.
Taraf: Client · Bekler: hayır
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, 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 (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.
disableTargeting(state: boolean): voidisActive
Taraf: Client · Bekler: hayır.
isActive(): booleanOyuncunun 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
HandleInteract(): booleanOdaktaki 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.
ai-target
Hedef gözü (target). Oyuncunun etkileşime girebileceği şeylerin üzerinde işaretler; etkileşim tuşu birini seçer. ox_target API’sini cevaplar.
ai-scoreboard
Kaç oyuncunun çevrim içi olduğunu, kaç polis, sağlıkçı ve diğerlerinin mesaide olduğunu ve kimlerin oynadığını görmek için Home tuşunu basılı tut.