AI Core
Essentielsai-radialmenu

ai-radialmenu pour les développeurs

Ajouter des entrées au menu radial, la forme RadialItem, les exports client propres à ai-radialmenu et les API radiales auxquelles il répond.

Ajoutez vos entrées via AI Core, pas via ai-radialmenu : radial.add(item) de la lib en TypeScript ou aiLib.radial.add(item) en Lua. AI Core garde les entrées, les remet au menu radial que fait tourner le serveur, quel qu’il soit, les redonne à un radial qui redémarre, et les retire quand votre ressource s’arrête. Appeler directement ai-radialmenu lie votre script à une seule roue.

Ajouter une entrée (méthode recommandée)

radial.add

Ajoute une entrée à la roue, ou remplace l’entrée qui a le même id.

Côté : client · Attend : non

Signature
radial.add(item: RadialItem): void
Lua
aiLib.radial.add(item)

Paramètres

Prop

Type

RadialItem

Prop

Type

Retour

Rien.

Exemple

import { radial, notify, onPlayerData, getPlayerData } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import Locale from "common/locale";

// Une catégorie police sur la roue principale, affichée uniquement en service.
radial.add({
  id: "police",
  label: Locale("RADIAL_POLICE"),
  icon: "shield-halved",
  canShow: () => getPlayerData("duty") === "police",
  items: [
    { id: "police_cuff", label: Locale("RADIAL_CUFF"), icon: "handcuffs", onPressed: () => emit("myscript:cuffNearest") },
  ],
});

// Une entrée dans la catégorie véhicule intégrée.
radial.add({
  id: "myscript_windows",
  label: Locale("RADIAL_WINDOWS"),
  icon: "car-side",
  parent: RADIAL_VEHICLE,
  keepOpen: true,
  onPressed: () => notify(Locale("WINDOWS_TOGGLED"), "info"),
});

// Le service a changé : relire chaque canShow d’une roue ouverte.
onPlayerData("duty", () => radial.refresh());

Ajoutez vos entrées une seule fois, au démarrage de votre ressource. Ne les ajoutez pas à nouveau quand le menu radial redémarre : AI Core s’en charge pour vous. canShow s’exécute à chaque ouverture, donc gardez-le léger (lire des données en cache, pas d’appels au serveur).

radial.remove

Retire une de vos entrées par son id. Côté : client · Attend : non.

Signature
radial.remove(id: string): void
Lua
aiLib.radial.remove('myscript_windows')

radial.refresh

Relit chaque canShow d’une roue ouverte. Appelez-le après un changement des données que lit votre canShow alors que la roue est peut-être ouverte. Côté : client · Attend : non.

Signature
radial.refresh(): void
Lua
aiLib.radial.refresh()

Exports client propres à ai-radialmenu

La couche radiale d’AI Core les appelle. Ils sont typés AiRadialClientExports dans @aicore-fivem/shared.

ExportCe qu’il fait
AddItem(item: RadialItem & { onSelect?: () => void }): voidAjoute ou remplace une entrée appartenant à la ressource appelante. onSelect est accepté comme ancien nom de onPressed. parent la place dans un sous-menu.
RemoveItem(id: string, parent?: string): voidRetire une entrée (sous parent quand il est donné).
Refresh(): voidRelit chaque canShow d’une roue ouverte.

Les entrées, sous-menus et états d’entrées d’une ressource sont retirés quand cette ressource s’arrête.

API auxquelles il répond

ai-radialmenu fait un provide de deux autres roues, donc leurs noms d’exports l’atteignent :

  • qb-radialmenu : AddOption(data, id?) renvoie l’id sous lequel l’entrée est conservée ; RemoveOption(id). Champs d’entrée title, icon (fas fa-x accepté), items, action (une fonction) ou type + event (client, server, command, qbcommand), shouldClose = false garde la roue ouverte.
  • tgiann-radialmenu-target : AddMenuItem(item | items, parentId?), RemoveMenuItem(id, parentId?), ClearMenuItems(), RegisterSubMenu({ id, items }), RefreshMenu(), DisableMenu(state), IsMenuDisabled(), OpenMenu(), CloseMenu(), IsMenuOpen(), HasMenuItem(id), SetMenuItemHidden(id, state), IsMenuItemHidden(id), UpdateMenuItem(id, { label?, icon? }), ResetMenuItem(id). Champs d’entrée label (un texte, ou { en, tr } choisi selon la convar ai:locale), canInteract(args), onSelect(args), event + type + args, command, export { resource, name, args }, menu, shouldClose, whileDead.

Non pris en charge : le GetCurrentMenuId de tgiann-radialmenu-target, ses réglages et ses exports serveur, et ses events locaux (menuOpened, itemSelected). Son API de ciblage est prise en charge par ai-target.

Events

Aucun pour les autres scripts. Les messages NUI de la roue (open, update, close) et ses callbacks (select, close) sont internes.

Sur cette page