AI Core
API-ReferenzAI Core: Server-Exports

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

Signature
GetWeather(): string | null
Lua
local weather = exports['ai-core']:GetWeather() -- 'EXTRASUNNY', 'RAIN'... oder nil

Parameter

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)

Signature
SetWeather(type: string): boolean
Lua
local 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

Signature
GetTime(): { hour: number; minute: number } | null
Lua
local time = exports['ai-core']:GetTime() -- { hour, minute } oder nil

Parameter

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

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

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

Signature
FreezeTime(on: boolean): boolean
Lua
local 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);
});

Auf dieser Seite