AI Core
API başvurusuLib: server

State bag’ler

EntityState, PlayerState, GlobalKey ve GlobalGroup’un server sürümleri: bir ai-* script’inin replike edilen state yazmasının tek yolu.

TypeScript
import { EntityState, PlayerState, GlobalKey, GlobalGroup, stateNumber, stateBoolean } from "@aicore-fivem/lib/server";

State bag, FiveM’in server’dan client’lara kopyaladığı bir değerdir: bir entity üzerinde (bir aracın yakıtı), bir oyuncu üzerinde (dead) ya da global (herkesin gördüğü bir kapının durumu). ai-core katı state bag modunda çalışır; bu yüzden yalnızca server yazar: değişiklik isteyen bir client bunu bir callback ile ister ve değeri server ayarlar.

Server girişi client ile aynı dört sınıfı, artı bir set metodunu export eder. Constructor, get, onChange, EntityState.getByNetId ve GlobalGroup.ids, Lib: shared ve fivem sayfasında bir kez belgelenir. Her örneği modül seviyesinde, anahtar başına bir tane olacak şekilde bir kez oluştur.

set ettiğin bir değer server’da get ile hemen okunabilir ve onChange dinleyicileri bir kez çalışır. undefined ayarlamak değeri kaldırır.

Lua karşılıkları yok: Lua Entity(entity).state.key’i kendisi okur ve Entity(entity).state:set(key, value, true) ile yazar.

EntityState.set

Bir entity’nin state bag’ine tek bir anahtar yazar. Entity’yi menzilinde (scope) bulunduran oyunculara replike edilir.

Taraf: Server · Bekler: hayır

Signature
new EntityState<T>(key: string, parse: StateParse<T>)
set(entity: number, value: T | undefined): void

Prop

Type

Dönüş değeri void.

import { EntityState, stateNumber } from "@aicore-fivem/lib/server";

const odometer = new EntityState("my:km", stateNumber);

odometer.set(vehicle, (odometer.get(vehicle) ?? 0) + 1);

PlayerState.set

Bir oyuncunun state bag’ine tek bir anahtar yazar. O oyuncuya ve yakınındaki oyunculara replike edilir.

Taraf: Server · Bekler: hayır

Signature
new PlayerState<T>(key: string, parse: StateParse<T>)
set(source: number, value: T | undefined): void

Prop

Type

Dönüş değeri void.

import { PlayerState, stateBoolean } from "@aicore-fivem/lib/server";

const cuffed = new PlayerState("my:cuffed", stateBoolean);

cuffed.set(target, true);
// daha sonra
cuffed.set(target, undefined);

GlobalKey.set

Tek bir GlobalState anahtarı yazar. Her oyuncuya replike edilir: yalnızca her oyuncunun ihtiyaç duyduğu state için kullan.

Taraf: Server · Bekler: hayır

Signature
new GlobalKey<T>(key: string, parse: StateParse<T>)
set(value: T | undefined): void

Prop

Type

Dönüş değeri void.

import { GlobalKey, stateBoolean } from "@aicore-fivem/lib/server";

const stormActive = new GlobalKey("my:storm", stateBoolean);

stormActive.set(true);

GlobalGroup.set

Aynı ön eki paylaşan bir GlobalState anahtar grubunun (door:<id>, rob:<id>) tek bir anahtarını yazar. <prefix><id>’yi her oyuncuya replike eder.

Taraf: Server · Bekler: hayır

Signature
new GlobalGroup<T>(prefix: string, parse: StateParse<T>)
set(id: string, value: T | undefined): void

Prop

Type

Dönüş değeri void.

import { GlobalGroup, stateBoolean } from "@aicore-fivem/lib/server";

const robbedStores = new GlobalGroup("my-rob:", stateBoolean);

robbedStores.set("store_12", true); // GlobalState["my-rob:store_12"] = true

State bag’ler, birçok oyuncunun okuduğu küçük değerler içindir. Listeler, tek bir oyuncuya özel veriler ya da sık değişen her şey event’ler üzerinden snapshot + delta olarak gider (bkz. AreaStream ve Oyuncular sayfasındaki KeyWatchers). Paylaşılan anahtar adları @aicore-fivem/shared (VEHICLE_BAGS, PLAYER_BAGS) ya da resource’unun common/ klasöründe durur.

Bu sayfada