Lua için lib
aiLib - Lua resource’lar için lib, ox_lib gibi ai-lib’den yüklenir.
ai-lib, lib’in Lua’ya taşınmış halini taşır. Onu yükleyen resource’un içinde çalışır; noktalar, tuşlar, komutlar ve callback’ler o resource’a aittir ve onunla gider.
dependency 'ai-lib'
shared_script '@ai-lib/init.lua'Modüller ilk kullanımda yüklenir: aiLib.notify(...), aiLib.Points.new(), aiLib.addCommand(...). Bekleyen çağrılar (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor) bir thread içinde çalışmalı. Tipler ai-lib’in init.lua dosyasındaki AiLib sınıfında.
Bundler kullanmayan JavaScript resource’lar bunun yerine @ai-lib/dist/client.js / server.js yükler: TypeScript lib’in /shared ve /client ya da /server yardımcılarıyla aynı aiLib globali.
İki taraf
| Fonksiyon | Ne |
|---|---|
aiLib.side | 'client' ya da 'server'. |
aiLib.every(ms, fn, options?) | Resource’un tek zamanlayıcı thread’inde periyodik iş (0 = her kare); job:set(active), job:stop(), job.running. Bir iş asla Wait etmez. |
aiLib.waitFor(check, timeout?, interval?) | check bir değer döndürene kadar bekler. |
aiLib.formatText(text, ...) | {0} yer tutucuları. |
aiLib.locale(resource?) | t(key, ...) ve birleşik dil tablosunu döndürür. |
aiLib.fail(error) | Sunucu eylemleri için { ok = false, error = error }. |
aiLib.numbers.round(value, decimals?), groupDigits(value, separator?), headingTo(from, to) | Sayı yardımcıları. |
aiLib.stripGameText(text) | HTML etiketleri ve GTA kodları silinir. |
aiLib.notify(...) | Client (text, kind?, duration?); sunucu (source, text, kind?, duration?). |
aiLib.inventory, aiLib.world, aiLib.appearance | AI Core üzerinden; üyeleri tarafa göre değişir (aşağıda). |
Client
| Fonksiyon | Ne |
|---|---|
aiLib.cache | ped, playerId, serverId, vehicle, seat, weapon; cache.onChange(key, handler). |
aiLib.playerData.get(key), playerData.onChange(key, handler) | ai-core’un oyuncu verisi (character, money, jobs, duty, gangs, activeGang). |
aiLib.triggerServerCallback(name, args?, timeout?) | Sunucuya sorar; cevabı ve bir hatayı döndürür. |
aiLib.onServerCallback(name, handler), aiLib.onServerEvent(name, handler) | Sunucuyu cevaplar, sunucu olaylarını dinler. |
aiLib.callAction(name, args?, { fallback, timeout?, silent? }) | Bir sunucu eylemi çalıştırır, çevrilmiş reddi gösterir, ok cevabını ya da nil döndürür. |
aiLib.progress(options) | ai-lib’in ilerleme çubuğu (anim, scenario, canCancel, whileDead, freeze, disable); bittiğinde true. progress.cancel(), progress.isRunning(). |
aiLib.menu.show(request, listeners?) | Bir menü ({ title, items, back? }, dinleyiciler onHover, onToggle); seçilen id’yi döndürür. |
aiLib.input(request) | Bir giriş diyaloğu ({ title, confirm, fields }); değerleri ya da nil döndürür. |
aiLib.itemPicker({ title, target? }) | Admin araçları: ai-core’un eşya ızgarası. |
aiLib.skillCheck(difficulty, keys?) | Beceri kontrolü; her aşama vurulduysa true. |
aiLib.lockpick({ difficulty?, pins?, picks? }) | 'opened', 'broken' ya da 'cancelled'. |
aiLib.showPrompt(id, text), hidePrompt(id), onPromptPressed(handler) | ai-lib’in istemi. |
aiLib.Points.new() | Etkileşim noktaları: :add(id, options), :addModel(id, options), :addVehicle(id, options), :remove(id), :clear(), :refresh(). |
aiLib.Zones.new() | Alanlar: :add(id, options), :remove, :clear, :isInside. |
aiLib.LocalPed.new(options) | Yerel bir ped (attach, seat); :remove(). |
aiLib.Blips.new(), aiLib.Blips.create(options) | Blip’ler: :add, :get, :remove, :clear. |
aiLib.Keybind.new(options) | Değiştirilebilir bir tuş (hint, icon, hintLabel); :disable(state). |
aiLib.player | coords, heading, distanceTo, freeze, teleport (ground = 'find' ya da z yok: x / y altındaki zemin), playAnim, stopAnim. |
aiLib.playerPed(serverId) | Bir oyuncunun ped’i, kapsam dışında 0. |
aiLib.nearestPlayer(metres, { from?, filter? }) | En yakın diğer oyuncunun sunucu id’si. |
aiLib.nearestVehicle(metres, { networked?, notOwn?, filter? }) | En yakın araç. |
aiLib.waitForEntity(netId, timeout?) | Entity burada var olunca o, zaman aşımında 0. |
aiLib.waypoint() | Harita işareti { x, y }. |
aiLib.onShot(handler) | Yerel ped’in ateş ettiği kare. |
aiLib.fadeOut(ms?), aiLib.fadeIn(ms?) | Ekran kararması. |
aiLib.controls.disable(reason, controls, group?), disableAll(reason, except?), enable(reason) | Engellenen tuşlar. |
aiLib.hud.hide(reason), show(reason), visible() | HUD’ları gizler. |
aiLib.keyHints.show(id, { label, keybind?, key?, icon? }), hide(id) | Tuş yardım satırları. |
aiLib.gestures.isHandsUp(), isPointing(), provider() | Eller yukarı ve işaret etme. |
aiLib.radial.add(item), remove(id), refresh() | AI Core üzerinden radyal öğeler. |
aiLib.inventory.openInventory(), hasItem(item, count?), currentWeapon() | Aktif envanter. |
aiLib.world.pauseSync(reason), resumeSync(reason) | Hava ve saat senkronunu duraklatır. |
aiLib.appearance.apply(ped, look), read(ped) | Aktif kıyafet script’iyle görünümler. |
aiLib.requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeout?) | Bir oyun varlığını yükler. |
aiLib.pedHeadshot(ped, transparent?, timeout?) | Vesikalık handle’ı ve doku adı. |
aiLib.locationName(coords?), vehicleLabel(vehicle), groundZ(x, y, z?) | İsimler ve zemin yüksekliği. |
aiLib.raycast(from, to, options?) | Bir çizgi yoklaması: { coords, normal, entity } ya da nil. |
local points = aiLib.Points.new()
points:add('shop', {
coords = vector3(25.7, -1347.3, 29.5),
label = 'Open shop',
icon = 'basket-shopping',
onPressed = function()
local pick = aiLib.menu.show({ title = 'Shop', items = { { id = 'water', label = 'Water' } } })
if pick then aiLib.callAction('myshop:buy', { pick }, { fallback = 'BUY_FAILED' }) end
end,
})Sunucu
| Fonksiyon | Ne |
|---|---|
aiLib.onClientCallback(name, handler, { rate?, lock?, ace? }) | Client callback’lerini kapıdan geçirerek cevaplar. |
aiLib.onClientEvent(name, handler, options?) | Kapıdan geçen bir client net olayı. |
aiLib.triggerClientCallback(name, source, args?, timeout?) | Bir client’a sorar; cevabı ve bir hatayı döndürür. |
aiLib.isAdmin(source, ace?) | Oyuncu bir ai-core admini mi (ya da ace’ye sahip mi). |
aiLib.RateLimit.new(count, windowMs) | Oyuncu başına patlama sınırı: limit:take(source), limit:release(source). |
aiLib.progressFor(source, options) | Oyuncunun client’ında ai-lib’in çubuğu, süresini sunucu tutar (bekler). |
aiLib.minigameFor(source, options) | Oyuncunun client’ında bir mini oyun: 'won', 'lost' ya da 'broken' (bekler). |
aiLib.addCommand(name, { help?, params?, restricted? }, handler) | Bir komut; handler(source, args, raw). |
aiLib.onCharacter({ loaded?, unloaded? }) | Karakter yükleme ve bırakma; yeniden başlatmadan önce yüklenmiş karakterleri tekrar oynatır. |
aiLib.online | character, name(src, fallback), jobs, gangs, jobGrade, gangGrade, dutyJob, sources (her çağrıda ai-core’a sorar). |
aiLib.spawnVehicle(options) | Bir sunucu aracı (model, coords, asker, plate, fuel, keysTo, purpose, driver, seats, props, setup, locked, bucket, persistent, bags); bekler. |
aiLib.playersNear(source, radius), playersNearEntity(entity, radius) | Çevredeki oyuncular. |
aiLib.nearestPlayerTo(source, metres, filter?), nearestVehicleTo(source, metres, filter?) | En yakın oyuncu ya da araç. |
aiLib.vehicleFromNet(netId), vehicleNearPlayer(source, netId, { metres?, driver? }) | Bir client’ın net id’sinden canlı araç ya da 0. |
aiLib.aiLog(channel, message, options?) | ai-core üzerinden bir log. |
aiLib.inventory | addItem, removeItem, getItemCount, hasItem, canCarryItem, getItems, clearInventory, registerStash, openInventory, registerUsableItem, getItemDefinition. |
aiLib.vehicleKeys.give(source, vehicle, purpose?), remove, has | AI Core üzerinden araç anahtarları. |
aiLib.phone | number, sourceOf, hasPhone, mail, message, notify. |
aiLib.dispatch.alert(alert) | AI Core üzerinden bir polis ihbarı. |
aiLib.prison.jail(src, minutes, by?), release(src), timeLeft(src) | Hapis cezaları. |
aiLib.world | getWeather, setWeather, getTime, setTime, setBlackout, freezeTime. |
aiLib.appearance.get(charId), provider() | Bir karakterin kayıtlı görünümü (bekler). |
Lua tarafında olmayanlar: admin paneli sınıfları, PendingActions, PlayerMap, Cooldowns, katı girdi okuyucuları, state bag sınıfları (Lua Entity(e).state’i kendisi okur) ve veritabanı (Lua resource’lar ai-mysql’in oxmysql API’sini kullanır).