Geliştiriciler için ai-lib
ai-lib’i bir Lua ya da JavaScript resource’unda yüklemek, lib referansının nerede olduğu ve ai-lib’in kendi client export’ları ile event’leri.
ai-lib, npm paketini paketlemeyen resource’lar için @aicore-fivem/lib’i taşır. Fonksiyonların kendisi bir kez, lib referansında anlatılır:
- Lib: genel bakış
- Lib: client fonksiyonları
- Lib: server fonksiyonları
- Lib: shared fonksiyonlar
- Lua (
aiLib): Lua karşılıkları ve argüman sıraları
Yüklemek
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
dependency 'ai-lib'
shared_script '@ai-lib/init.lua'
client_script 'client.lua'
server_script 'server.lua'local L = aiLib.locale()
aiLib.notify(L('WELCOME'), 'success')Modüller ilk kullanımda (aiLib.Points, aiLib.progress...) senin resource’unun içinde yüklenir; böylece oluşturduğun noktalar, tuşlar ve callback’ler senin resource’una aittir ve o durunca gider. Bekleyen fonksiyonlar (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor) bir thread ya da event handler içinde çalışmalı.
Client export’ları
Lib’in notify, progress, showPrompt, menu, input, skillCheck ve lockpick fonksiyonları bunları senin yerine çağırır; lib fonksiyonlarını kullan. @aicore-fivem/shared içinde AiLibClientExports olarak tiplenmişlerdir (resourceExport("ai-lib")). İstemler, menüler ve bölgeler çağıran resource’a aittir ve o durunca gider.
Notify
Bu oyuncunun ekranında bir bildirim kartı gösterir.
Taraf: Client · Bekler: hayır
Notify(notification: Notification): voidexports['ai-lib']:Notify({ text = 'Saved', kind = 'success' })
-- lib üzerinden aynısı: aiLib.notify('Saved', 'success')Notification
Prop
Type
Dönüş değeri
Hiçbir şey. text olmayan bir bildirim atılır. Sunucu sahibi panelde başka bir bildirim script’i seçtiyse kart oraya gider; o script kartı almazsa ai-lib çizer.
Örnek
import { notify } from "@aicore-fivem/lib/client";
notify("Your vehicle was stored", "success", 5000);import { notify, onClientEvent } from "@aicore-fivem/lib/server";
// Aynı kart tek bir oyuncunun ekranında, server’dan gönderilir.
onClientEvent("myscript:collectPay", (source) => {
notify(source, "You were paid $500", "info");
});ShowProgress and HideProgress
İlerleme çubuğunu bir süre gösterir ya da gizler. Sadece çubuk: eylemi, animasyonunu ve iptal mantığını çağıran script yürütür. Bunun yerine bunların hepsini yapan lib progress (client) ya da progressFor (server) fonksiyonunu kullan.
Taraf: Client · Bekler: hayır
ShowProgress(label: string, duration: number): void
HideProgress(): voidProp
Type
Çubuk görünürken iptal tuşu (Backspace) yerel ai-lib:client:cancelProgress event’ini tetikler.
ShowPrompt and HidePrompt
Çağıran resource’un istemlerinden birini gösterir ya da günceller, veya gizler. Lib showPrompt / hidePrompt kullan, ya da daha iyisi, istemleri mesafeye göre senin yerine gösterip gizleyen lib Points.
Taraf: Client · Bekler: hayır
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): voidProp
Type
İstemin en üstteyken oyuncu etkileşim tuşuna bastığında yerel ai-lib:client:promptPressed (resource, id) event’i tetiklenir; lib onPromptPressed onu senin resource’un için süzer.
CloseDialog
Çağıran resource’un açık menüsünü ya da giriş penceresini kapatır. Bekleyen menu.show / input çağrısı, oyuncu kapatmış gibi null cevap verir. Taraf: Client · Bekler: hayır.
CloseDialog(): voidAltyapı export’ları
Bunları lib’in kendi fonksiyonları kullanır. Sen çağırmazsın.
| Export | Kullanan |
|---|---|
OpenMenu(requestId, request), OpenInput(requestId, request), OpenMinigame(requestId, request) | lib menu.show, input, skillCheck, lockpick. Cevaplar istek id’siyle ai-lib:client:menuResult / inputResult olarak geri gelir. |
AddZone(key, shape, interval, inside), RemoveZone(key) | JavaScript resource’larında lib Zones: ai-lib her resource’un bölgelerini tek bir zamanlayıcıyla kontrol eder ve ai-lib:client:zone (owner, key, inside) ile cevap verir. |
AddModelPoint(key, def, entity), RemoveModelPoint(key) | İstem modunda lib Points.addModel / addVehicle: ai-lib en yakın objeyi bulur ve ai-lib:client:modelPoint (owner, key, entity) ile cevap verir. |
Event’ler
| Event | Taraf | Argümanlar | Ne olduğu |
|---|---|---|---|
ai-lib:client:notify | Server’dan client’a | notification: Notification | O oyuncunun ekranında bir kart gösterir. Lib server notify(source, text, kind?, duration?) bunu gönderir. |
ai-lib:client:promptPressed | Client (yerel) | resource: string, id: string | O resource’un istemi en üstteyken etkileşim tuşuna basıldı. |
ai-lib:client:cancelProgress | Client (yerel) | yok | Bir ilerleme çubuğu görünürken iptal tuşuna basıldı. |
// Server: lib olmadan bir bildirim.
emitNet("ai-lib:client:notify", source, { text: "Welcome to the city", kind: "info", duration: 6000 });ai-lib
Her script’in kullandığı ortak oyuncu arayüzü (bildirimler, ilerleme çubuğu, istemler, menüler, giriş pencereleri, mini oyunlar) ve Lua ile JavaScript resource’ları için AI Core yardımcıları.
ai-loading
Oyun yüklenirken oyuncuların gördüğü yükleme ekranı; sunucu adın, bir arka plan, yükleme ilerlemesi ve ipuçlarıyla.