AI Core
Référence de l’APIExports client d’ai-core

Menu radial

Ajouter, retirer et rafraîchir des entrées sur le menu radial qu’utilise le serveur, avec conditions, sous-menus et handlers d’appui.

Le menu radial est la roue que les joueurs ouvrent avec une touche pour choisir des actions rapides (portes du véhicule, emotes, actions de métier). Les scripts ajoutent leurs entrées à ai-core, et ai-core les transmet au menu radial qu’utilise le serveur : ai-radialmenu, ou un menu tiers pris en charge (tgiann-radialmenu, qb-radialmenu, codem-supreme-radialmenu, le radial d’ox_lib).

ai-core garde chaque entrée. Quand le menu radial redémarre, ou que le propriétaire du serveur passe à un autre, ai-core ajoute de nouveau chaque entrée tout seul ; votre script ajoute donc ses entrées une fois au démarrage et n’a jamais à surveiller la ressource radiale. Les entrées sont retirées quand la ressource qui les a ajoutées s’arrête.

AddRadialItem

Ajoute une entrée au menu radial, ou remplace l’entrée de même id. Les fonctions de l’entrée (canShow, onPressed) s’exécutent dans votre ressource.

Côté : Client · Attend : non

Signature
AddRadialItem(item: RadialItem): void
Lua
exports['ai-core']:AddRadialItem(item) -- ou aiLib.radial.add(item)

Paramètres

Prop

Type

RadialItem

Voir aussi RadialItem.

Prop

Type

Retour

Rien. Une entrée sans id ou label texte n’est pas ajoutée, et ai-core affiche un avertissement nommant votre ressource.

Exemple

resource/client/radial.ts
import { cache, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import { Locale } from "common";

// Une fois au démarrage : un interrupteur moteur dans le sous-menu véhicule, seulement pour le conducteur.
radial.add({
  id: "myscript_engine",
  label: Locale("RADIAL_ENGINE"),
  icon: "power-off",
  parent: RADIAL_VEHICLE,
  canShow: () => cache.vehicle !== false && cache.seat === -1,
  onPressed: () => {
    if (cache.vehicle === false) return;
    SetVehicleEngineOn(cache.vehicle, !GetIsVehicleEngineRunning(cache.vehicle), false, true);
  },
});

canShow s’exécute à chaque ouverture de la roue : gardez-le léger (lisez cache, une variable locale ou HasItem), n’appelez jamais le serveur depuis lui. N’ajoutez pas de nouveau les mêmes entrées quand le menu radial redémarre ; ai-core le fait déjà.

RemoveRadialItem

Retire une entrée par son id.

Côté : Client · Attend : non

Signature
RemoveRadialItem(id: string): void
Lua
exports['ai-core']:RemoveRadialItem(id) -- ou aiLib.radial.remove(id)

Paramètres

Prop

Type

Retour

Rien.

Exemple

resource/client/duty.ts
import { onPlayerData, radial } from "@aicore-fivem/lib/client";
import { Locale } from "common";

// Une action de menottage seulement en service comme policier.
onPlayerData("duty", (duty) => {
  if (duty === "police")
    radial.add({ id: "myscript_cuff", label: Locale("RADIAL_CUFF"), icon: "handcuffs", onPressed: () => ExecuteCommand("cuff") });
  else radial.remove("myscript_cuff");
});

L’id n’est pas vérifié par rapport à la ressource qui l’a ajouté : retirer "myscript_cuff" le retire, quel que soit qui l’a ajouté. Utilisez des ids qui commencent par le nom de votre ressource. Pour une entrée qui apparaît et disparaît souvent, un canShow est plus simple que d’ajouter et de retirer.

RefreshRadial

Relit chaque canShow d’une roue ouverte, pour que les entrées apparaissent ou disparaissent pendant que le joueur la regarde. Appelez-le après un changement de ce que lit un canShow (le joueur est monté dans un véhicule, a pris son service).

Côté : Client · Attend : non

Signature
RefreshRadial(): void
Lua
exports['ai-core']:RefreshRadial() -- ou aiLib.radial.refresh()

Paramètres

Aucun.

Retour

Rien. Sans menu radial en cours, il ne fait rien.

Exemple

resource/client/radial.ts
import { onCache, radial } from "@aicore-fivem/lib/client";

// Les entrées de véhicule dépendent du siège : rafraîchir quand il change.
onCache("seat", () => radial.refresh());

Sur cette page