AI Core
Podstawyai-weathersync

ai-weathersync dla deweloperów

Eksporty serwera ai-weathersync (kontrakt qb-weathersync) i klucze GlobalState, które publikuje.

Twoje własne skrypty nie powinny wywoływać ai-weathersync bezpośrednio. Zamiast tego używaj warstwy czasu i pogody AI Core: world z biblioteki w TypeScript (world.setWeather, world.setTime...) lub aiLib.world w Lua, opisanej w dokumentacji biblioteki. Ta warstwa działa z każdym skryptem pogody, którego używa serwer, więc właściciel może zastąpić ai-weathersync bez psucia twojego skryptu. Poniższe eksporty są dla skryptów napisanych dla qb-weathersync i do szczególnych przypadków.

Eksporty

Każdy eksport działa po stronie serwera i odpowiada pod dwiema nazwami: exports['ai-weathersync'] i exports['qb-weathersync'] (ai-weathersync robi provide dla qb-weathersync). Żaden z nich nie czeka. Nie są typowane w @aicore-fivem/shared; z TypeScript wywołuj je przez callExport("ai-weathersync", name, ...args) z biblioteki.

Zmiany wprowadzone przez setBlackout, setTimeFreeze i setDynamicWeather trwają, dopóki właściciel nie zmieni tego ustawienia w panelu lub zasób się nie zrestartuje.

setWeather

Od razu zmienia pogodę w świecie. Nie dotyka regionów pogodowych.

Strona: serwer · Czeka: nie

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

Parametry

Prop

Type

Zwraca

boolean: true, gdy pogoda się zmieniła. false, gdy type nie jest znaną nazwą pogody.

Przykład

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

// Burza na wydarzenie; cykl pogody z panelu toczy się dalej od tego miejsca.
const ok = callExport("ai-weathersync", "setWeather", "THUNDER") === true;
if (!ok) console.log("unknown weather");

Przy włączonym Changing weather następna zmiana i tak przychodzi według timera z panelu, od pozycji nowej pogody na liście (albo od pierwszego wpisu, gdy nowej pogody nie ma na liście).

setTime

Ustawia zegar świata. Zegar biegnie dalej z prędkością z panelu od nowej godziny.

Strona: serwer · Czeka: nie

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

Parametry

Prop

Type

Zwraca

boolean: true, gdy zegar został ustawiony. false, gdy hour nie jest liczbą.

Przykład

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

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

setBlackout

Włącza lub wyłącza blackout: światła miasta gasną, światła pojazdów zostają.

Strona: serwer · Czeka: nie

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

Parametry

Prop

Type

Zwraca

boolean: zawsze true.

setTimeFreeze

Zatrzymuje lub uruchamia zegar na bieżącej godzinie.

Strona: serwer · Czeka: nie

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

Parametry

Prop

Type

Zwraca

boolean: zawsze true.

setDynamicWeather

Włącza lub wyłącza automatyczne zmiany pogody.

Strona: serwer · Czeka: nie

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

Parametry

Prop

Type

Zwraca

boolean: zawsze true.

nextWeatherStage

Od razu przestawia pogodę w świecie na następny wpis z listy w panelu (po ostatnim wraca do pierwszego).

Strona: serwer · Czeka: nie

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

Zwraca

boolean: zawsze true.

Gettery

Każdy odczytuje bieżący stan i nie czeka.

EksportZwraca
getWeatherState(): stringNazwa bieżącej pogody w świecie, na przykład "CLEAR". Regiony nie są uwzględniane.
getTime(): { hour: number, minute: number }Bieżący czas gry. W Lua tabela z hour i minute.
getBlackoutState(): booleanCzy blackout jest włączony (wartość z eksportu, w przeciwnym razie z panelu).
getTimeFreezeState(): booleanCzy zegar jest zatrzymany.
getDynamicWeather(): booleanCzy pogoda zmienia się sama.
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 odpowiada tabelą ({ hour, minute }), a oryginalny qb-weathersync odpowiada dwiema wartościami (hour, minute). Skrypt Lua napisany dla qb-weathersync, który robi local h, m = exports['qb-weathersync']:getTime(), dostaje tabelę w h. Własny eksport GetTime AI Core i world.getTime() z biblioteki czytają oba kształty i zawsze odpowiadają { hour, minute }.

Klucze GlobalState

ai-weathersync publikuje swój stan jako GlobalState, zapisywany przez serwer tylko wtedy, gdy coś się zmienia. Czytaj je; nigdy ich nie zapisuj.

KluczWartośćKiedy się zmienia
ai:clock{ base: number, at: number, scale: number, frozen: boolean }: minuta gry w ciągu dnia (base, 0-1439) w czasie serwera at (ms, Date.now()), przesuwająca się o scale minut gry na prawdziwą minutę albo stojąca w miejscu, gdy frozen.Zmiana w panelu, setTime, setTimeFreeze.
ai:weather{ type: string, blackout: boolean }: pogoda i blackout w świecie.Każda zmiana pogody i setBlackout.
ai:rweather:<regionId>string: bieżąca pogoda jednego regionu. Usuwany, gdy region zostanie usunięty.Według własnego timera regionu.

Czas nie jest wysyłany co minutę: każdy klient wylicza go z ai:clock i własnego zegara (przesunięcie pobierane raz z serwera).

Zdarzenia

ai-weathersync nie ma zdarzeń dla innych skryptów. Aby wstrzymać synchronizację na kliencie (wnętrze, przerywnik), używaj eksportów klienta AI Core PauseWorldSync / ResumeWorldSync lub world.pauseSync(reason) / resumeSync(reason) z biblioteki (zobacz eksporty klienta ai-core). ai-weathersync nasłuchuje tylko wstrzymania z AI Core.

Na tej stronie