AI Core
API başvurusuai-core client export’ları

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

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

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

İmza
RemoveRadialItem(id: string): void
Lua
exports['ai-core']:RemoveRadialItem(id) -- ya da aiLib.radial.remove(id)

Parametreler

Prop

Type

Dönüş değeri

Hiçbir şey.

Örnek

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

İmza
RefreshRadial(): void
Lua
exports['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

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

Bu sayfada