AI Core
API başvurusuai-core client export’ları

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

İmza
OpenInventory(): void
Lua
exports['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

resource/client/index.ts
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

İmza
HasItem(item: string, count?: number): boolean
Lua
local 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

resource/client/index.ts
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

İmza
GetCurrentWeapon(): HeldWeapon | null
Lua
local weapon = exports['ai-core']:GetCurrentWeapon() -- { name, label, image? } ya da nil

Parametreler

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

resource/client/weapon.ts
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)

İmza
OpenItemPicker(requestId: number, request: ItemPickerRequest): void
Lua
local list = aiLib.itemPicker({ title = 'Give items', target = 12 }) -- bekler; bir thread içinde çağır

Parametreler

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

resource/client/admin.ts
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.

Bu sayfada