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
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
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
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
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
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
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
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
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
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.
| Event | Sabit | Yön | Argümanlar |
|---|---|---|---|
ai-core:client:keybind | KEYBIND.announceEvent | lib’den ai-core’a | (info: KeybindInfo) bir keybind varsayılan tuşunu bekliyor. |
ai-core:client:keybindKey | KEYBIND.keyEvent | ai-core’dan lib’e | (resource: string, name: string, key: string) kaydedilecek tuş: panelin tuşu, yoksa script’in kendisininki. |
Server event’leri
ai-core’un tetiklediği her server tarafı local event - karakterler, para, meslekler, mesai, çeteler, metadata, tanımlar, eşyalar, ölümler - TypeScript ve Lua’da argümanları ve dinleyicileriyle.
Net event’ler
Bir client script’inin dinleyebileceği net event’ler (ai-core’un oyuncu verisi kanalı) ve diğer script’lerin tetiklememesi gereken ai-core’un kendi ağ trafiği.