AI Core
Temelai-weathersync

Geliştiriciler için ai-weathersync

ai-weathersync’in server export’ları (qb-weathersync sözleşmesi) ve yayımladığı GlobalState anahtarları.

Kendi script’lerin ai-weathersync’i doğrudan çağırmamalı. Bunun yerine AI Core’un saat ve hava katmanını kullan: TypeScript’te lib world (world.setWeather, world.setTime...) veya Lua’da aiLib.world, lib başvurusunda belgelenmiştir. Bu katman sunucuda hangi hava script’i çalışıyorsa onunla çalışır, böylece sunucu sahibi script’ini bozmadan ai-weathersync’in yerine başkasını koyabilir. Aşağıdaki export’lar qb-weathersync için yazılmış script’ler ve özel durumlar içindir.

Export’lar

Her export server tarafındadır ve iki ad altında cevap verir: exports['ai-weathersync'] ve exports['qb-weathersync'] (ai-weathersync qb-weathersync’i provide eder). Hiçbiri beklemez. @aicore-fivem/shared içinde tiplenmemişlerdir; TypeScript’ten lib callExport("ai-weathersync", name, ...args) ile çağır.

setBlackout, setTimeFreeze ve setDynamicWeather ile yapılan değişiklikler, sunucu sahibi o panel ayarını değiştirene veya resource yeniden başlayana kadar sürer.

setWeather

Dünyanın havasını hemen değiştirir. Hava bölgelerine dokunmaz.

Taraf: Server · Bekler: hayır

Signature
setWeather(type: string): boolean
Lua
local ok = exports['ai-weathersync']:setWeather('RAIN')

Parametreler

Prop

Type

Dönüş değeri

boolean: hava değiştiyse true. type bilinen bir hava adı değilse false.

Örnek

import { callExport } from "@aicore-fivem/lib/server";

// Bir etkinlik için fırtına; panelin hava döngüsü buradan devam eder.
const ok = callExport("ai-weathersync", "setWeather", "THUNDER") === true;
if (!ok) console.log("unknown weather");

Changing weather açıkken bir sonraki değişim yine panelin zamanlayıcısıyla, yeni havanın listedeki konumundan (yeni hava listede yoksa ilk girdiden) gelir.

setTime

Dünya saatini ayarlar. Saat yeni zamandan itibaren panelin hızında işlemeye devam eder.

Taraf: Server · Bekler: hayır

Signature
setTime(hour: number, minute?: number): boolean
Lua
local ok = exports['ai-weathersync']:setTime(22, 30)

Parametreler

Prop

Type

Dönüş değeri

boolean: saat ayarlandıysa true. hour sayı değilse false.

Örnek

import { callExport } from "@aicore-fivem/lib/server";

callExport("ai-weathersync", "setTime", 22, 30);

setBlackout

Elektrik kesintisini açar veya kapatır: şehir ışıkları söner, araç ışıkları kalır.

Taraf: Server · Bekler: hayır

Signature
setBlackout(on: boolean): boolean
Lua
exports['ai-weathersync']:setBlackout(true)

Parametreler

Prop

Type

Dönüş değeri

boolean: her zaman true.

setTimeFreeze

Saati mevcut zamanda durdurur veya başlatır.

Taraf: Server · Bekler: hayır

Signature
setTimeFreeze(on: boolean): boolean
Lua
exports['ai-weathersync']:setTimeFreeze(true)

Parametreler

Prop

Type

Dönüş değeri

boolean: her zaman true.

setDynamicWeather

Otomatik hava değişimlerini açar veya kapatır.

Taraf: Server · Bekler: hayır

Signature
setDynamicWeather(on: boolean): boolean
Lua
exports['ai-weathersync']:setDynamicWeather(false)

Parametreler

Prop

Type

Dönüş değeri

boolean: her zaman true.

nextWeatherStage

Dünyanın havasını hemen panel listesinin bir sonraki girdisine geçirir (sonuncudan sonra ilkine döner).

Taraf: Server · Bekler: hayır

Signature
nextWeatherStage(): boolean
Lua
exports['ai-weathersync']:nextWeatherStage()

Dönüş değeri

boolean: her zaman true.

Getter’lar

Her biri mevcut durumu okur ve beklemez.

ExportDönüş
getWeatherState(): stringDünyanın mevcut hava adı, örneğin "CLEAR". Bölgeler dahil değildir.
getTime(): { hour: number, minute: number }Mevcut oyun saati. Lua’da hour ve minute içeren bir tablo.
getBlackoutState(): booleanElektrik kesintisinin açık olup olmadığı (export’un değeri, yoksa panelinki).
getTimeFreezeState(): booleanSaatin durdurulmuş olup olmadığı.
getDynamicWeather(): booleanHavanın kendiliğinden değişip değişmediği.
import { callExport } from "@aicore-fivem/lib/server";

const time = callExport("ai-weathersync", "getTime") as { hour: number; minute: number };
const weather = callExport("ai-weathersync", "getWeatherState") as string;
console.log(`It is ${time.hour}:${String(time.minute).padStart(2, "0")}, weather ${weather}`);

getTime bir tablo ({ hour, minute }) döner, orijinal qb-weathersync ise iki değer (hour, minute) döner. qb-weathersync için yazılmış ve local h, m = exports['qb-weathersync']:getTime() yapan bir Lua script’i tabloyu h içinde alır. AI Core’un kendi GetTime export’u ve lib world.getTime() iki yapıyı da okur ve her zaman { hour, minute } döner.

GlobalState anahtarları

ai-weathersync durumunu GlobalState olarak yayımlar; server bunları sadece bir şey değiştiğinde yazar. Onları oku; asla yazma.

AnahtarDeğerNe zaman değişir
ai:clock{ base: number, at: number, scale: number, frozen: boolean }: server zamanı at (ms, Date.now()) anındaki günün oyun dakikası (base, 0-1439); gerçek dakika başına scale oyun dakikası ilerler, frozen iken durur.Panel değişikliği, setTime, setTimeFreeze.
ai:weather{ type: string, blackout: boolean }: dünyanın havası ve elektrik kesintisi.Her hava değişimi ve setBlackout.
ai:rweather:<regionId>string: bir bölgenin mevcut havası. Bölge silindiğinde kaldırılır.Bölgenin kendi zamanlayıcısıyla.

Saat her dakika gönderilmez: her client onu ai:clock değerinden ve kendi saatinden (fark server’dan bir kez alınır) hesaplar.

Event’ler

ai-weathersync’in diğer script’ler için event’i yoktur. Bir client’ta senkronu duraklatmak için (bir iç mekân, bir ara sahne) AI Core’un PauseWorldSync / ResumeWorldSync client export’larını veya lib world.pauseSync(reason) / resumeSync(reason) kullan (bkz. ai-core client export’ları). ai-weathersync sadece AI Core’un duraklatmasını dinler.

Bu sayfada