Geliştiriciler için ai-smallresources
ai-smallresources’in client export’ları, emniyet kemeri event’i, state bag’leri ve metadata’sı.
Emniyet kemerini ya da jestleri kendi script’inden okumak için lib’in seatbelt.isOn() / seatbelt.onChange(fn) ve gestures.isHandsUp() / gestures.isPointing() fonksiyonlarını kullan (client; Lua’da aiLib.seatbelt, aiLib.gestures). Bunlar ai-core üzerinden gider ve hangi emniyet kemeri ya da emote script’i çalışıyorsa onunla çalışır. Aşağıdaki export’lar, ai-smallresources cevap verirken ai-core’un okuduklarıdır.
Üç export’un hepsi client’tadır, senkrondur ve yerel oyuncuyu okur. GetSeatbelt, @aicore-fivem/shared içinde AiSmallResourcesClientExports olarak tiplenmiştir; IsHandsUp ve IsPointing tiplenmemiştir (callExport kullan).
import { resourceExport, callExport } from "@aicore-fivem/lib/client";
const small = resourceExport("ai-smallresources");Client export’ları
GetSeatbelt
Yerel oyuncunun emniyet kemeri takıp takmadığı.
Taraf: Client · Bekler: hayır
GetSeatbelt(): boolean | nulllocal worn = exports['ai-smallresources']:GetSeatbelt() -- true, false ya da nilDönüş değeri
Kemer takılıyken true, değilken false. Seatbelt özelliği panelde kapalıyken ya da oyuncu emniyet kemeri olan bir araçta değilken null.
Örnek
import { seatbelt } from "@aicore-fivem/lib/client";
// Bir HUD’un kemer ikonu: bir kez oku, sonra değişiklikleri takip et.
let worn = seatbelt.isOn();
seatbelt.onChange((value) => {
worn = value;
});Bir eylemde ya da araç değişiminde oku, asla her karede okuma.
IsHandsUp
Yerel oyuncunun ellerinin yukarıda olup olmadığı (X jesti).
Taraf: Client · Bekler: hayır
IsHandsUp(): booleanlocal up = exports['ai-smallresources']:IsHandsUp()Dönüş değeri
Eller yukarıdayken true, aksi halde false.
IsPointing
Yerel oyuncunun işaret edip etmediği (B jesti).
Taraf: Client · Bekler: hayır
IsPointing(): booleanlocal pointing = exports['ai-smallresources']:IsPointing()Dönüş değeri
İşaret ederken true, aksi halde false.
Event’ler
ai-smallresources:seatbelt
Emniyet kemeri değiştiğinde yerel client’ta tetiklenir. Adı @aicore-fivem/shared içinde SEATBELT_EVENT’tir. ai-core bunu kendi emniyet kemeri event’i olarak iletir; lib’in seatbelt.onChange fonksiyonu onu dinler, onu tercih et.
Taraf: Client (yerel event)
Prop
Type
AddEventHandler('ai-smallresources:seatbelt', function(worn)
print('seat belt', worn)
end)ai-smallresources’in diğer her event’i dahilidir (kendi client’ı ve server’ı).
State bag’ler ve metadata
| Ad | Nerede | Tip | Anlamı |
|---|---|---|---|
aiHold | oyuncu | string | false | Oyuncunun tuttuğu haber eşyası (newscam, newsmic, newsboom). |
aiCarrying | oyuncu | number | Oyuncu birini taşıyor (onun server id’si). |
aiCarriedBy | oyuncu | number | Oyuncuyu biri taşıyor (onun server id’si). |
aiDiving | oyuncu | boolean | Oyuncu dalış ekipmanını takıyor. |
aiRealPlate | araç | string | Sahte plaka takılıyken gerçek plaka. |
aiMoored | araç | boolean | Tekne bir iskeleye bağlı. |
diveOxygen | karakter metadata’sı (ai-core) | number | Dalış tüpünde kalan hava saniyesi. |
aiPlayerCount / aiMaxPlayers | GlobalState | number | Çevrim içi oyuncular ve slotlar; Discord Rich Presence açıkken ayarlanır. |
// Server: bir aracın gerçek plakası, sahte olsun ya da olmasın.
export function realPlate(vehicle: number): string {
const real = Entity(vehicle).state.aiRealPlate as string | undefined;
return real ?? GetVehicleNumberPlateText(vehicle);
}Kullanılabilir eşyalar
AI Core’un envanter katmanı üzerinden kaydedilir, bu yüzden hangi envanter çalışıyorsa onunla çalışır: binoculars, firework1-firework4, newscam, newsmic, newsboom, fakeplate, notepad, note (metadata text ve description), diving_gear, diving_fill.