AI Core
API başvurusuEvent’ler ve durum

Framework köprüsü event’leri

O framework’ler için yazılmış script’ler çalışmaya devam etsin diye ai-core’un tetiklediği ESX, QB / Qbox ve vRP event’leri, tam argümanlarıyla, ve ai-core’un cevapladığı framework event’leri.

ai-core kendini es_extended, qb-core, qbx_core ve vrp olarak sunar, böylece o framework’ler için yazılmış script’ler değişiklik olmadan çalışır. Bunun bir parçası, ai-core’da bir şey değiştiğinde framework’ün kendi event’lerini tetiklemektir: bir karakter yüklenir, para hareket eder, bir meslek değişir. Bu sayfa köprünün tetiklediği her framework event’ini, köprünün gönderdiği argümanlarla, ve cevapladığı framework event’lerini listeler.

Yeni kod bunları kullanmamalıdır. ai-core’un kendi event’lerine (server, client) ve lib’e göre yaz: daha fazlasını taşırlar (birden fazla meslek, çeteler, mesai) ve bir framework şekline bağlı değildirler. Bu sayfa mevcut ESX / QB / vRP script’lerini çalıştırmak ve düzeltmek içindir.

Framework görünümleri oyuncu başına tek bir meslek tutar: oyuncunun mesaide olduğu meslek, yoksa ilk mesleği. ai-core’un kendisi birden fazla mesleğe izin verir. ESX’te çete yoktur; ESX’in money hesabı ai-core’un cash’idir.

QBCore ve Qbox: server

Köprü bunları server’da TriggerEvent ile tetikler. Qbox script’leri aynı QBCore adlarını dinler; köprü yalnızca Qbox’a özel hiçbir event tetiklemez.

QBCore:Server:PlayerLoaded

Bir karakter yüklendi (ai-core:playerLoaded’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("QBCore:Server:PlayerLoaded", (player: { PlayerData: { source: number; citizenid: string } }) => {
  console.log(`${player.PlayerData.citizenid} loaded (src ${player.PlayerData.source})`);
});

QBCore:Server:OnPlayerUnload

Bir karakter bırakıldı: oyuncu ayrıldı ya da karakter ekranına döndü (ai-core:playerUnloaded’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("QBCore:Server:OnPlayerUnload", (source: number) => console.log(`${source} unloaded`));

QBCore:Server:OnMoneyChange

Bir hesap bakiyesi değişti (ai-core:moneyChanged’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("QBCore:Server:OnMoneyChange", (source: number, account: string, amount: number, action: "add" | "remove", reason: string) => {
  console.log(`${source} ${action} ${amount} ${account} (${reason})`);
});

QBCore:Server:OnJobUpdate

Oyuncunun framework mesleği değişti: bir meslek eklendi ya da kaldırıldı, bir rütbe değişikliği, mesaiye girme ya da çıkma veya o mesleğin panelde düzenlenmesi (ai-core:jobsChanged, ai-core:dutyChanged, ai-core:definitionsChanged’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("QBCore:Server:OnJobUpdate", (source: number, job: { name: string; onduty: boolean; grade: { level: number } }) => {
  console.log(`${source}: ${job.name} grade ${job.grade.level}, on duty ${job.onduty}`);
});

QBCore:Server:OnGangUpdate

Oyuncunun framework çetesi değişti: aktif çete, çete listesi ya da o çetenin panelde düzenlenmesi (ai-core:gangsChanged, ai-core:activeGangChanged, ai-core:definitionsChanged’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("QBCore:Server:OnGangUpdate", (source: number, gang: { name: string }) => console.log(`${source}: gang ${gang.name}`));

QBCore ve Qbox: client

Oyuncunun kendi client’ında TriggerEvent ile tetiklenir.

EventNe zamanArgümanlar
QBCore:Client:OnPlayerLoadedKarakter dünyada duruyor.yok
QBCore:Client:OnPlayerUnloadOyuncu karakter ekranına döndü.yok
QBCore:Player:SetPlayerDataYüklemeden sonra ve her para, meslek, çete ya da metadata değişikliğinden sonra.(PlayerData: table) tüm QB PlayerData’sı.
QBCore:Client:OnJobUpdateFramework mesleği değişti.(job: table) QB meslek tablosu (server’daki gibi).
QBCore:Client:SetDutyAynı meslek için mesai değişti.(onDuty: boolean)
QBCore:Client:OnGangUpdateFramework çetesi değişti.(gang: table) QB çete tablosu.
QBCore:Client:OnMoneyChangeBir hesap bakiyesi değişti.(account: string, balance: number) ai-core’un hesap adı ve yeni bakiye.
resource/client/index.ts
on("QBCore:Client:OnPlayerLoaded", () => console.log("loaded"));
on("QBCore:Client:OnJobUpdate", (job: { name: string }) => console.log(`job: ${job.name}`));
on("QBCore:Client:SetDuty", (onDuty: boolean) => console.log(`on duty: ${onDuty}`));

QBCore:Client:OnMoneyChange, qb-core’un kendi argümanlarını değil, yeni bakiyeyi (account, balance) olarak taşır. Bunu miktar olarak okuyan bir QB script’i bakiyeyi görür. QBCore:Player:SetPlayerData’yı ya da ai-core’un onPlayerData("money", ...)’ını tercih et.

ESX: server

esx:playerLoaded

Bir karakter yüklendi (ai-core:playerLoaded’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("esx:playerLoaded", (source: number, xPlayer: { identifier: string }) => {
  console.log(`${xPlayer.identifier} loaded (src ${source})`);
});

esx:playerDropped

Oyuncu sunucudan ayrıldı (dropped sebebiyle ai-core:playerUnloaded’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("esx:playerDropped", (source: number) => console.log(`${source} left`));

esx:playerLogout

Oyuncu karakter ekranına döndü ve bağlı kalıyor (switch sebebiyle ai-core:playerUnloaded’dan).

Taraf: Server

Prop

Type

resource/server/index.ts
on("esx:playerLogout", (source: number) => console.log(`${source} switched character`));

esx:setJob

Oyuncunun framework mesleği değişti (QBCore:Server:OnJobUpdate ile aynı anlarda).

Taraf: Server

Prop

Type

resource/server/index.ts
on("esx:setJob", (source: number, job: { name: string; grade: number }) => {
  console.log(`${source}: ${job.name} grade ${job.grade}`);
});

ESX: client

Oyuncunun kendi client’ında TriggerEvent ile tetiklenir.

EventNe zamanArgümanlar
esx:playerLoadedKarakter dünyada duruyor.(PlayerData: table, isNew: false) ESX’in client PlayerData’sı.
esx:onPlayerLogoutOyuncu karakter ekranına döndü.yok
esx:setAccountMoneyBir hesap bakiyesi değişti.(account: { name, money, label }); ai-core’un cash’i için name "money"’dir.
esx:setJobFramework mesleği değişti.(job: table, lastJob: table | nil) ESX meslek tabloları (server’daki gibi).
esx:setPlayerDataESX.SetPlayerData çalıştı: ped değişti (model değişimi, yeniden doğma) ya da metadata değişti.(key: string, value: any)
resource/client/index.ts
on("esx:playerLoaded", () => console.log("loaded"));
on("esx:setAccountMoney", (account: { name: string; money: number }) => console.log(`${account.name}: ${account.money}`));

vRP

ai-core’un vRP köprüsü vRP’nin server event’lerini tetikler. vRP user_id’si ai-core’un karakter id’sidir.

vRP:playerJoin

Bir karakter yüklendi. (vRP bunu bağlanmada tetikler; ai-core id’yi ancak bir karakter yüklendiğinde bilir.)

Taraf: Server

Prop

Type

resource/server/index.ts
on("vRP:playerJoin", (userId: number, source: number, name: string) => console.log(`${name} joined as user ${userId} (src ${source})`));

vRP:playerSpawn

Karakter dünyaya kondu. vRP gibi, ai-core onu doğurduktan 2 saniye sonra tetiklenir. Yalnızca bir karakter yüklemesinin doğuşu için: ölümden sonraki yeniden doğmalar ölüm script’inden gelir ve bunu tetiklemez.

Taraf: Server

Prop

Type

resource/server/index.ts
on("vRP:playerSpawn", (userId: number, source: number, firstSpawn: boolean) => {
  if (firstSpawn) console.log(`user ${userId} spawned (src ${source})`);
});

vRP:playerLeave

Bir karakter bırakıldı: oyuncu ayrıldı ya da karakter değiştirdi.

Taraf: Server

Prop

Type

resource/server/index.ts
on("vRP:playerLeave", (userId: number, source: number) => console.log(`user ${userId} left (src ${source})`));

vRP:playerJoinGroup and vRP:playerLeaveGroup

Karakter bir vRP grubu kazandı ya da kaybetti. Gruplar ai-core’un meslekleri, aktif çete, sunucu sahibinin panelde eşlediği grup adları ("vRP scripts" sekmesi) ve vRP script’lerinin eklediği ek gruplardır. Her değişiklik için tetiklenir, ai-core’un ya da başka bir script’in vRP olmadan yaptığı değişiklikler için de.

Taraf: Server

Prop

Type

resource/server/index.ts
on("vRP:playerJoinGroup", (userId: number, group: string, gtype?: string) => console.log(`user ${userId} joined ${group} (${gtype ?? "group"})`));
on("vRP:playerLeaveGroup", (userId: number, group: string) => console.log(`user ${userId} left ${group}`));

vRP 2 ve 3 eklentileri kendi eklenti event’lerini (characterLoad, playerJoin, characterUnload, playerLeave, playerSpawn, playerDeath, playerMoneyUpdate, playerJoinGroup / playerLeaveGroup ve diğerleri) köprüden FiveM event’leri olarak değil, vRP’nin eklenti event sistemi üzerinden alır. Tetiklenmeyenler: vRP:save, vRP:playerRejoin, vRPcli:playerSpawned.

ai-core’un cevapladığı framework event’leri

Bir framework için yazılmış script’ler bu event’leri framework’ün cevaplamasını bekleyerek gönderir. Onun yerine ai-core cevaplar.

EventTarafai-core ne yapar
QBCore:GetObject, esx:getSharedObjectikisi deCallback’i core nesnesiyle (QBCore / ESX) çağırır.
QBCore:Server:TriggerCallback, esx:triggerServerCallbackserver (client’lardan)CreateCallback / RegisterServerCallback ile kaydedilmiş framework callback’ini çalıştırır ve cevaplar. Oyuncu başına herhangi bir 10 saniyede en fazla 30 istek.
QBCore:Notify, esx:showNotification, esx:showAdvancedNotification, ESX:Notifyclient (server’dan)ai-lib’in bildirimini gösterir.
esx:showHelpNotification, ESX:TextUI, ESX:HideUI, qb-core:client:DrawText, qb-core:client:ChangeText, qb-core:client:HideText, qb-core:client:KeyPressedclientai-lib’in istemini gösterir ya da gizler.
qb-menu:client:openMenu, qb-menu:client:closeMenuclientai-lib’in menüsünü qb-menu öğeleriyle açar ya da kapatır.
progressbar:client:cancelclientKöprünün ilerleme çubuğunu iptal eder.
police:server:policeAlertserverOyuncunun konumunda aktif ihbar sistemine bir polis ihbarı gönderir. Client’lar (text) gönderir (oyuncu başına 10 saniyede bir); server script’leri onu (text, camId, playerSource) ile TriggerEvent eder.
qb-weathersync:client:DisableSync / EnableSync, cd_easytime:PauseSync, vSync:toggleclientHava ve saat senkronunun duraklatma sebepleri olarak sayılır (bkz. Hava ve saat senkronu).

Bu sayfada