Eşyalar
Sunucu hangi envanteri çalıştırırsa çalıştırsın; oyuncunun envanterini aç, bir eşyayı kontrol et, eldeki silahı oku ve admin eşya seçicisini aç.
Bu export’lar ai-core’un envanter katmanı üzerinden gider: onları sunucu sahibinin seçtiği envanter cevaplar (ai-inventory ya da desteklenen üçüncü taraf bir envanter). Script’in asla belirli bir envanterin export’larını çağırmaz, bu yüzden envanter değiştiğinde çalışmaya devam eder. Hiçbir envanter çalışmıyorken kontroller false / null cevabı verir ve açma hiçbir şey yapmaz.
Client yalnızca okur ve açar. Eşya verme ve alma her zaman server’da olur (server’da lib inventory ya da ai-core’un server export’ları); orada server önce oyuncuyu kontrol eder.
OpenInventory
Aktif envanterde oyuncunun kendi envanter ekranını açar (o envanterin çevresinde ne gösteriyorsa onunla: yer, bagaj, torpido).
Taraf: Client · Bekler: hayır
OpenInventory(): voidexports['ai-core']:OpenInventory() -- ya da aiLib.inventory.openInventory()Parametreler
Yok.
Dönüş değeri
Hiçbir şey. Aktif bir envanter yoksa hiçbir şey açılmaz.
Örnek
import { inventory } from "@aicore-fivem/lib/client";
RegisterCommand("bag", () => inventory.openInventory(), false);HasItem
Oyuncunun bir eşyadan en az belli sayıda tutup tutmadığını söyler. Server’dan bir şey yapmasını istemeden önce bir seçeneği (bir radyal öğe, bir target seçeneği) göstermek ya da gizlemek için kullan.
Taraf: Client · Bekler: hayır
HasItem(item: string, count?: number): booleanlocal has = exports['ai-core']:HasItem(item, count) -- ya da aiLib.inventory.hasItem(item, count)Parametreler
Prop
Type
Dönüş değeri
boolean: oyuncu en az count kadar tutuyorsa true. Daha az tutuyorsa, item string değilse ya da hiçbir envanter çalışmıyorsa false.
Örnek
import { inventory, notify, triggerServerCallback } from "@aicore-fivem/lib/client";
import { Locale } from "common";
RegisterCommand(
"picklock",
async () => {
// Oyuncu için hızlı bir kontrol; server bir şey yapmadan önce eşyayı tekrar kontrol eder.
if (!inventory.hasItem("lockpick")) return notify(Locale("NEED_LOCKPICK"), "error");
await triggerServerCallback("myscript:picklock", []);
},
false,
);Bir client cevabı bir hileci tarafından sahtelenebilir. HasItem’ı oyuncunun gördükleri için kullan; server eşyayı kendisi kontrol edip çıkarmalıdır.
GetCurrentWeapon
Aktif envanter üzerinden oyuncunun elinde tuttuğu silah eşyasını etiketi ve resmiyle döndürür.
Taraf: Client · Bekler: hayır
GetCurrentWeapon(): HeldWeapon | nulllocal weapon = exports['ai-core']:GetCurrentWeapon() -- { name, label, image? } ya da nilParametreler
Yok.
Dönüş değeri
Elde bir silah eşyası varken HeldWeapon, eller boşken ya da hiçbir envanter çalışmıyorken null.
Prop
Type
Örnek
import { inventory, onCache } from "@aicore-fivem/lib/client";
// Her karede değil, eldeki silah değiştiğinde oku.
onCache("weapon", () => {
const weapon = inventory.currentWeapon();
SendNUIMessage({ action: "weapon", data: weapon });
});OpenItemPicker
ai-core’un eşya seçicisini açar: aktif envanterdeki her eşyanın resimleriyle aranabilir bir ızgarası; oyuncu burada eşya ve adetlerden bir liste kurar. Admin araçları için tasarlanmıştır (bir oyuncuya eşya vermek): eşya listesi server’dan gelir, server da onu yalnızca admin’lere gönderir. Oyuncunun aldığı liste sonra ai-lib:client:menuResult client event’i olarak gelir.
Taraf: Client · Bekler: hayır (cevap bir event olarak gelir; lib’in itemPicker’ı senin için bekler)
OpenItemPicker(requestId: number, request: ItemPickerRequest): voidlocal list = aiLib.itemPicker({ title = 'Give items', target = 12 }) -- bekler; bir thread içinde çağırParametreler
Prop
Type
ItemPickerRequest
Ayrıca bkz. ItemPickerRequest.
Prop
Type
Dönüş değeri
Hemen hiçbir şey. Daha sonra ai-core (resource, requestId, value) ile ai-lib:client:menuResult tetikler: oyuncu aldıysa value bir PickedItem[] listesidir ({ name, count }), seçiciyi kapattıysa null’dır. Lib’in itemPicker(request)’i bu değerle Promise<PickedItem[] | null> döndürür, aiLib.itemPicker(request) ise listeyi ya da nil döndürür.
Örnek
import { itemPicker, triggerServerCallback } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Admin aracı: bir oyuncu için eşya seç, server admin’i kontrol eder ve her eşyayı verir.
export async function giveItemsTo(target: number): Promise<void> {
const list = await itemPicker({ title: Locale("GIVE_ITEMS"), target });
if (!list || list.length === 0) return;
await triggerServerCallback("myadmin:giveItems", [target, list]);
}Seçici eşyaları yalnızca admin’lere (ai.admin) gösterir: başka herkes için ızgara boştur. Server oyuncu başına 2 saniyede en fazla iki açılışa cevap verir; çevrimiçi olmayan bir target seçen admin sayılır. Oyuncunun cevabı client verisidir: server’ın bir şey vermeden önce çağıranın admin olduğunu ve her eşyayı ve adedi kontrol etmelidir.
Hava ve saat senkronu
Script’in kendi havasını ve saatini ayarlarken (bir iç mekan, bir sahne) sunucunun hava ve saat senkronunu tek bir oyuncunun oyununda duraklat, devam ettir ve duraklatılıp duraklatılmadığını oku.
Radyal menü
Sunucu hangi radyal menüyü çalıştırırsa çalıştırsın; koşullar, alt menüler ve basma handler’larıyla öğe ekle, kaldır ve yenile.