Radialmenü
Einträge im Radialmenü, das der Server nutzt, hinzufügen, entfernen und aktualisieren, mit Bedingungen, Untermenüs und Handlern beim Drücken.
Das Radialmenü ist das Rad, das Spieler mit einer Taste öffnen, um schnelle Aktionen zu wählen (Fahrzeugtüren, Emotes, Job-Aktionen). Skripte fügen ihre Einträge bei ai-core hinzu, und ai-core übergibt sie an das Radialmenü, das der Server nutzt: ai-radialmenu oder ein unterstütztes eines Drittanbieters (tgiann-radialmenu, qb-radialmenu, codem-supreme-radialmenu, das Radialmenü von ox_lib).
ai-core verwahrt jeden Eintrag. Wenn das Radialmenü neu startet oder der Serverbesitzer zu einem anderen wechselt, fügt ai-core jeden Eintrag von selbst erneut hinzu, sodass dein Skript seine Einträge einmal beim Start hinzufügt und die Radial-Ressource nie beobachten muss. Einträge werden entfernt, wenn die Ressource, die sie hinzugefügt hat, stoppt.
AddRadialItem
Fügt dem Radialmenü einen Eintrag hinzu oder ersetzt den Eintrag mit derselben ID. Die Funktionen des Eintrags (canShow, onPressed) laufen innerhalb deiner Ressource.
Seite: Client · Wartet: nein
AddRadialItem(item: RadialItem): voidexports['ai-core']:AddRadialItem(item) -- oder aiLib.radial.add(item)Parameter
Prop
Type
RadialItem
Siehe auch RadialItem.
Prop
Type
Rückgabe
Nichts. Ein Eintrag ohne Text-id oder -label wird nicht hinzugefügt, und ai-core gibt eine Warnung mit dem Namen deiner Ressource aus.
Beispiel
import { cache, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import { Locale } from "common";
// Einmal beim Start: ein Motorschalter im Fahrzeug-Untermenü, nur für den Fahrer.
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 läuft bei jedem Öffnen des Rads: Halte es günstig (lies cache, eine lokale Variable oder HasItem), rufe nie den Server daraus auf. Füge dieselben Einträge nicht erneut hinzu, wenn das Radialmenü neu startet; ai-core erledigt das bereits.
RemoveRadialItem
Entfernt einen Eintrag über seine ID.
Seite: Client · Wartet: nein
RemoveRadialItem(id: string): voidexports['ai-core']:RemoveRadialItem(id) -- oder aiLib.radial.remove(id)Parameter
Prop
Type
Rückgabe
Nichts.
Beispiel
import { onPlayerData, radial } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Eine Fessel-Aktion nur, solange man als Polizist im Dienst ist.
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");
});Die ID wird nicht gegen die Ressource geprüft, die sie hinzugefügt hat: "myscript_cuff" zu entfernen entfernt es, egal wer es hinzugefügt hat. Nutze IDs, die mit deinem Ressourcennamen beginnen. Für einen Eintrag, der oft kommt und geht, ist ein canShow einfacher als Hinzufügen und Entfernen.
RefreshRadial
Liest jedes canShow eines offenen Rads erneut, sodass Einträge erscheinen oder verschwinden, während der Spieler darauf schaut. Rufe es auf, nachdem sich etwas geändert hat, das ein canShow liest (der Spieler ist in ein Fahrzeug gestiegen, in den Dienst gegangen).
Seite: Client · Wartet: nein
RefreshRadial(): voidexports['ai-core']:RefreshRadial() -- oder aiLib.radial.refresh()Parameter
Keine.
Rückgabe
Nichts. Ohne laufendes Radialmenü bewirkt es nichts.
Beispiel
import { onCache, radial } from "@aicore-fivem/lib/client";
// Fahrzeug-Einträge hängen vom Sitz ab: aktualisieren, wenn er sich ändert.
onCache("seat", () => radial.refresh());Items
Das Inventar des Spielers öffnen, ein Item prüfen, die Waffe in der Hand lesen und die Item-Auswahl für Admins öffnen, egal welches Inventar der Server nutzt.
Gesten und Emotes
Erhobene Hände und Zeigen prüfen, Emotes per Name abspielen und stoppen und sehen, welches Emote-Skript antwortet, egal welches Emote-Menü der Server nutzt.