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
AddRadialItem(item: RadialItem): voidexports['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
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
RemoveRadialItem(id: string): voidexports['ai-core']:RemoveRadialItem(id) -- albo aiLib.radial.remove(id)Parametry
Prop
Type
Zwraca
Nic.
Przykład
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
RefreshRadial(): voidexports['ai-core']:RefreshRadial() -- albo aiLib.radial.refresh()Parametry
Brak.
Zwraca
Nic. Bez działającego menu radialnego nic nie robi.
Przykład
import { onCache, radial } from "@aicore-fivem/lib/client";
// Elementy pojazdu zależą od miejsca: odśwież, gdy się zmieni.
onCache("seat", () => radial.refresh());Przedmioty
Otwórz ekwipunek gracza, sprawdź przedmiot, odczytaj broń w ręce i otwórz wybierak przedmiotów administratora, niezależnie od ekwipunku na serwerze.
Gesty i emotki
Sprawdzaj ręce w górze i wskazywanie, odtwarzaj i zatrzymuj emotki po nazwie i sprawdzaj, który skrypt emotek odpowiada, niezależnie od menu emotek na serwerze.