AI Core
Dokumentacja APILib: serwer

Świat

Czas i pogoda przez dowolny skrypt pogody, który działa, routing buckety z alokatora ai-core, zamki drzwi i punkty spawnu zapisanych postaci.

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

world

Czas i pogoda przez ai-core, niezależnie od tego, jaki skrypt pogody działa (Renewed-Weathersync, av_weather, cd_easytime, qb-weathersync). Dopóki żaden nie działa, odczyty odpowiadają null, a zmiany false.

world.getWeather

Strona: Serwer · Czeka: nie

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

Zwraca bieżący typ pogody tak, jak podaje go skrypt pogody (CLEAR, RAIN...), albo null, dopóki żaden nie działa.

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

world.setWeather

Ustawia pogodę.

Strona: Serwer · Czeka: nie

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

Prop

Type

Zwraca true, gdy ustawiono, false, dopóki nie działa żaden skrypt pogody albo wartość nie jest stringiem.

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

Strona: Serwer · Czeka: nie

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

Zwraca czas w grze albo null, dopóki nie działa żaden skrypt pogody.

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

world.setTime

Ustawia czas w grze.

Strona: Serwer · Czeka: nie

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

Prop

Type

Zwraca true, gdy ustawiono, false, dopóki nie działa żaden skrypt pogody.

world.setTime(12, 30);

world.setBlackout

Włącza albo wyłącza blackout w mieście.

Strona: Serwer · Czeka: nie

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

Zwraca true, gdy zastosowano, false, dopóki nie działa żaden skrypt pogody albo nie ma on blackoutu.

world.setBlackout(true); // elektrownia została sabotowana

world.freezeTime

Zatrzymuje albo ponownie uruchamia zegar w grze.

Strona: Serwer · Czeka: nie

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

Zwraca true, gdy zastosowano, false, dopóki nie działa żaden skrypt pogody albo nie potrafi on zatrzymać czasu.

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

buckets

Routing buckety (osobne światy: wnętrze mieszkania, instancja) z alokatora ai-core, więc żadne dwa skrypty nigdy nie dzielą jednego. Nigdy nie wybieraj numerów bucketów sam (1000 + n). Brak odpowiednika w Lua: wywołaj eksporty ai-core AcquireBucket(tag) / ReleaseBucket(id).

buckets.acquire

Bierze wolny bucket dla tego zasobu. Nie ma populacji (żadnych pedów i aut w tle) i ma ścisłą blokadę encji.

Strona: Serwer · Czeka: nie

Sygnatura
buckets.acquire(tag: string): number

Prop

Type

Zwraca id bucketu.

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

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

buckets.release

Oddaje bucket, gdy jego gracze już z niego wyszli.

Strona: Serwer · Czeka: nie

Sygnatura
buckets.release(id: number): boolean

Zwraca true, gdy zwolniono. Każdy bucket zatrzymanego zasobu wraca sam.

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

doors

Zamki drzwi przez warstwę zamków drzwi ai-core, według własnego id drzwi skryptu zamków. Brak odpowiednika w Lua: wywołaj eksporty ai-core SetDoorLocked, IsDoorLocked.

doors.setLocked

Zamyka albo otwiera drzwi.

Strona: Serwer · Czeka: nie

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

Prop

Type

Zwraca true, gdy skrypt drzwi to przyjął, w przeciwnym razie false.

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

doors.isLocked

Strona: Serwer · Czeka: nie

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

Zwraca true albo false lub null, gdy nie wiadomo (brak zamka drzwi, brak takich drzwi albo skrypt nie potrafi tego stwierdzić na serwerze).

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

doors.provider

Strona: Serwer · Czeka: nie

Sygnatura
doors.provider(): string | null

Zwraca skrypt zamków drzwi, który odpowiada, albo null, gdy żaden nie działa.

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

characters

Zapisane postacie przez ai-core. Wczytane postacie przechodzą przez online i eksporty graczy ai-core.

characters.setOfflinePosition

Przenosi punkt spawnu zapisanej (niewczytanej) postaci, na przykład śpiącego ciała, które zostało przeniesione. ai-core zapisuje go, gdy żaden zapis przy wczytaniu ani wyładowaniu nie trzyma postaci.

Strona: Serwer · Czeka: nie

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

Brak odpowiednika w Lua: wywołaj eksport ai-core SetOfflinePosition(charId, position).

Prop

Type

Zwraca true, gdy przyjęto. false, gdy postać jest wczytana albo wartości są złe.

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

Na tej stronie