Monde
L’heure et la météo via le script météo qui tourne, les routing buckets de l’allocateur d’ai-core, le verrouillage des portes et les points d’apparition des personnages enregistrés.
import { world, buckets, doors, characters } from "@aicore-fivem/lib/server";world
L’heure et la météo via ai-core, quel que soit le script météo qui tourne (Renewed-Weathersync, av_weather, cd_easytime, qb-weathersync). Tant qu’aucun ne tourne, les lectures répondent null et les changements répondent false.
world.getWeather
Côté : serveur · Attend : non
world.getWeather(): string | nulllocal weather = aiLib.world.getWeather()Retour le type de météo actuel tel que le script météo le rapporte (CLEAR, RAIN...), ou null tant qu’aucun ne tourne.
const raining = ["RAIN", "THUNDER"].includes(world.getWeather() ?? "");world.setWeather
Change la météo.
Côté : serveur · Attend : non
world.setWeather(type: Weather): booleanlocal ok = aiLib.world.setWeather(weather)Prop
Type
Retour true quand elle est appliquée, false tant qu’aucun script météo ne tourne ou si la valeur n’est pas une chaîne.
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
Côté : serveur · Attend : non
world.getTime(): { hour: number; minute: number } | nulllocal time = aiLib.world.getTime() -- { hour, minute } ou nilRetour l’heure en jeu, ou null tant qu’aucun script météo ne tourne.
const time = world.getTime();
const night = time !== null && (time.hour >= 22 || time.hour < 6);world.setTime
Change l’heure en jeu.
Côté : serveur · Attend : non
world.setTime(hour: number, minute?: number): booleanlocal ok = aiLib.world.setTime(hour, minute)Prop
Type
Retour true quand elle est appliquée, false tant qu’aucun script météo ne tourne.
world.setTime(12, 30);world.setBlackout
Active ou désactive la panne de courant de la ville.
Côté : serveur · Attend : non
world.setBlackout(on: boolean): booleanlocal ok = aiLib.world.setBlackout(on)Retour true quand elle est appliquée, false tant qu’aucun script météo ne tourne ou s’il ne gère pas la panne de courant.
world.setBlackout(true); // la centrale électrique a été sabotéeworld.freezeTime
Arrête ou relance l’horloge du jeu.
Côté : serveur · Attend : non
world.freezeTime(on: boolean): booleanlocal ok = aiLib.world.freezeTime(on)Retour true quand c’est appliqué, false tant qu’aucun script météo ne tourne ou s’il ne peut pas figer le temps.
world.setTime(20, 0);
world.freezeTime(true);buckets
Les routing buckets (des mondes séparés : l’intérieur d’un appartement, une instance) de l’allocateur d’ai-core, pour que deux scripts n’en partagent jamais un. Ne choisissez jamais vous-même les numéros de bucket (1000 + n). Pas d’équivalent Lua : appelez les exports d’ai-core AcquireBucket(tag) / ReleaseBucket(id).
buckets.acquire
Prend un bucket libre pour cette ressource. Il n’a aucune population (pas de peds ni de voitures ambiants) et un verrouillage strict des entités.
Côté : serveur · Attend : non
buckets.acquire(tag: string): numberProp
Type
Retour l’id du bucket.
import { buckets } from "@aicore-fivem/lib/server";
const bucket = buckets.acquire(`property:${propertyId}`);
SetPlayerRoutingBucket(String(source), bucket);buckets.release
Rend un bucket une fois ses joueurs sortis.
Côté : serveur · Attend : non
buckets.release(id: number): booleanRetour true quand il est rendu. Tous les buckets d’une ressource arrêtée sont rendus d’eux-mêmes.
SetPlayerRoutingBucket(String(source), 0);
buckets.release(bucket);doors
Le verrouillage des portes via la couche de verrouillage de portes d’ai-core, par l’id de porte propre au script de verrouillage. Pas d’équivalent Lua : appelez les exports d’ai-core SetDoorLocked, IsDoorLocked.
doors.setLocked
Verrouille ou déverrouille une porte.
Côté : serveur · Attend : non
doors.setLocked(id: string, locked: boolean, by?: number): booleanProp
Type
Retour true quand un script de portes l’a pris en compte, false sinon.
if (outcome === "won") doors.setLocked("bank_vault", false, source);doors.isLocked
Côté : serveur · Attend : non
doors.isLocked(id: string): boolean | nullRetour true ou false, ou null quand c’est inconnu (pas de verrouillage de portes, porte inexistante, ou le script ne peut pas le dire côté serveur).
if (doors.isLocked("bank_vault") === false) return fail("ALREADY_OPEN");doors.provider
Côté : serveur · Attend : non
doors.provider(): string | nullRetour le script de verrouillage de portes qui répond, ou null quand aucun ne tourne.
console.log(`doors through ${doors.provider() ?? "nothing"}`);characters
Les personnages enregistrés via ai-core. Les personnages chargés passent par online et les exports joueur d’ai-core.
characters.setOfflinePosition
Déplace le point d’apparition d’un personnage enregistré (non chargé), par exemple un corps endormi qui a été emporté. ai-core l’écrit dès qu’aucune sauvegarde de chargement ou de déchargement ne retient le personnage.
Côté : serveur · Attend : non
characters.setOfflinePosition(charId: number, position: { x: number; y: number; z: number; heading?: number }): booleanPas d’équivalent Lua : appelez l’export d’ai-core SetOfflinePosition(charId, position).
Prop
Type
Retour true quand c’est accepté. false quand le personnage est chargé ou que les valeurs sont incorrectes.
characters.setOfflinePosition(sleeperCharId, { x: 340.2, y: -1396.7, z: 32.5, heading: 50 });Métiers et services
Alertes police, prison, dossiers MDT, médecins, réanimation et soins, stress, faim et soif, définitions des métiers et des gangs, heures de pointe.
Téléphone et apparence
Le téléphone du joueur via ai-core (numéros, mails, SMS, notifications) et l’apparence enregistrée des personnages via le script de vêtements qui tourne.