AI Core
API başvurusuLib: client

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

Signature
new Zones()
Lua
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

Signature
zones.add(id: string, options: ZoneOptions): void
Lua
zones: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

Signature
zones.remove(id: string): void
Lua
zones: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

Signature
zones.clear(): void
Lua
zones: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

Signature
zones.isInside(id: string): boolean
Lua
local 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

Signature
zones.size: number // salt okunur özellik

Lua karşılığı yok.

Dönüş değeri

number: bu gruptaki bölge sayısı.

Örnek

console.log(`${zones.size} zones loaded`);

Bu sayfada