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.
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
world.getWeather(): string | nulllocal 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
world.setWeather(type: Weather): booleanlocal 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
world.getTime(): { hour: number; minute: number } | nulllocal time = aiLib.world.getTime() -- { hour, minute } o nilDevuelve 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
world.setTime(hour: number, minute?: number): booleanlocal 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
world.setBlackout(on: boolean): booleanlocal 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éctricaworld.freezeTime
Detiene o reanuda el reloj del juego.
Lado: Servidor · Espera: no
world.freezeTime(on: boolean): booleanlocal 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
buckets.acquire(tag: string): numberProp
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
buckets.release(id: number): booleanDevuelve 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
doors.setLocked(id: string, locked: boolean, by?: number): booleanProp
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
doors.isLocked(id: string): boolean | nullDevuelve 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
doors.provider(): string | nullDevuelve 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
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): booleanSin 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 });Trabajos y servicios
Alertas policiales, prisión, registros del MDT, médicos, revivir y curar, estrés, hambre y sed, definiciones de trabajos y bandas, horas punta.
Teléfono y apariencia
El teléfono del jugador a través de ai-core (números, correos, mensajes, notificaciones) y el aspecto guardado de los personajes a través del script de ropa que funcione.