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.
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
new EntityState<T>(key: string, parse: StateParse<T>)
set(entity: number, value: T | undefined): voidProp
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
new PlayerState<T>(key: string, parse: StateParse<T>)
set(source: number, value: T | undefined): voidProp
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
new GlobalKey<T>(key: string, parse: StateParse<T>)
set(value: T | undefined): voidProp
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
new GlobalGroup<T>(prefix: string, parse: StateParse<T>)
set(id: string, value: T | undefined): voidProp
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"] = trueState 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.
Telefon ve görünüm
ai-core üzerinden oyuncunun telefonu (numaralar, mailler, mesajlar, bildirimler) ve hangi kıyafet script’i çalışıyorsa onun üzerinden karakterlerin kayıtlı görünümleri.
Loglar
aiLog ve aiLogChannels: logları ai-core üzerinden konsola, Discord’a, Fivemanage’a ya da FiveM Stats’e gönder; sunucu sahibi panelde neyi açtıysa oraya.