AI Core
Grundlagenai-radialmenu

ai-radialmenu für Entwickler

Einträge zum Radialmenü hinzufügen, die Struktur RadialItem, die eigenen Client-Exports von ai-radialmenu und die Radial-APIs, die es beantwortet.

Füge deine Einträge über AI Core hinzu, nicht über ai-radialmenu: radial.add(item) der Lib in TypeScript oder aiLib.radial.add(item) in Lua. AI Core verwaltet die Einträge, übergibt sie an das Radialmenü, das der Server gerade nutzt, gibt sie einem neu startenden Radial erneut und verwirft sie, wenn deine Ressource stoppt. Ein direkter Aufruf von ai-radialmenu bindet dein Skript an ein einziges Rad.

Einen Eintrag hinzufügen (empfohlener Weg)

radial.add

Fügt dem Rad einen Eintrag hinzu oder ersetzt den Eintrag mit derselben id.

Seite: Client · Wartet: nein

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

Parameter

Prop

Type

RadialItem

Prop

Type

Rückgabewert

Nichts.

Beispiel

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

// Eine Polizeikategorie im Hauptrad, nur im Dienst angezeigt.
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") },
  ],
});

// Ein Eintrag in der eingebauten Fahrzeugkategorie.
radial.add({
  id: "myscript_windows",
  label: Locale("RADIAL_WINDOWS"),
  icon: "car-side",
  parent: RADIAL_VEHICLE,
  keepOpen: true,
  onPressed: () => notify(Locale("WINDOWS_TOGGLED"), "info"),
});

// Dienst geändert: jedes canShow eines offenen Rads erneut lesen.
onPlayerData("duty", () => radial.refresh());

Füge deine Einträge einmal hinzu, wenn deine Ressource startet. Füge sie nicht erneut hinzu, wenn das Radialmenü neu startet: Das erledigt AI Core für dich. canShow läuft bei jedem Öffnen, halte es also günstig (zwischengespeicherte Daten lesen, keine Serveraufrufe).

radial.remove

Entfernt einen deiner Einträge per ID. Seite: Client · Wartet: nein.

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

radial.refresh

Liest jedes canShow eines offenen Rads erneut. Rufe es auf, nachdem sich die Daten, die dein canShow liest, geändert haben, während das Rad offen sein könnte. Seite: Client · Wartet: nein.

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

Die eigenen Client-Exports von ai-radialmenu

Der Radial-Layer von AI Core ruft diese auf. Sie sind als AiRadialClientExports in @aicore-fivem/shared typisiert.

ExportWas er macht
AddItem(item: RadialItem & { onSelect?: () => void }): voidFügt einen Eintrag der aufrufenden Ressource hinzu oder ersetzt ihn. onSelect wird als älterer Name von onPressed angenommen. parent setzt ihn in ein Untermenü.
RemoveItem(id: string, parent?: string): voidEntfernt einen Eintrag (unter parent, falls angegeben).
Refresh(): voidLiest jedes canShow eines offenen Rads erneut.

Einträge, Untermenüs und Eintragszustände einer Ressource werden entfernt, wenn diese Ressource stoppt.

APIs, die es beantwortet

ai-radialmenu providet zwei andere Räder, sodass deren Export-Namen es erreichen:

  • qb-radialmenu: AddOption(data, id?) gibt die ID zurück, unter der der Eintrag geführt wird; RemoveOption(id). Eintragsfelder title, icon (fas fa-x wird angenommen), items, action (eine Funktion) oder type + event (client, server, command, qbcommand), shouldClose = false hält das Rad offen.
  • 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). Eintragsfelder label (ein Text oder { en, tr }, gewählt über die Convar ai:locale), canInteract(args), onSelect(args), event + type + args, command, export { resource, name, args }, menu, shouldClose, whileDead.

Nicht beantwortet: GetCurrentMenuId von tgiann-radialmenu-target, seine Einstellungen und Server-Exports sowie seine lokalen Events (menuOpened, itemSelected). Seine Target-API wird von ai-target beantwortet.

Events

Keine für andere Skripte. Die NUI-Nachrichten des Rads (open, update, close) und Callbacks (select, close) sind intern.

Auf dieser Seite