Zeit und Wetter
Wetter und Spielzeit, Blackout und eingefrorene Zeit lesen und setzen, über das Wetter-Skript, das der Server nutzt.
Zeit und Wetter laufen über ai-core, nie über die eigenen Exports oder Events eines Wetter-Skripts. ai-core leitet jeden Aufruf an das erste laufende Wetter-Skript weiter: Renewed-Weathersync, av_weather, cd_easytime, dann qb-weathersync (ai-weathersync antwortet unter diesem Namen). Sie alle folgen dem Vertrag von qb-weathersync. Solange keines läuft, antwortet jeder Aufruf mit null oder false.
Um die Synchronisierung im Spiel eines einzelnen Spielers anzuhalten (ein Interior mit eigenem Licht, eine Zwischensequenz), nutze die Clientseite (PauseWorldSync, Lib world.pauseSync); siehe Client-Exports.
GetWeather
Der aktuelle Wettertyp.
Seite: Server · Wartet: nein · Lib: world.getWeather
GetWeather(): string | nulllocal weather = exports['ai-core']:GetWeather() -- 'EXTRASUNNY', 'RAIN'... oder nilParameter
Keine.
Rückgabe
string | null: der Wettertyp in Großbuchstaben (EXTRASUNNY, CLEAR, RAIN, THUNDER...). null, wenn kein Wetter-Skript läuft.
Beispiel
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
/** Straßenrennen bringen im Regen mehr. */
export function raceBonus(): number {
const weather = core.GetWeather();
return weather === "RAIN" || weather === "THUNDER" ? 1.25 : 1;
}SetWeather
Setzt das Wetter für alle.
Seite: Server · Wartet: nein · Lib: world.setWeather (nimmt die typisierten Weather-Namen)
SetWeather(type: string): booleanlocal ok = exports['ai-core']:SetWeather('RAIN')Parameter
Prop
Type
Rückgabe
boolean: true, wenn das Wetter-Skript es angenommen hat. false, wenn type kein Text ist, das Skript es abgelehnt hat (ein unbekannter Typ) oder kein Wetter-Skript läuft.
Beispiel
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
import { isWeather } from "@aicore-fivem/shared";
const core = resourceExport("ai-core");
addCommand("weather", { help: "Sets the weather", params: [{ name: "type", type: "string" }], restricted: true }, (_source, args) => {
const type = args.type.toUpperCase();
if (!isWeather(type)) return console.log("unknown weather type");
core.SetWeather(type);
});GetTime
Die Spielzeit (die Uhr im Spiel).
Seite: Server · Wartet: nein · Lib: world.getTime
GetTime(): { hour: number; minute: number } | nulllocal time = exports['ai-core']:GetTime() -- { hour, minute } oder nilParameter
Keine.
Rückgabe
{ hour, minute } | null: Stunde 0-23 und Minute 0-59. null, wenn kein Wetter-Skript läuft.
Beispiel
import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
// Der Drogendealer verkauft nur nachts (22:00 - 05:59 Spielzeit).
onClientCallback("myscript:dealer", (source) => {
const time = core.GetTime();
const night = time !== null && (time.hour >= 22 || time.hour < 6);
return night ? { ok: true } : fail("COME_BACK_AT_NIGHT");
});SetTime
Setzt die Spielzeit für alle.
Seite: Server · Wartet: nein · Lib: world.setTime
SetTime(hour: number, minute?: number): booleanlocal ok = exports['ai-core']:SetTime(12, 0)Parameter
Prop
Type
Rückgabe
boolean: true, wenn das Wetter-Skript es angenommen hat. false, wenn hour keine Zahl ist, das Skript abgelehnt hat oder kein Wetter-Skript läuft.
Beispiel
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
addCommand("noon", { help: "Sets the time to 12:00", restricted: true }, () => {
core.SetTime(12, 0);
});SetBlackout
Schaltet den Blackout der Stadt (alle künstlichen Lichter aus) ein oder aus.
Seite: Server · Wartet: nein · Lib: world.setBlackout
SetBlackout(on: boolean): booleanlocal ok = exports['ai-core']:SetBlackout(true)Parameter
Prop
Type
Rückgabe
boolean: true, wenn das Wetter-Skript es angenommen hat. false, wenn das Skript keinen Blackout hat, abgelehnt hat oder kein Wetter-Skript läuft.
Beispiel
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
/** Das Kraftwerk wurde sabotiert: 5 Minuten Dunkelheit. */
export function sabotagePowerPlant(): void {
if (!core.SetBlackout(true)) return;
setTimeout(() => core.SetBlackout(false), 5 * 60_000);
}FreezeTime
Hält die Spieluhr an oder lässt sie wieder laufen.
Seite: Server · Wartet: nein · Lib: world.freezeTime
FreezeTime(on: boolean): booleanlocal ok = exports['ai-core']:FreezeTime(true)Parameter
Prop
Type
Rückgabe
boolean: true, wenn das Wetter-Skript es angenommen hat. false, wenn das Skript die Zeit nicht einfrieren kann, abgelehnt hat oder kein Wetter-Skript läuft.
Beispiel
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Eine Event-Nacht: immer 21:00.
addCommand("eventnight", { help: "Freezes the clock at 21:00", restricted: true }, () => {
core.SetTime(21, 0);
core.FreezeTime(true);
});