Bölgeler
Zones - giriş ve çıkış callback’leri olan alanlar (küre, silindir, çokgen); asla her karede değil, kendi aralıklarında kontrol edilir.
Bölge (zone), oyuncu içine girdiğinde ya da çıktığında kod çalıştıran bir alandır: bir semte girmek, bir hız sınırı alanı, yalnızca yakındayken çizilen bir marker. Oyuncunun o yerde bir şey yapması gerekiyorsa (bir tuşa basmak, bir target seçeneği seçmek) bunun yerine bir nokta kullan: prompt’u, target’ı, ped’i ve blip’i zaten bağlanmış bir bölgedir.
TypeScript’te her bölge, tüm resource’lar için ai-lib’in tek denetleyicisi tarafından kontrol edilir (bölgeler 64 m’lik bir ızgarada durur; bu yüzden bir milyon bölge birkaç bölgeyle aynı maliyettedir). Resource’un kendi bölgelerini yalnızca ai-lib çalışmıyorken kendisi kontrol eder. Lua’da her resource bölgeleri için tek bir zamanlayıcı görevi çalıştırır.
new Zones
Bir bölge grubu oluşturur. Dosyanın en üstünde, özellik başına bir grup oluştur.
Taraf: Client · Bekler: hayır
new Zones()local zones = aiLib.Zones.new()Dönüş değeri
Aşağıdaki metotlara sahip bir Zones grubu.
Örnek
import { Zones } from "@aicore-fivem/lib/client";
const zones = new Zones();zones.add
Bir bölge ekler ya da aynı id’ye sahip bölgenin yerine geçer. Yerine geçilen bölgenin içinde oyuncu varsa önce onun onExit’i çalışır.
Taraf: Client · Bekler: hayır
zones.add(id: string, options: ZoneOptions): voidzones:add(id, options)Parametreler
Prop
Type
ZoneOptions
Prop
Type
ZoneShape
ZoneShape, type’a göre seçilen üç nesneden biridir:
Prop
Type
Lua’da center bir vector3, noktalar da { x = ..., y = ... } tabloları olabilir.
Dönüş değeri
void.
Örnek
import { createLocale, notify, Zones } from "@aicore-fivem/lib/client";
const Locale = createLocale<typeof import("../../locales/en.json")>();
const zones = new Zones();
zones.add("safezone", {
shape: { type: "cylinder", center: { x: 298.6, y: -584.5, z: 43.3 }, radius: 60, height: 30 },
onEnter: () => notify(Locale("SAFEZONE_IN"), "info"),
onExit: () => notify(Locale("SAFEZONE_OUT"), "info"),
});
zones.add("yard", {
shape: {
type: "poly",
points: [
{ x: 1700.1, y: 2560.4 },
{ x: 1780.6, y: 2560.4 },
{ x: 1780.6, y: 2620.2 },
{ x: 1700.1, y: 2620.2 },
],
minZ: 40,
maxZ: 60,
},
interval: 1000,
onEnter: () => SetPedMoveRateOverride(PlayerPedId(), 0.8),
});Admin panelinde zone widget’ıyla çizilen bir bölge köşeler verir; onları @aicore-fivem/lib/shared’daki polyFromCorners(corners, height) ile bir çokgene çevir. Server aynı şekilleri zoneContains(shape, x, y, z) ile test edebilir.
zones.remove
Tek bir bölgeyi kaldırır. Oyuncu içerideyse onExit çalışır. Bilinmeyen bir id hiçbir şey yapmaz.
Taraf: Client · Bekler: hayır
zones.remove(id: string): voidzones:remove(id)Parametreler
Prop
Type
Dönüş değeri
void.
Örnek
zones.remove("safezone");zones.clear
Grubun tüm bölgelerini kaldırır; oyuncunun içinde olduğu bölgeler için onExit çalışır.
Taraf: Client · Bekler: hayır
zones.clear(): voidzones:clear()Dönüş değeri
void.
Örnek
onServerEvent("myscript:eventOver", () => zones.clear());zones.isInside
Son kontrole göre oyuncunun bir bölgenin içinde olup olmadığı.
Taraf: Client · Bekler: hayır
zones.isInside(id: string): booleanlocal inside = zones:isInside(id)Parametreler
Prop
Type
Dönüş değeri
boolean: içerideyken true; dışarıdayken ya da bilinmeyen bir id için false. Son kontrolü yansıtır; bu yüzden en fazla interval ms eski olabilir.
Örnek
if (zones.isInside("safezone")) return notify(Locale("NO_WEAPONS_HERE"), "error");zones.size
Grubun kaç bölge tuttuğu.
Taraf: Client · Bekler: hayır
zones.size: number // salt okunur özellikLua karşılığı yok.
Dönüş değeri
number: bu gruptaki bölge sayısı.
Örnek
console.log(`${zones.size} zones loaded`);Etkileşim noktaları
Points - oyuncunun kullandığı her yer (tezgahlar, marketler, kapılar, NPC’ler, ATM’ler, araç bagajları), bir prompt ya da target seçeneği olarak; ped’ler, blip’ler ve panel kayıtlarından kurulan noktalarla.
Ped’ler, blip’ler ve prop’lar
LocalPed, Blips, createBlip, attachProp, PreviewVehicle ve player.holdAnim - yerel NPC’ler, harita blip’leri, elde tutulan prop’lar, galeri araçları ve sürdürülen animasyonlar.