Radyal menü
Sunucu hangi radyal menüyü çalıştırırsa çalıştırsın; koşullar, alt menüler ve basma handler’larıyla öğe ekle, kaldır ve yenile.
Radyal menü, oyuncuların hızlı aksiyonlar seçmek için bir tuşla açtığı tekerlektir (araç kapıları, emote’lar, meslek aksiyonları). Script’ler öğelerini ai-core’a ekler, ai-core da onları sunucunun çalıştırdığı radyal menüye verir: ai-radialmenu ya da desteklenen üçüncü taraf biri (tgiann-radialmenu, qb-radialmenu, codem-supreme-radialmenu, ox_lib’in radyali).
ai-core her öğeyi tutar. Radyal menü yeniden başladığında ya da sunucu sahibi başka birine geçtiğinde ai-core her öğeyi kendiliğinden yeniden ekler, bu yüzden script’in öğelerini açılışta bir kez ekler ve radyal resource’u asla izlemek zorunda kalmaz. Öğeler onları ekleyen resource durduğunda kaldırılır.
AddRadialItem
Radyal menüye bir öğe ekler ya da aynı id’ye sahip öğeyi değiştirir. Öğenin fonksiyonları (canShow, onPressed) senin resource’unun içinde çalışır.
Taraf: Client · Bekler: hayır
AddRadialItem(item: RadialItem): voidexports['ai-core']:AddRadialItem(item) -- ya da aiLib.radial.add(item)Parametreler
Prop
Type
RadialItem
Ayrıca bkz. RadialItem.
Prop
Type
Dönüş değeri
Hiçbir şey. Metin bir id ya da label olmayan bir öğe eklenmez ve ai-core resource’unun adını veren bir uyarı yazar.
Örnek
import { cache, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import { Locale } from "common";
// Açılışta bir kez: araç alt menüsünde yalnızca sürücü için bir motor anahtarı.
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 tekerlek her açıldığında çalışır: ucuz tut (cache’i, yerel bir değişkeni ya da HasItem’ı oku), içinden asla server’ı çağırma. Radyal menü yeniden başladığında aynı öğeleri tekrar ekleme; ai-core bunu zaten yapar.
RemoveRadialItem
Bir öğeyi id’sine göre kaldırır.
Taraf: Client · Bekler: hayır
RemoveRadialItem(id: string): voidexports['ai-core']:RemoveRadialItem(id) -- ya da aiLib.radial.remove(id)Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey.
Örnek
import { onPlayerData, radial } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Yalnızca polis olarak mesaideyken bir kelepçe aksiyonu.
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 onu ekleyen resource’a göre kontrol edilmez: "myscript_cuff"’ı kaldırmak, kim eklediyse onu kaldırır. Resource adınla başlayan id’ler kullan. Sık gelip giden bir öğe için canShow, ekleyip kaldırmaktan daha basittir.
RefreshRadial
Açık bir tekerleğin her canShow’unu yeniden okur, böylece oyuncu bakarken öğeler belirir ya da kaybolur. Bir canShow’un okuduğu bir şey değiştikten sonra çağır (oyuncu araca bindi, mesaiye girdi).
Taraf: Client · Bekler: hayır
RefreshRadial(): voidexports['ai-core']:RefreshRadial() -- ya da aiLib.radial.refresh()Parametreler
Yok.
Dönüş değeri
Hiçbir şey. Çalışan bir radyal menü yokken hiçbir şey yapmaz.
Örnek
import { onCache, radial } from "@aicore-fivem/lib/client";
// Araç öğeleri koltuğa bağlıdır: değiştiğinde yenile.
onCache("seat", () => radial.refresh());Eşyalar
Sunucu hangi envanteri çalıştırırsa çalıştırsın; oyuncunun envanterini aç, bir eşyayı kontrol et, eldeki silahı oku ve admin eşya seçicisini aç.
Hareketler ve emote’lar
Sunucu hangi emote menüsünü çalıştırırsa çalıştırsın; eller yukarıda ve işaret etmeyi kontrol et, emote’ları adıyla oynat ve durdur ve hangi emote script’inin cevap verdiğini gör.