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.
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
world.getWeather(): string | nulllocal 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
world.setWeather(type: Weather): booleanlocal 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
world.getTime(): { hour: number; minute: number } | nulllocal time = aiLib.world.getTime() -- { hour, minute } oder nilRü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
world.setTime(hour: number, minute?: number): booleanlocal 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
world.setBlackout(on: boolean): booleanlocal 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 sabotiertworld.freezeTime
Hält die Spieluhr an oder startet sie wieder.
Seite: Server · Wartet: nein
world.freezeTime(on: boolean): booleanlocal 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
buckets.acquire(tag: string): numberProp
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
buckets.release(id: number): booleanRü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
doors.setLocked(id: string, locked: boolean, by?: number): booleanProp
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
doors.isLocked(id: string): boolean | nullRü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
doors.provider(): string | nullRü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
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): booleanKein 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 });Jobs und Dienste
Polizeialarme, Gefängnis, MDT-Einträge, Sanitäter, Wiederbeleben und Heilen, Stress, Hunger und Durst, Job- und Gang-Definitionen, Prime Time.
Handy und Aussehen
Das Handy des Spielers über ai-core (Nummern, Mails, SMS, Benachrichtigungen) und das gespeicherte Aussehen von Charakteren über das jeweils laufende Kleidungs-Skript.