AI Core
Référence de l’APIAI Core : exports serveur

Heure et météo

Lire et fixer la météo et l’heure du jeu, la coupure de courant et l’heure figée, via le script météo qu’utilise le serveur.

L’heure et la météo passent par ai-core, jamais par les exports ou événements propres à un script météo. ai-core transmet chaque appel au premier script météo qui tourne : Renewed-Weathersync, av_weather, cd_easytime, puis qb-weathersync (ai-weathersync répond sous ce nom). Ils suivent tous le contrat de qb-weathersync. Tant qu’aucun ne tourne, chaque appel répond null ou false.

Pour mettre la synchro en pause dans le jeu d’un joueur (un intérieur avec son propre éclairage, une cinématique), utilisez le côté client (PauseWorldSync, world.pauseSync de la lib) ; voir Exports client.

GetWeather

Le type de météo actuel.

Côté : Serveur · Attend : non · Lib : world.getWeather

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

Paramètres

Aucun.

Retour

string | null : le type de météo en majuscules (EXTRASUNNY, CLEAR, RAIN, THUNDER...). null quand aucun script météo ne tourne.

Exemple

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

Fixe la météo pour tout le monde.

Côté : Serveur · Attend : non · Lib : world.setWeather (prend les noms typés Weather)

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

Paramètres

Prop

Type

Retour

boolean : true quand le script météo l’a accepté. false quand type n’est pas un texte, que le script l’a refusé (un type inconnu) ou qu’aucun script météo ne tourne.

Exemple

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

L’heure du jeu (l’horloge en jeu).

Côté : Serveur · Attend : non · Lib : world.getTime

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

Paramètres

Aucun.

Retour

{ hour, minute } | null : heure 0-23 et minute 0-59. null quand aucun script météo ne tourne.

Exemple

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

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

// Le dealer ne vend que la nuit (22:00 - 05:59 heure du jeu).
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

Fixe l’heure du jeu pour tout le monde.

Côté : Serveur · Attend : non · Lib : world.setTime

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

Paramètres

Prop

Type

Retour

boolean : true quand le script météo l’a acceptée. false quand hour n’est pas un nombre, que le script a refusé ou qu’aucun script météo ne tourne.

Exemple

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

Active ou désactive la coupure de courant de la ville (toutes les lumières artificielles éteintes).

Côté : Serveur · Attend : non · Lib : world.setBlackout

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

Paramètres

Prop

Type

Retour

boolean : true quand le script météo l’a acceptée. false quand le script n’a pas de coupure de courant, a refusé, ou qu’aucun script météo ne tourne.

Exemple

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

Arrête ou relance l’horloge du jeu.

Côté : Serveur · Attend : non · Lib : world.freezeTime

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

Paramètres

Prop

Type

Retour

boolean : true quand le script météo l’a accepté. false quand le script ne sait pas figer l’heure, a refusé, ou qu’aucun script météo ne tourne.

Exemple

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

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

// Une soirée événement : toujours 21:00.
addCommand("eventnight", { help: "Freezes the clock at 21:00", restricted: true }, () => {
  core.SetTime(21, 0);
  core.FreezeTime(true);
});

Sur cette page