AI Core
API-Referenzai-core: Client-Exports

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

Signature
AddRadialItem(item: RadialItem): void
Lua
exports['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

resource/client/radial.ts
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

Signature
RemoveRadialItem(id: string): void
Lua
exports['ai-core']:RemoveRadialItem(id) -- oder aiLib.radial.remove(id)

Parameter

Prop

Type

Rückgabe

Nichts.

Beispiel

resource/client/duty.ts
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

Signature
RefreshRadial(): void
Lua
exports['ai-core']:RefreshRadial() -- oder aiLib.radial.refresh()

Parameter

Keine.

Rückgabe

Nichts. Ohne laufendes Radialmenü bewirkt es nichts.

Beispiel

resource/client/radial.ts
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());

Auf dieser Seite