AI Core
API başvurusuLib: server

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ı.

TypeScript
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

Signature
world.getWeather(): string | null
Lua
local 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

Signature
world.setWeather(type: Weather): boolean
Lua
local 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

Signature
world.getTime(): { hour: number; minute: number } | null
Lua
local time = aiLib.world.getTime() -- { hour, minute } ya da nil

Dö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

Signature
world.setTime(hour: number, minute?: number): boolean
Lua
local 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

Signature
world.setBlackout(on: boolean): boolean
Lua
local 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 edildi

world.freezeTime

Oyun içi saati durdurur ya da yeniden başlatır.

Taraf: Server · Bekler: hayır

Signature
world.freezeTime(on: boolean): boolean
Lua
local 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

Signature
buckets.acquire(tag: string): number

Prop

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

Signature
buckets.release(id: number): boolean

Dö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

Signature
doors.setLocked(id: string, locked: boolean, by?: number): boolean

Prop

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

Signature
doors.isLocked(id: string): boolean | null

Dö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

Signature
doors.provider(): string | null

Dö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

Signature
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): boolean

Lua 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 });

Bu sayfada