Yalnızca Lua’ya özgü yardımcılar
aiLib.playerData, aiLib.online, aiLib.isAdmin ve aiLib.menu tablosu: Lua biçimi TypeScript lib’inden farklı olan aiLib fonksiyonları.
aiLib fonksiyonlarının çoğu bir TypeScript fonksiyonunun Lua karşılığıdır ve onun yanında bir Lua sekmesiyle belgelenir (bkz. Tüm aiLib fonksiyonları). Bu sayfadakilerin Lua’da farklı bir adı, biçimi ya da davranışı vardır; bu yüzden burada belgelenirler.
Client: oyuncu verisi
aiLib.playerData.get
ai-core’un yerel oyuncunun verisinin bir anahtarı için gönderdiği son değer. Resource’un başladığından beri hiçbir şey gelmediyse ai-core’a bir kez sorar (GetPlayerData) ve cevabı tutar.
Taraf: Client · Bekler: hayır
local value = aiLib.playerData.get(key)TypeScript: aynı veri getPlayerData(key) ile (bkz. Üyelik ve oyuncu verisi).
Parametreler
Prop
Type
Dönüş değeri
Değer: character, money ({ cash = 500, bank = 5000 }), jobs, job, gangs ve metadata için bir tablo; duty ve activeGang için bir string ya da nil. Hiçbir karakter yüklü değilken ya da ai-core çalışmıyorken nil.
Örnek
RegisterCommand('cash', function()
local money = aiLib.playerData.get('money') or {}
aiLib.notify(('Cash: $%s'):format(aiLib.numbers.groupDigits(money.cash or 0)), 'info')
end, false)aiLib.playerData.onChange
ai-core yerel oyuncu için bir anahtarın yeni bir değerini her gönderdiğinde (bir meslek değişikliği, para, göreve başlamak) bir fonksiyon çalıştırır. money ve metadata için ai-core yalnızca değişen girdileri gönderir; aiLib onları birleştirir, böylece handler’ın her zaman tablonun tamamını alır.
Taraf: Client · Bekler: hayır
aiLib.playerData.onChange(key, function(value) end)TypeScript: onPlayerData(key, handler) (bkz. Üyelik ve oyuncu verisi).
Parametreler
Prop
Type
Dönüş değeri
Hiçbir şey. Handler’ı kaldırmanın bir yolu yoktur; resource’unla birlikte kaldırılır.
Örnek
aiLib.playerData.onChange('duty', function(job)
if job == 'police' then
aiLib.notify('You are now on duty', 'success')
end
end)Server: online oyuncular
aiLib.online yüklü oyuncuları ai-core’un export’ları üzerinden okur; okuma başına bir export çağrısı. Bir aksiyon olduğunda (bir komut, bir callback) yapılan aramalar içindir, her tick için değil. TypeScript online’ı daha fazla okuyucu ve farklı dönüş biçimleri olan yerel bir ayna tutar (bkz. Oyuncular).
aiLib.online.character
Bir oyuncunun yüklü karakteri.
Taraf: Server · Bekler: hayır
local character = aiLib.online.character(src)Parametreler
Prop
Type
Dönüş değeri
Bir CharacterInfo tablosu (id, citizenid, firstname, lastname, birthdate, sex, nationality...) ya da oyuncunun yüklü karakteri yoksa nil.
Örnek
aiLib.addCommand('whoami', { help = 'Shows your character id' }, function(source)
local character = aiLib.online.character(source)
if not character then return end
aiLib.notify(source, ('Character #%d (%s)'):format(character.id, character.citizenid), 'info')
end)aiLib.online.name
Karakterin "Ad Soyad"ı, yoksa oyuncunun FiveM adı.
Taraf: Server · Bekler: hayır
local name = aiLib.online.name(src, fallback)TypeScript: online.name(source, { fallback }) bir boolean yerine bir seçenek tablosu alır.
Parametreler
Prop
Type
Dönüş değeri
string: karakter adı, yoksa FiveM adı (ya da fallback = false ile veya oyuncu gittiyse "").
Örnek
print(('%s opened the shop'):format(aiLib.online.name(source)))aiLib.online.jobs
Görevde olsun ya da olmasın bir oyuncunun her mesleği.
Taraf: Server · Bekler: hayır
local jobs = aiLib.online.jobs(src)TypeScript: online.jobs(source) yalnızca meslek adlarını döndürür; Lua üyelik tablolarını döndürür.
Parametreler
Prop
Type
Dönüş değeri
JobMembership tablolarından bir liste ({ job = 'police', grade = 2 }). Oyuncunun mesleği ya da karakteri yoksa boş bir liste.
Örnek
for _, membership in ipairs(aiLib.online.jobs(source)) do
print(membership.job, membership.grade)
endaiLib.online.gangs
Bir oyuncunun her çetesi.
Taraf: Server · Bekler: hayır
local gangs = aiLib.online.gangs(src)TypeScript: online.gangs(source) yalnızca çete adlarını döndürür.
Parametreler
Prop
Type
Dönüş değeri
GangMembership tablolarından bir liste ({ gang = 'ballas', grade = 0 }) ya da boş bir liste.
Örnek
local inAGang = #aiLib.online.gangs(source) > 0aiLib.online.jobGrade
Bir oyuncunun bir meslekteki rütbesi.
Taraf: Server · Bekler: hayır
local grade = aiLib.online.jobGrade(src, job)Parametreler
Prop
Type
Dönüş değeri
integer (0 = en düşük rütbe) ya da oyuncu o meslekte değilse nil.
Örnek
local grade = aiLib.online.jobGrade(source, 'police')
if not grade or grade < 2 then return aiLib.fail('NOT_ALLOWED') endaiLib.online.gangGrade
Bir oyuncunun bir çetedeki rütbesi.
Taraf: Server · Bekler: hayır
local grade = aiLib.online.gangGrade(src, gang)Parametreler
Prop
Type
Dönüş değeri
integer ya da oyuncu o çetede değilse nil.
Örnek
local isBoss = (aiLib.online.gangGrade(source, 'ballas') or -1) >= 3aiLib.online.dutyJob
Bir oyuncunun görevde olduğu meslek.
Taraf: Server · Bekler: hayır
local job = aiLib.online.dutyJob(src)Parametreler
Prop
Type
Dönüş değeri
Meslek adı ya da görevde değilse nil.
Örnek
if aiLib.online.dutyJob(source) ~= 'police' then return aiLib.fail('NOT_ON_DUTY') endaiLib.online.sources
Yüklü karakteri olan her oyuncunun server id’si.
Taraf: Server · Bekler: hayır
local players = aiLib.online.sources()Dönüş değeri
Bir server id listesi (kimse yüklü değilse ya da ai-core çalışmıyorsa boş).
Örnek
for _, src in ipairs(aiLib.online.sources()) do
if aiLib.online.dutyJob(src) == 'police' then
aiLib.notify(src, 'Robbery in progress', 'warning')
end
endHer çağrı ai-core’a bir export çağrısıdır. Her oyuncuyu dolaşan bir döngüde, ihtiyacın olanı oyuncu başına bir kez oku ve onu asla her karede çalıştırma. "Görevde kaç kişi var" için bunun yerine ai:duty:<job> global state’ini (GlobalState['ai:duty:police']) oku.
Server: yetkiler
aiLib.isAdmin
Bir oyuncunun ai-core admin’i (ACE ai.admin) olup olmadığı ya da belirttiğin ACE’ye sahip olup olmadığı.
Taraf: Server · Bekler: hayır
local allowed = aiLib.isAdmin(src, ace)TypeScript: isAdmin(ace?) bunun yerine onClientCallback / onClientEvent için bir korumadır (bkz. Client girdisi). Lua’da bir callback’i ace seçeneğiyle kısıtla ya da aiLib.isAdmin’i kendin çağır.
Parametreler
Prop
Type
Dönüş değeri
Oyuncunun ACE’si varsa true, yoksa false.
Örnek
RegisterCommand('fixall', function(source)
if not aiLib.isAdmin(source) then return end
-- yalnızca admin’e özel iş burada
end, false)Client: menü tablosu
aiLib.menu
Pencereler tek bir tabloda durur. Üst seviyedeki adlar, kısa çağrılar için tutulan aynı fonksiyonlardır:
aiLib.menu üzerinde | Şununla aynı | Bekler | Cevaplar |
|---|---|---|---|
menu.show(request, listeners?) | (yalnızca burada) | evet | Seçilen öğe id’si, bir alt menünün geri dönüşü için '__back' ya da kapatıldığında nil. |
menu.input(request) | aiLib.input(request) | evet | Alan name’ine göre değerlerin bir tablosu ya da kapatıldığında nil. |
menu.itemPicker(request) | aiLib.itemPicker(request) | evet | { name, count } listesi ya da nil. Yalnızca admin araçları. |
menu.skillCheck(difficulty, keys?) | aiLib.skillCheck(difficulty, keys?) | evet | Her aşama tutturulduysa true. |
menu.lockpick(options?) | aiLib.lockpick(options?) | evet | 'opened', 'broken' ya da 'cancelled'. |
İstek biçimleri MenuRequest, InputRequest, ItemPickerRequest ve SkillDifficulty’dir. Her seçenek ve dinleyici, TypeScript karşılıklarıyla birlikte Ortak arayüz sayfasında belgelenir.
RegisterCommand('fine', function()
local values = aiLib.input({
title = 'Write a fine',
confirm = 'Send',
fields = {
{ name = 'amount', label = 'Amount', type = 'number', min = 1, max = 10000 },
{ name = 'reason', label = 'Reason', type = 'text', maxLength = 80 },
},
})
if values then aiLib.callAction('mypolice:fine', { values.amount, values.reason }, { fallback = 'FINE_FAILED' }) end
end, false)Lua için lib
aiLib: bir Lua resource’unun ai-lib’i nasıl yüklediği, ne zaman thread kullanılacağı, Lua vektörlerinin ve tablolarının TypeScript’e nasıl geçtiği ve her fonksiyonun nerede belgelendiği.
Tüm aiLib fonksiyonları
aiLib üyelerinin tam listesi: taraf, çağrının bekleyip beklemediği ve onu Lua sekmesiyle belgeleyen sayfa.