AI Core
Referência da APIAI Core: exports de servidor

Hora e clima

Leia e defina o clima e a hora do jogo, o blackout e a hora congelada, pelo script de clima que o servidor roda.

Hora e clima passam pelo ai-core, nunca pelos exports ou eventos próprios de um script de clima. O ai-core encaminha cada chamada ao primeiro script de clima que estiver rodando: Renewed-Weathersync, av_weather, cd_easytime e depois qb-weathersync (o ai-weathersync responde sob esse nome). Todos seguem o contrato do qb-weathersync. Enquanto nenhum está rodando, cada chamada responde null ou false.

Para pausar a sincronização no jogo de um jogador (um interior com luz própria, uma cutscene), use o lado cliente (PauseWorldSync, world.pauseSync da lib); veja Exports de cliente.

GetWeather

O tipo de clima atual.

Lado: Servidor · Espera: não · Lib: world.getWeather

Assinatura
GetWeather(): string | null
Lua
local weather = exports['ai-core']:GetWeather() -- 'EXTRASUNNY', 'RAIN'... ou nil

Parâmetros

Nenhum.

Retorno

string | null: o tipo de clima em maiúsculas (EXTRASUNNY, CLEAR, RAIN, THUNDER...). null quando nenhum script de clima está rodando.

Exemplo

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

Define o clima para todos.

Lado: Servidor · Espera: não · Lib: world.setWeather (recebe os nomes tipados de Weather)

Assinatura
SetWeather(type: string): boolean
Lua
local ok = exports['ai-core']:SetWeather('RAIN')

Parâmetros

Prop

Type

Retorno

boolean: true quando o script de clima o aceitou. false quando type não é texto, o script o recusou (um tipo desconhecido) ou nenhum script de clima está rodando.

Exemplo

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

A hora do jogo (o relógio dentro do jogo).

Lado: Servidor · Espera: não · Lib: world.getTime

Assinatura
GetTime(): { hour: number; minute: number } | null
Lua
local time = exports['ai-core']:GetTime() -- { hour, minute } ou nil

Parâmetros

Nenhum.

Retorno

{ hour, minute } | null: hora 0-23 e minuto 0-59. null quando nenhum script de clima está rodando.

Exemplo

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// O traficante só vende à noite (22:00 - 05:59 no horário do jogo).
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

Define a hora do jogo para todos.

Lado: Servidor · Espera: não · Lib: world.setTime

Assinatura
SetTime(hour: number, minute?: number): boolean
Lua
local ok = exports['ai-core']:SetTime(12, 0)

Parâmetros

Prop

Type

Retorno

boolean: true quando o script de clima a aceitou. false quando hour não é um número, o script recusou ou nenhum script de clima está rodando.

Exemplo

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

Liga ou desliga o blackout da cidade (todas as luzes artificiais apagadas).

Lado: Servidor · Espera: não · Lib: world.setBlackout

Assinatura
SetBlackout(on: boolean): boolean
Lua
local ok = exports['ai-core']:SetBlackout(true)

Parâmetros

Prop

Type

Retorno

boolean: true quando o script de clima o aceitou. false quando o script não tem blackout, recusou ou nenhum script de clima está rodando.

Exemplo

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

Para ou reinicia o relógio do jogo.

Lado: Servidor · Espera: não · Lib: world.freezeTime

Assinatura
FreezeTime(on: boolean): boolean
Lua
local ok = exports['ai-core']:FreezeTime(true)

Parâmetros

Prop

Type

Retorno

boolean: true quando o script de clima o aceitou. false quando o script não consegue congelar a hora, recusou ou nenhum script de clima está rodando.

Exemplo

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

// Uma noite de evento: sempre 21:00.
addCommand("eventnight", { help: "Freezes the clock at 21:00", restricted: true }, () => {
  core.SetTime(21, 0);
  core.FreezeTime(true);
});

Nesta página