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
AddRadialItem(item: RadialItem): voidexports['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
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
RemoveRadialItem(id: string): voidexports['ai-core']:RemoveRadialItem(id) -- ou aiLib.radial.remove(id)Paramètres
Prop
Type
Retour
Rien.
Exemple
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
RefreshRadial(): voidexports['ai-core']:RefreshRadial() -- ou aiLib.radial.refresh()Paramètres
Aucun.
Retour
Rien. Sans menu radial en cours, il ne fait rien.
Exemple
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());Objets
Ouvrir l’inventaire du joueur, vérifier un objet, lire l’arme en main et ouvrir le sélecteur d’objets d’administration, quel que soit l’inventaire du serveur.
Gestes et emotes
Vérifier les mains en l’air et le pointage, jouer et arrêter des emotes par nom, et savoir quel script d’emotes répond, quel que soit le menu d’emotes du serveur.