AI Core
Referencia de la APILib: servidor

Mundo

Hora y clima a través del script de clima que funcione, routing buckets del asignador de ai-core, cerraduras de puertas y puntos de aparición de personajes guardados.

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

world

Hora y clima a través de ai-core, sea cual sea el script de clima que funcione (Renewed-Weathersync, av_weather, cd_easytime, qb-weathersync). Mientras no haya ninguno en marcha, las lecturas responden null y los cambios responden false.

world.getWeather

Lado: Servidor · Espera: no

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

Devuelve el tipo de clima actual tal como lo informa el script de clima (CLEAR, RAIN...), o null mientras no haya ninguno en marcha.

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

world.setWeather

Fija el clima.

Lado: Servidor · Espera: no

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

Prop

Type

Devuelve true cuando se fijó, false mientras no haya script de clima en marcha o el valor no sea un string.

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

Lado: Servidor · Espera: no

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

Devuelve la hora del juego, o null mientras no haya script de clima en marcha.

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

world.setTime

Fija la hora del juego.

Lado: Servidor · Espera: no

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

Prop

Type

Devuelve true cuando se fijó, false mientras no haya script de clima en marcha.

world.setTime(12, 30);

world.setBlackout

Activa o desactiva el apagón de la ciudad.

Lado: Servidor · Espera: no

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

Devuelve true cuando se aplicó, false mientras no haya script de clima en marcha o este no tenga apagón.

world.setBlackout(true); // sabotearon la central eléctrica

world.freezeTime

Detiene o reanuda el reloj del juego.

Lado: Servidor · Espera: no

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

Devuelve true cuando se aplicó, false mientras no haya script de clima en marcha o este no pueda congelar la hora.

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

buckets

Routing buckets (mundos separados: el interior de un apartamento, una instancia) del asignador de ai-core, para que dos scripts nunca compartan uno. Nunca elijas los números de bucket tú mismo (1000 + n). Sin equivalente en Lua: llama a los exports de ai-core AcquireBucket(tag) / ReleaseBucket(id).

buckets.acquire

Toma un bucket libre para este recurso. No tiene población (ni peds ni coches ambientales) y tiene bloqueo estricto de entidades.

Lado: Servidor · Espera: no

Firma
buckets.acquire(tag: string): number

Prop

Type

Devuelve el id del bucket.

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

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

buckets.release

Devuelve un bucket una vez que sus jugadores han salido.

Lado: Servidor · Espera: no

Firma
buckets.release(id: number): boolean

Devuelve true cuando se liberó. Cada bucket de un recurso detenido se devuelve solo.

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

doors

Cerraduras de puertas a través de la capa de cerraduras de ai-core, por el id de puerta propio del script de cerraduras. Sin equivalente en Lua: llama a los exports de ai-core SetDoorLocked, IsDoorLocked.

doors.setLocked

Cierra o abre una puerta.

Lado: Servidor · Espera: no

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

Prop

Type

Devuelve true cuando un script de puertas lo aceptó, false en caso contrario.

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

doors.isLocked

Lado: Servidor · Espera: no

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

Devuelve true o false, o null cuando se desconoce (sin script de cerraduras, sin esa puerta, o el script no puede saberlo en el servidor).

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

doors.provider

Lado: Servidor · Espera: no

Firma
doors.provider(): string | null

Devuelve el script de cerraduras que responde, o null cuando no hay ninguno en marcha.

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

characters

Personajes guardados a través de ai-core. Los personajes cargados pasan por online y los exports de jugador de ai-core.

characters.setOfflinePosition

Mueve el punto de aparición de un personaje guardado (no cargado), por ejemplo un cuerpo dormido que alguien se llevó. ai-core lo escribe cuando ningún guardado de carga o descarga retiene al personaje.

Lado: Servidor · Espera: no

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

Sin equivalente en Lua: llama al export de ai-core SetOfflinePosition(charId, position).

Prop

Type

Devuelve true cuando se aceptó. false cuando el personaje está cargado o los valores son incorrectos.

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

En esta página