Hora y clima
Lee y pon el clima y la hora del juego, el apagón y la hora congelada, a través del script de clima que tenga el servidor.
La hora y el clima pasan por ai-core, nunca por los exports o eventos propios de un script de clima. ai-core reenvía cada llamada al primer script de clima en marcha: Renewed-Weathersync, av_weather, cd_easytime y después qb-weathersync (ai-weathersync responde con ese nombre). Todos siguen el contrato de qb-weathersync. Mientras no hay ninguno en marcha, cada llamada responde null o false.
Para pausar la sincronización en el juego de un jugador (un interior con su propia luz, una cinemática), usa el lado de cliente (PauseWorldSync, world.pauseSync de la lib); consulta Exports de cliente.
GetWeather
El tipo de clima actual.
Lado: Servidor · Espera: no · Lib: world.getWeather
GetWeather(): string | nulllocal weather = exports['ai-core']:GetWeather() -- 'EXTRASUNNY', 'RAIN'... o nilParámetros
Ninguno.
Devuelve
string | null: el tipo de clima en mayúsculas (EXTRASUNNY, CLEAR, RAIN, THUNDER...). null cuando no hay ningún script de clima en marcha.
Ejemplo
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
/** Street races pay more in the rain. */
export function raceBonus(): number {
const weather = core.GetWeather();
return weather === "RAIN" || weather === "THUNDER" ? 1.25 : 1;
}SetWeather
Pone el clima para todo el mundo.
Lado: Servidor · Espera: no · Lib: world.setWeather (recibe los nombres tipados de Weather)
SetWeather(type: string): booleanlocal ok = exports['ai-core']:SetWeather('RAIN')Parámetros
Prop
Type
Devuelve
boolean: true cuando el script de clima lo aceptó. false cuando type no es un texto, el script lo rechazó (un tipo desconocido) o no hay ningún script de clima en marcha.
Ejemplo
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
import { isWeather } from "@aicore-fivem/shared";
const core = resourceExport("ai-core");
addCommand("weather", { help: "Sets the weather", params: [{ name: "type", type: "string" }], restricted: true }, (_source, args) => {
const type = args.type.toUpperCase();
if (!isWeather(type)) return console.log("unknown weather type");
core.SetWeather(type);
});GetTime
La hora del juego (el reloj dentro del juego).
Lado: Servidor · Espera: no · Lib: world.getTime
GetTime(): { hour: number; minute: number } | nulllocal time = exports['ai-core']:GetTime() -- { hour, minute } o nilParámetros
Ninguno.
Devuelve
{ hour, minute } | null: hora 0-23 y minuto 0-59. null cuando no hay ningún script de clima en marcha.
Ejemplo
import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
// El camello solo vende de noche (de 22:00 a 05:59, hora del juego).
onClientCallback("myscript:dealer", (source) => {
const time = core.GetTime();
const night = time !== null && (time.hour >= 22 || time.hour < 6);
return night ? { ok: true } : fail("COME_BACK_AT_NIGHT");
});SetTime
Pone la hora del juego para todo el mundo.
Lado: Servidor · Espera: no · Lib: world.setTime
SetTime(hour: number, minute?: number): booleanlocal ok = exports['ai-core']:SetTime(12, 0)Parámetros
Prop
Type
Devuelve
boolean: true cuando el script de clima lo aceptó. false cuando hour no es un número, el script lo rechazó o no hay ningún script de clima en marcha.
Ejemplo
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
addCommand("noon", { help: "Sets the time to 12:00", restricted: true }, () => {
core.SetTime(12, 0);
});SetBlackout
Activa o desactiva el apagón de la ciudad (todas las luces artificiales apagadas).
Lado: Servidor · Espera: no · Lib: world.setBlackout
SetBlackout(on: boolean): booleanlocal ok = exports['ai-core']:SetBlackout(true)Parámetros
Prop
Type
Devuelve
boolean: true cuando el script de clima lo aceptó. false cuando el script no tiene apagón, lo rechazó o no hay ningún script de clima en marcha.
Ejemplo
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
/** The power plant was sabotaged: 5 minutes of darkness. */
export function sabotagePowerPlant(): void {
if (!core.SetBlackout(true)) return;
setTimeout(() => core.SetBlackout(false), 5 * 60_000);
}FreezeTime
Detiene o vuelve a poner en marcha el reloj del juego.
Lado: Servidor · Espera: no · Lib: world.freezeTime
FreezeTime(on: boolean): booleanlocal ok = exports['ai-core']:FreezeTime(true)Parámetros
Prop
Type
Devuelve
boolean: true cuando el script de clima lo aceptó. false cuando el script no puede congelar la hora, lo rechazó o no hay ningún script de clima en marcha.
Ejemplo
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Una noche de evento: siempre las 21:00.
addCommand("eventnight", { help: "Freezes the clock at 21:00", restricted: true }, () => {
core.SetTime(21, 0);
core.FreezeTime(true);
});