AI Core
API-ReferenzLib: Server

Welt

Zeit und Wetter über das jeweils laufende Wetter-Skript, Routing-Buckets aus dem Allokator von ai-core, Türschlösser und die Spawnpunkte gespeicherter Charaktere.

TypeScript
import { world, buckets, doors, characters } from "@aicore-fivem/lib/server";

world

Zeit und Wetter über ai-core, egal welches Wetter-Skript läuft (Renewed-Weathersync, av_weather, cd_easytime, qb-weathersync). Solange keins läuft, antworten Lesezugriffe mit null und Änderungen mit false.

world.getWeather

Seite: Server · Wartet: nein

Signatur
world.getWeather(): string | null
Lua
local weather = aiLib.world.getWeather()

Rückgabewert: der aktuelle Wettertyp, wie ihn das Wetter-Skript meldet (CLEAR, RAIN...), oder null, solange keins läuft.

const raining = ["RAIN", "THUNDER"].includes(world.getWeather() ?? "");

world.setWeather

Setzt das Wetter.

Seite: Server · Wartet: nein

Signatur
world.setWeather(type: Weather): boolean
Lua
local ok = aiLib.world.setWeather(weather)

Prop

Type

Rückgabewert: true, wenn gesetzt, false, solange kein Wetter-Skript läuft oder der Wert kein String ist.

import { addCommand, world } from "@aicore-fivem/lib/server";
import { isWeather } from "@aicore-fivem/shared";

addCommand("weather", { restricted: true, params: [{ name: "type", type: "string" }] }, (_source, { type }) => {
  const upper = type.toUpperCase();
  if (isWeather(upper)) world.setWeather(upper);
});

world.getTime

Seite: Server · Wartet: nein

Signatur
world.getTime(): { hour: number; minute: number } | null
Lua
local time = aiLib.world.getTime() -- { hour, minute } oder nil

Rückgabewert: die Spielzeit, oder null, solange kein Wetter-Skript läuft.

const time = world.getTime();
const night = time !== null && (time.hour >= 22 || time.hour < 6);

world.setTime

Setzt die Spielzeit.

Seite: Server · Wartet: nein

Signatur
world.setTime(hour: number, minute?: number): boolean
Lua
local ok = aiLib.world.setTime(hour, minute)

Prop

Type

Rückgabewert: true, wenn gesetzt, false, solange kein Wetter-Skript läuft.

world.setTime(12, 30);

world.setBlackout

Schaltet den Stromausfall in der Stadt ein oder aus.

Seite: Server · Wartet: nein

Signatur
world.setBlackout(on: boolean): boolean
Lua
local ok = aiLib.world.setBlackout(on)

Rückgabewert: true, wenn angewendet, false, solange kein Wetter-Skript läuft oder es keinen Stromausfall kennt.

world.setBlackout(true); // das Kraftwerk wurde sabotiert

world.freezeTime

Hält die Spieluhr an oder startet sie wieder.

Seite: Server · Wartet: nein

Signatur
world.freezeTime(on: boolean): boolean
Lua
local ok = aiLib.world.freezeTime(on)

Rückgabewert: true, wenn angewendet, false, solange kein Wetter-Skript läuft oder es die Zeit nicht einfrieren kann.

world.setTime(20, 0);
world.freezeTime(true);

buckets

Routing-Buckets (getrennte Welten: ein Wohnungsinterieur, eine Instanz) aus dem Allokator von ai-core, damit sich nie zwei Skripte einen teilen. Wähle Bucket-Nummern nie selbst (1000 + n). Kein Lua-Zwilling: Rufe die Exports AcquireBucket(tag) / ReleaseBucket(id) von ai-core auf.

buckets.acquire

Nimmt einen freien Bucket für diese Ressource. Er hat keine Bevölkerung (keine Umgebungs-Peds und -Autos) und striktes Entity-Lockdown.

Seite: Server · Wartet: nein

Signatur
buckets.acquire(tag: string): number

Prop

Type

Rückgabewert: die Bucket-ID.

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

const bucket = buckets.acquire(`property:${propertyId}`);
SetPlayerRoutingBucket(String(source), bucket);

buckets.release

Gibt einen Bucket zurück, sobald seine Spieler draußen sind.

Seite: Server · Wartet: nein

Signatur
buckets.release(id: number): boolean

Rückgabewert: true, wenn freigegeben. Jeder Bucket einer gestoppten Ressource geht von selbst zurück.

SetPlayerRoutingBucket(String(source), 0);
buckets.release(bucket);

doors

Türschlösser über die Türschloss-Ebene von ai-core, nach der eigenen Tür-ID des Türschloss-Skripts. Kein Lua-Zwilling: Rufe die Exports SetDoorLocked, IsDoorLocked von ai-core auf.

doors.setLocked

Schließt eine Tür ab oder auf.

Seite: Server · Wartet: nein

Signatur
doors.setLocked(id: string, locked: boolean, by?: number): boolean

Prop

Type

Rückgabewert: true, wenn ein Tür-Skript es übernommen hat, sonst false.

if (outcome === "won") doors.setLocked("bank_vault", false, source);

doors.isLocked

Seite: Server · Wartet: nein

Signatur
doors.isLocked(id: string): boolean | null

Rückgabewert: true oder false, oder null, wenn unbekannt (kein Türschloss, keine solche Tür, oder das Skript kann es auf dem Server nicht sagen).

if (doors.isLocked("bank_vault") === false) return fail("ALREADY_OPEN");

doors.provider

Seite: Server · Wartet: nein

Signatur
doors.provider(): string | null

Rückgabewert: das Türschloss-Skript, das antwortet, oder null, wenn keins läuft.

console.log(`doors through ${doors.provider() ?? "nothing"}`);

characters

Gespeicherte Charaktere über ai-core. Geladene Charaktere laufen über online und die Spieler-Exports von ai-core.

characters.setOfflinePosition

Verschiebt den Spawnpunkt eines gespeicherten (nicht geladenen) Charakters, zum Beispiel eines schlafenden Körpers, der weggetragen wurde. ai-core schreibt ihn, sobald kein Lade- oder Entlade-Speichervorgang den Charakter hält.

Seite: Server · Wartet: nein

Signatur
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): boolean

Kein Lua-Zwilling: Rufe den Export SetOfflinePosition(charId, position) von ai-core auf.

Prop

Type

Rückgabewert: true, wenn akzeptiert. false, wenn der Charakter geladen ist oder die Werte falsch sind.

characters.setOfflinePosition(sleeperCharId, { x: 340.2, y: -1396.7, z: 32.5, heading: 50 });

Auf dieser Seite