AI Core
Dokumentacja APIEksporty klienckie ai-core

Synchronizacja pogody i czasu

Wstrzymaj synchronizację pogody i czasu serwera w grze jednego gracza, gdy twój skrypt ustawia własne (wnętrze, scena), wznów ją i sprawdź, czy jest wstrzymana.

Skrypt pogody (ai-weathersync albo zewnętrzny) trzyma każdego gracza na pogodzie i zegarze serwera. Gdy twój skrypt potrzebuje własnej pogody lub czasu na ekranie jednego gracza (ciemne wnętrze, kreator postaci, przerywnik), najpierw wstrzymaj synchronizację, w przeciwnym razie skrypt pogody chwilę później nadpisze twoje wartości.

Wstrzymywanie działa na powodach, jak w HUD: synchronizacja zostaje wstrzymana, dopóki ustawiony jest co najmniej jeden powód, i działa znowu, gdy ostatni zostanie wyczyszczony. Powody należą do zasobu, który je ustawił, i są usuwane, gdy się zatrzymuje. ai-core informuje skrypt pogody przez własne klienckie zdarzenie ai-core:client:worldSync oraz przez popularne zdarzenia wstrzymania, których nasłuchują zewnętrzne skrypty pogody (qb-weathersync, cd_easytime, vSync, av_weather). W drugą stronę, gdy skrypt sam wysyła jedno z tych zdarzeń, ai-core też liczy je jako powód, więc wznowienie jednego skryptu nigdy nie kończy wstrzymania innego.

PauseWorldSync

Wstrzymuje synchronizację pogody i czasu w grze tego gracza pod powodem twojego zasobu.

Strona: Klient · Czeka: nie

Sygnatura
PauseWorldSync(reason: string): void
Lua
exports['ai-core']:PauseWorldSync(reason) -- albo aiLib.world.pauseSync(reason)

Parametry

Prop

Type

Zwraca

Nic. reason, który nie jest stringiem, jest ignorowany.

Przykład

resource/client/interior.ts
import { world } from "@aicore-fivem/lib/client";

// Ciemna, bezchmurna noc we własnym wnętrzu, powrót do pogody serwera przy wyjściu.
export function enterInterior(): void {
  world.pauseSync("interior"); // to samo co resourceExport("ai-core").PauseWorldSync("interior")
  NetworkOverrideClockTime(23, 0, 0);
  SetWeatherTypeNowPersist("CLEAR");
}

export function leaveInterior(): void {
  NetworkClearClockTimeOverride();
  world.resumeSync("interior");
}

Wstrzymanie tylko zatrzymuje synchronizację. Ustawienie własnej pogody i czasu oraz ich wyczyszczenie po skończeniu to zadanie twojego skryptu.

ResumeWorldSync

Czyści jeden powód wstrzymania twojego zasobu. Synchronizacja działa znowu, a skrypt pogody przywraca pogodę i zegar serwera, gdy nie zostaje żaden powód.

Strona: Klient · Czeka: nie

Sygnatura
ResumeWorldSync(reason: string): void
Lua
exports['ai-core']:ResumeWorldSync(reason) -- albo aiLib.world.resumeSync(reason)

Parametry

Prop

Type

Zwraca

Nic.

Przykład

Zobacz przykład PauseWorldSync.

IsWorldSyncPaused

Mówi, czy synchronizacja jest teraz wstrzymana przez dowolny zasób lub zewnętrzne zdarzenie wstrzymania. Skrypt pogody, który startuje później, czyta to raz; potem śledzi klienckie zdarzenie ai-core:client:worldSync.

Strona: Klient · Czeka: nie

Sygnatura
IsWorldSyncPaused(): boolean
Lua
local paused = exports['ai-core']:IsWorldSyncPaused() -- boolean

Parametry

Brak.

Zwraca

boolean: true, dopóki ustawiony jest co najmniej jeden powód, false, gdy synchronizacja działa.

Przykład

resource/client/weather.ts
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE } from "@aicore-fivem/shared";

const core = resourceExport("ai-core");

// Własny skrypt pogody: przestań stosować pogodę serwera, dopóki synchronizacja jest wstrzymana.
let paused = core.IsWorldSyncPaused();
on(CORE.clientWorldSyncEvent, (value: boolean) => {
  paused = value;
});

export const shouldApplyWeather = (): boolean => !paused;

Na tej stronie