Geliştiriciler için ai-vehiclekeys
ai-vehiclekeys’in server export’ları, cevapladığı qbx_vehiclekeys API’si ve event’leri.
Kendi script’inden anahtar vermek, almak ya da kontrol etmek için lib’in vehicleKeys.give(source, vehicle, purpose), vehicleKeys.remove ve vehicleKeys.has fonksiyonlarını kullan (server). Bunlar ai-core’un anahtar katmanından geçer ve server hangi anahtar script’ini çalıştırıyorsa onunla çalışır. Aşağıdaki export’lar, aktif anahtar sistemi ai-vehiclekeys iken bu katmanın çağırdıklarıdır.
Bütün export’lar server’dadır, senkrondur ve hem ai-vehiclekeys hem qbx_vehiclekeys adı altında cevap verir. Araç, server entity handle’ı (number) ya da plakadır (text). Plakalar normalize edilerek karşılaştırılır (boşluklar ve büyük/küçük harf önemli değildir).
import { resourceExport, callExport } from "@aicore-fivem/lib/server";
const keys = resourceExport("ai-vehiclekeys"); // tipli: HasKeys, GiveKeys, RemoveKeys
// SetLockState ve IsPlayerNearVehicle tipli değil: callExport("ai-vehiclekeys", "SetLockState", vehicle, "lock")Server export’ları
HasKeys
Bir oyuncunun bir aracın anahtarını tutup tutmadığı: sahibi olarak, sahibi olan meslek veya çetenin üyesi olarak ya da bu oturumda verilmiş bir anahtarla.
Taraf: Server · Bekler: hayır
HasKeys(source: number, vehicle: number | string): booleanlocal has = exports['ai-vehiclekeys']:HasKeys(source, vehicle)Parametreler
Prop
Type
Dönüş değeri
Oyuncuda anahtar varsa true. Aksi halde false; var olmayan bir entity için de.
Örnek
import { resourceExport } from "@aicore-fivem/lib/server";
const keys = resourceExport("ai-vehiclekeys");
onNet("myscript:openTrunk", (netId: number) => {
const source = globalThis.source;
const vehicle = NetworkGetEntityFromNetworkId(netId);
if (!keys.HasKeys(source, vehicle)) return;
// ... bagajı aç
});GiveKeys
Oyuncuya bu oturum için bir anahtar verir. Oyuncu server’dan çıkana ya da karakter değiştirene kadar onu tutar. Oyuncunun zaten tuttuğu bir anahtarı vermek hiçbir şey yapmaz.
Taraf: Server · Bekler: hayır
GiveKeys(source: number, vehicle: number | string): voidexports['ai-vehiclekeys']:GiveKeys(source, vehicle)Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey. Oyuncu şu an o araçta oturuyorsa client’ına haber verilir (ai-vehiclekeys:client:granted): motor engeli kalkar ve motor çalışır.
RemoveKeys
Oyuncudan bir oturum anahtarını alır. Sahiplik anahtarları (sahip, meslek ya da çete filosu) alınamaz: aracın sahibini takip ederler.
Taraf: Server · Bekler: hayır
RemoveKeys(source: number, vehicle: number | string): voidexports['ai-vehiclekeys']:RemoveKeys(source, vehicle)Dönüş değeri
Hiçbir şey.
SetLockState
Bir aracı server’da, hiçbir anahtar kontrolü yapmadan kilitler ya da açar.
Taraf: Server · Bekler: hayır
SetLockState(vehicle: number, state: "lock" | "unlock" | boolean | number): voidexports['ai-vehiclekeys']:SetLockState(vehicle, 'lock')Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey. Var olmayan bir entity’de hiçbir şey yapmaz.
IsPlayerNearVehicle
Bir oyuncunun bir araca 5 m mesafede durup durmadığı.
Taraf: Server · Bekler: hayır
IsPlayerNearVehicle(source: number, vehicle: number): booleanlocal near = exports['ai-vehiclekeys']:IsPlayerNearVehicle(source, vehicle)Dönüş değeri
5 m içindeyse true. Daha uzaktaysa ya da argümanlardan biri number değilse false.
Event’ler
ai-vehiclekeys’in kendi event’leri iç kullanım içindir (kendi client’ı ile server’ı arasındaki client callback’leri). Başka script’lerden çağırma.
| Ad | Tür | Ne yapar |
|---|---|---|
ai-vehiclekeys:check | client callback’i | (netId) -> boolean: oyuncunun anahtar tutup tutmadığı, bir koltuğa oturduğunda sorulur. |
ai-vehiclekeys:toggleLock | client callback’i | (netId) -> { ok, locked? }: kilit tuşu. |
ai-vehiclekeys:giveNearest | client callback’i | (netId) -> { ok }: anahtarları en yakındaki oyuncuya ver. |
ai-vehiclekeys:client:granted | server’dan client’a | (netId): o araçta otururken bir anahtar geldi; motor çalışabilir. |
Kullanılabilir eşya
lockpick, ai-core’un envanter katmanı üzerinden kullanılabilir eşya olarak kaydedilir. Eşya sadece kırıldığında harcanır.