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
radial.add(item: RadialItem): voidaiLib.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.
radial.remove(id: string): voidaiLib.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.
radial.refresh(): voidaiLib.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.
| Export | Was er macht |
|---|---|
AddItem(item: RadialItem & { onSelect?: () => void }): void | Fü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): void | Entfernt einen Eintrag (unter parent, falls angegeben). |
Refresh(): void | Liest 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). Eintragsfeldertitle,icon(fas fa-xwird angenommen),items,action(eine Funktion) odertype+event(client,server,command,qbcommand),shouldClose = falsehä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). Eintragsfelderlabel(ein Text oder{ en, tr }, gewählt über die Convarai: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.
ai-radialmenu
Das Radialmenü auf F3, mit eingebauten Aktionen und den Einträgen, die jedes andere Skript hinzufügt. Beantwortet die APIs von qb-radialmenu und tgiann-radialmenu-target.
ai-target
Das Target-Auge. Marker auf allem, womit ein Spieler interagieren kann; die Interaktionstaste wählt einen. Beantwortet die API von ox_target.