Dünya
Hangi hava script’i çalışıyorsa onun üzerinden saat ve hava, ai-core’un dağıtıcısından routing bucket’lar, kapı kilitleri ve kayıtlı karakterlerin doğma noktaları.
import { world, buckets, doors, characters } from "@aicore-fivem/lib/server";world
Hangi hava script’i çalışıyorsa (Renewed-Weathersync, av_weather, cd_easytime, qb-weathersync) ai-core üzerinden saat ve hava. Hiçbiri çalışmıyorken okumalar null, değişiklikler false cevabını verir.
world.getWeather
Taraf: Server · Bekler: hayır
world.getWeather(): string | nulllocal weather = aiLib.world.getWeather()Dönüş değeri: hava script’inin bildirdiği haliyle güncel hava tipi (CLEAR, RAIN...) ya da hiçbiri çalışmıyorken null.
const raining = ["RAIN", "THUNDER"].includes(world.getWeather() ?? "");world.setWeather
Havayı ayarlar.
Taraf: Server · Bekler: hayır
world.setWeather(type: Weather): booleanlocal ok = aiLib.world.setWeather(weather)Prop
Type
Dönüş değeri: ayarlandıysa true; hiçbir hava script’i çalışmıyorken ya da değer bir string değilse false.
import { addCommand, world } from "@aicore-fivem/lib/server";
import { isWeather } from "@aicore-fivem/shared";
addCommand("weather", { restricted: true, params: [{ name: "type", type: "string" }] }, (_source, { type }) => {
const upper = type.toUpperCase();
if (isWeather(upper)) world.setWeather(upper);
});world.getTime
Taraf: Server · Bekler: hayır
world.getTime(): { hour: number; minute: number } | nulllocal time = aiLib.world.getTime() -- { hour, minute } ya da nilDönüş değeri: oyun içi saat ya da hiçbir hava script’i çalışmıyorken null.
const time = world.getTime();
const night = time !== null && (time.hour >= 22 || time.hour < 6);world.setTime
Oyun içi saati ayarlar.
Taraf: Server · Bekler: hayır
world.setTime(hour: number, minute?: number): booleanlocal ok = aiLib.world.setTime(hour, minute)Prop
Type
Dönüş değeri: ayarlandıysa true, hiçbir hava script’i çalışmıyorken false.
world.setTime(12, 30);world.setBlackout
Şehir genelindeki elektrik kesintisini açar ya da kapatır.
Taraf: Server · Bekler: hayır
world.setBlackout(on: boolean): booleanlocal ok = aiLib.world.setBlackout(on)Dönüş değeri: uygulandıysa true; hiçbir hava script’i çalışmıyorken ya da script’in kesinti özelliği yoksa false.
world.setBlackout(true); // elektrik santrali sabote edildiworld.freezeTime
Oyun içi saati durdurur ya da yeniden başlatır.
Taraf: Server · Bekler: hayır
world.freezeTime(on: boolean): booleanlocal ok = aiLib.world.freezeTime(on)Dönüş değeri: uygulandıysa true; hiçbir hava script’i çalışmıyorken ya da script saati donduramıyorsa false.
world.setTime(20, 0);
world.freezeTime(true);buckets
ai-core’un dağıtıcısından routing bucket’lar (ayrı dünyalar: bir daire içi, bir instance); böylece iki script asla aynı bucket’ı paylaşmaz. Bucket numaralarını asla kendin seçme (1000 + n). Lua karşılığı yok: ai-core’un AcquireBucket(tag) / ReleaseBucket(id) export’larını çağır.
buckets.acquire
Bu resource için boş bir bucket alır. Bucket’ta nüfus yoktur (çevredeki ped’ler ve arabalar yok) ve katı entity kilidi (lockdown) vardır.
Taraf: Server · Bekler: hayır
buckets.acquire(tag: string): numberProp
Type
Dönüş değeri: bucket id’si.
import { buckets } from "@aicore-fivem/lib/server";
const bucket = buckets.acquire(`property:${propertyId}`);
SetPlayerRoutingBucket(String(source), bucket);buckets.release
İçindeki oyuncular çıktıktan sonra bir bucket’ı geri verir.
Taraf: Server · Bekler: hayır
buckets.release(id: number): booleanDönüş değeri: serbest bırakıldıysa true. Duran bir resource’un her bucket’ı kendiliğinden geri döner.
SetPlayerRoutingBucket(String(source), 0);
buckets.release(bucket);doors
Kapı kilidi script’inin kendi kapı id’siyle, ai-core’un kapı kilidi katmanı üzerinden kapı kilitleri. Lua karşılığı yok: ai-core’un SetDoorLocked, IsDoorLocked export’larını çağır.
doors.setLocked
Bir kapıyı kilitler ya da kilidini açar.
Taraf: Server · Bekler: hayır
doors.setLocked(id: string, locked: boolean, by?: number): booleanProp
Type
Dönüş değeri: bir kapı script’i isteği aldıysa true, değilse false.
if (outcome === "won") doors.setLocked("bank_vault", false, source);doors.isLocked
Taraf: Server · Bekler: hayır
doors.isLocked(id: string): boolean | nullDönüş değeri: true ya da false, bilinmiyorsa null (kapı kilidi yok, böyle bir kapı yok ya da script server’da bunu söyleyemiyor).
if (doors.isLocked("bank_vault") === false) return fail("ALREADY_OPEN");doors.provider
Taraf: Server · Bekler: hayır
doors.provider(): string | nullDönüş değeri: cevap veren kapı kilidi script’i ya da hiçbiri çalışmıyorsa null.
console.log(`doors through ${doors.provider() ?? "nothing"}`);characters
ai-core üzerinden kayıtlı karakterler. Yüklü karakterler online ve ai-core’un oyuncu export’ları üzerinden gider.
characters.setOfflinePosition
Kayıtlı (yüklü olmayan) bir karakterin doğma noktasını taşır; örneğin başka yere taşınmış uyuyan bir beden. ai-core bunu, karakteri tutan bir yükleme ya da çıkış kaydı kalmadığında yazar.
Taraf: Server · Bekler: hayır
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): booleanLua karşılığı yok: ai-core’un SetOfflinePosition(charId, position) export’unu çağır.
Prop
Type
Dönüş değeri: kabul edildiyse true. Karakter yüklüyse ya da değerler yanlışsa false.
characters.setOfflinePosition(sleeperCharId, { x: 340.2, y: -1396.7, z: 32.5, heading: 50 });Meslekler ve hizmetler
Polis ihbarları, hapis, MDT kayıtları, sağlıkçılar, canlandırma ve iyileştirme, stres, açlık ve susuzluk, meslek ve çete tanımları, prime time.
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.