AI Core
API başvurusuEvent’ler ve durum

Client event’leri

ai-core’un tetiklediği her client tarafı local event - yerel karakter yüklendi ya da kaldırıldı, yerde olma durumu, önbellekteki değerler, HUD görünürlüğü, dünya senkronu, meslek tanımları, tuş ipuçları, emniyet kemeri - argümanları ve dinleyicileriyle.

ai-core’un client’ı bu event’leri oyuncunun kendi oyununda TriggerEvent ile tetikler. O oyuncunun her client resource’u onları duyar; diğer oyuncular asla duymaz. Yalnızca yerel oyuncuyu anlatırlar.

ai-core:client:playerLoaded

Yerel oyuncunun karakteri dünyada duruyor. Karakter başına client işini burada başlat (HUD değerleri, meslek blip’leri, döngüler).

Taraf: Client · Sabit: CORE.clientPlayerLoadedEvent

Argümanlar

Prop

Type

Dinleyici

resource/client/index.ts
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE, type AiPlayerData } from "@aicore-fivem/shared";

const core = resourceExport("ai-core");

function start(data: AiPlayerData): void {
  console.log(`hello ${data.character?.firstname}, cash ${data.money.cash ?? 0}`);
}

// Oyuncu zaten dünyadayken bir resource restart’ını da kapsar.
const now = core.GetPlayerData();
if (now) start(now);
on(CORE.clientPlayerLoadedEvent, start);

ai-core:client:playerUnloaded

Yerel karakter bırakıldı: oyuncu karakter ekranına döndü. Karakter başına işi durdur ve o karakter için tuttuklarını temizle. (Oyuncu sunucudan ayrıldığında oyunu kapanır; hiçbir şey tetiklenmez.)

Taraf: Client · Sabit: CORE.clientPlayerUnloadedEvent

Argümanlar

Yok.

Dinleyici

resource/client/index.ts
import { CORE } from "@aicore-fivem/shared";

on(CORE.clientPlayerUnloadedEvent, () => {
  SendNUIMessage({ action: "reset" });
});

ai-core:client:dead

Hangi ölüm script’i çalışıyorsa onda yerel oyuncu yere düştü (ölü ya da last stand) veya ayağa kalktı. Yalnızca bir değişiklikte tetiklenir.

Taraf: Client · Sabit: CORE.clientDeadEvent · Lib: medical.onChange

Argümanlar

Prop

Type

Dinleyici

resource/client/index.ts
import { medical } from "@aicore-fivem/lib/client";

// on(CORE.clientDeadEvent, ...) ile aynı.
medical.onChange((dead) => {
  if (dead) SendNUIMessage({ action: "close" });
});

ai-core:client:cache

Yerel oyuncunun önbellekteki bir değeri değişti. ai-core’daki tek bir izleyici her resource için ped’i, aracı, koltuğu ve silahı okur ve bunu yalnızca bir değer değiştiğinde tetikler, böylece hiçbir resource onları yoklamak zorunda kalmaz. Lib’in cache ve onCache’i (Lua’da aiLib.cache ve aiLib.cache.onChange) bunun üstüne kurulmuştur; onları kullan.

Taraf: Client · Sabit: CORE.clientCacheEvent

Argümanlar

Prop

Type

Dinleyici

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

onCache("vehicle", (vehicle, old) => {
  if (vehicle !== false) console.log(`entered vehicle ${vehicle}`);
  else if (old !== false) console.log("left the vehicle");
});

ai-core:client:hudVisible

HUD’lar görünmeli ya da gizlenmeli: tam ekran bir arayüz açıldı ya da sonuncusu kapandı. Bir HUD resource’u bunu dinler.

Taraf: Client · Sabit: CORE.clientHudVisibleEvent · Lib: hud.onChange

Argümanlar

Prop

Type

Dinleyici

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

hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));

ai-core:client:worldSync

Hava ve saat senkronu duraklatıldı ya da yeniden çalışıyor. Bir hava script’i bunu dinler. Bkz. Hava ve saat senkronu.

Taraf: Client · Sabit: CORE.clientWorldSyncEvent

Argümanlar

Prop

Type

Dinleyici

resource/client/weather.ts
import { CORE } from "@aicore-fivem/shared";

on(CORE.clientWorldSyncEvent, (paused: boolean) => {
  console.log(paused ? "weather sync paused" : "weather sync running");
});

ai-core:client:definitions

Admin panelinde bir meslek ya da çete eklendi, değiştirildi veya silindi. Her client’ta, değişen her meslek ya da çete için bir kez tetiklenir. GetDefinitions export’uyla birlikte kullan.

Taraf: Client · Sabit: CORE.clientDefinitionsEvent

Argümanlar

Prop

Type

Dinleyici

GetDefinitions örneğine bak.

ai-core:client:characterPortrait

Karakter ekranındaki bir karakter kartı için bir portre resmi. Bir kıyafet script’i (ai-appearance) bunu tetikler; ai-core’un karakter ekranı dinler ve resmi gösterir. Yalnızca bir kıyafet script’i yazıyorsan kendin tetikle.

Taraf: Client · Sabit: CORE.clientCharacterPortraitEvent · Tetikleyen: kıyafet script’i, dinleyen ai-core

Argümanlar

Prop

Type

Dinleyici

resource/client/portraits.ts
import { CORE } from "@aicore-fivem/shared";

// Bir kıyafet script’i karakter ekranına bir portre verir.
export function sendPortrait(charId: number, txd: string): void {
  emit(CORE.clientCharacterPortraitEvent, charId, `https://nui-img/${txd}/${txd}`);
}

ai-core:client:keyHints

HUD’ların göstermesi gereken tuş ipuçları listesi değişti. Tüm yeni listeyi taşır. GetKeyHints export’uyla birlikte kullan.

Taraf: Client · Sabit: KEY_HINTS.changedEvent

Argümanlar

Prop

Type

Dinleyici

GetKeyHints örneğine bak.

ai-core:client:seatbelt

ai-core’un okuduğu emniyet kemeri script’i hangisiyse onda yerel oyuncunun emniyet kemeri değişti. Değişiklikleri bildiren script’lerden (ai-smallresources, qbx_seatbelt) tetiklenir; bir HUD’ın kendi kemeriyle ihtiyacın olduğunda GetSeatbelt’i oku.

Taraf: Client · Sabit: CORE.clientSeatbeltEvent · Lib: seatbelt.onChange

Argümanlar

Prop

Type

Dinleyici

resource/client/hud.ts
import { seatbelt } from "@aicore-fivem/lib/client";

seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));

ai-smallresources:seatbelt

ai-smallresources’un kendi emniyet kemeri event’i. Yalnızca ai-smallresources’u destekleyen HUD’lar bunu dinler. Yeni kod, desteklenen her emniyet kemeri script’iyle çalışan yukarıdaki ai-core:client:seatbelt’i dinlemelidir.

Taraf: Client · Sabit: SEATBELT_EVENT

Argümanlar

Prop

Type

Dinleyici

resource/client/hud.ts
import { SEATBELT_EVENT } from "@aicore-fivem/shared";

on(SEATBELT_EVENT, (worn: boolean | null) => console.log(`belt: ${worn}`));

Dahili client event’leri

Lib’in Keybind’ı ai-core’un client’ıyla iki local event ile konuşur. Onları kendin tetikleme ya da cevaplama; Keybind (TS) ya da aiLib.Keybind (Lua) kullan.

EventSabitYönArgümanlar
ai-core:client:keybindKEYBIND.announceEventlib’den ai-core’a(info: KeybindInfo) bir keybind varsayılan tuşunu bekliyor.
ai-core:client:keybindKeyKEYBIND.keyEventai-core’dan lib’e(resource: string, name: string, key: string) kaydedilecek tuş: panelin tuşu, yoksa script’in kendisininki.

Bu sayfada