AI Core
Dokumentacja APIEksporty klienckie ai-core

Menu radialne

Dodawaj, usuwaj i odświeżaj elementy w menu radialnym, którego używa serwer, z warunkami, podmenu i obsługą naciśnięć.

Menu radialne to koło, które gracze otwierają klawiszem, aby wybrać szybkie akcje (drzwi pojazdu, emotki, akcje pracy). Skrypty dodają swoje elementy do ai-core, a ai-core przekazuje je do menu radialnego, którego używa serwer: ai-radialmenu albo obsługiwanego zewnętrznego (tgiann-radialmenu, qb-radialmenu, codem-supreme-radialmenu, radial z ox_lib).

ai-core trzyma każdy element. Gdy menu radialne się restartuje albo właściciel serwera przełącza się na inne, ai-core sam dodaje każdy element ponownie, więc twój skrypt dodaje swoje elementy raz przy starcie i nigdy nie musi obserwować zasobu menu radialnego. Elementy są usuwane, gdy zatrzymuje się zasób, który je dodał.

AddRadialItem

Dodaje element do menu radialnego albo zastępuje element o tym samym id. Funkcje elementu (canShow, onPressed) działają wewnątrz twojego zasobu.

Strona: Klient · Czeka: nie

Sygnatura
AddRadialItem(item: RadialItem): void
Lua
exports['ai-core']:AddRadialItem(item) -- albo aiLib.radial.add(item)

Parametry

Prop

Type

RadialItem

Zobacz też RadialItem.

Prop

Type

Zwraca

Nic. Element bez tekstowego id lub label nie jest dodawany, a ai-core wypisuje ostrzeżenie z nazwą twojego zasobu.

Przykład

resource/client/radial.ts
import { cache, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import { Locale } from "common";

// Raz przy starcie: przełącznik silnika w podmenu pojazdu, tylko dla kierowcy.
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 działa przy każdym otwarciu koła: niech będzie tani (czytaj cache, zmienną lokalną lub HasItem), nigdy nie wywołuj z niego serwera. Nie dodawaj tych samych elementów ponownie, gdy menu radialne się restartuje; ai-core już to robi.

RemoveRadialItem

Usuwa element według jego id.

Strona: Klient · Czeka: nie

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

Parametry

Prop

Type

Zwraca

Nic.

Przykład

resource/client/duty.ts
import { onPlayerData, radial } from "@aicore-fivem/lib/client";
import { Locale } from "common";

// Akcja skucia tylko na służbie w policji.
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");
});

Id nie jest sprawdzane względem zasobu, który dodał element: usunięcie "myscript_cuff" usuwa go niezależnie od tego, kto go dodał. Używaj id zaczynających się od nazwy twojego zasobu. Dla elementu, który często pojawia się i znika, canShow jest prostsze niż dodawanie i usuwanie.

RefreshRadial

Ponownie czyta każde canShow otwartego koła, więc elementy pojawiają się lub znikają, gdy gracz na nie patrzy. Wywołaj to po zmianie czegoś, co czyta canShow (gracz wsiadł do pojazdu, wszedł na służbę).

Strona: Klient · Czeka: nie

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

Parametry

Brak.

Zwraca

Nic. Bez działającego menu radialnego nic nie robi.

Przykład

resource/client/radial.ts
import { onCache, radial } from "@aicore-fivem/lib/client";

// Elementy pojazdu zależą od miejsca: odśwież, gdy się zmieni.
onCache("seat", () => radial.refresh());

Na tej stronie