AI Core
Temelai-lib

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:

Yüklemek

fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
lua54 'yes'

dependency 'ai-lib'
shared_script '@ai-lib/init.lua'
client_script 'client.lua'
server_script 'server.lua'
client.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

Signature
Notify(notification: Notification): void
Lua
exports['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

client.ts
import { notify } from "@aicore-fivem/lib/client";

notify("Your vehicle was stored", "success", 5000);
server.ts
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

Signature
ShowProgress(label: string, duration: number): void
HideProgress(): void

Prop

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

Signature
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): void

Prop

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.

Signature
CloseDialog(): void

Altyapı export’ları

Bunları lib’in kendi fonksiyonları kullanır. Sen çağırmazsın.

ExportKullanan
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

EventTarafArgümanlarNe olduğu
ai-lib:client:notifyServer’dan client’anotification: NotificationO oyuncunun ekranında bir kart gösterir. Lib server notify(source, text, kind?, duration?) bunu gönderir.
ai-lib:client:promptPressedClient (yerel)resource: string, id: stringO resource’un istemi en üstteyken etkileşim tuşuna basıldı.
ai-lib:client:cancelProgressClient (yerel)yokBir 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 });

Bu sayfada