AI Core
API-Referenz

Lib für Lua

aiLib - die Lib für Lua-Ressourcen, aus ai-lib geladen wie ox_lib.

ai-lib enthält eine Lua-Portierung der Lib. Sie läuft in der Ressource, die sie lädt, sodass Punkte, Tastenbelegungen, Befehle und Callbacks zu dieser Ressource gehören und mit ihr gehen.

fxmanifest.lua
dependency 'ai-lib'
shared_script '@ai-lib/init.lua'

Module laden bei der ersten Nutzung: aiLib.notify(...), aiLib.Points.new(), aiLib.addCommand(...). Aufrufe, die warten (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor), müssen in einem Thread laufen. Die Typen sind die Klasse AiLib in der init.lua von ai-lib.

JavaScript-Ressourcen ohne Bundler laden stattdessen @ai-lib/dist/client.js / server.js: dasselbe globale aiLib mit den Helfern /shared plus /client oder /server der TypeScript-Lib.

Beide Seiten

FunktionWas
aiLib.side'client' oder 'server'.
aiLib.every(ms, fn, options?)Periodische Arbeit auf dem einen Scheduler-Thread der Ressource (0 = jeden Frame); job:set(active), job:stop(), job.running. Ein Job ruft nie Wait auf.
aiLib.waitFor(check, timeout?, interval?)Wartet, bis check einen Wert zurückgibt.
aiLib.formatText(text, ...){0}-Platzhalter.
aiLib.locale(resource?)Gibt t(key, ...) und die zusammengeführte Sprachtabelle zurück.
aiLib.fail(error){ ok = false, error = error } für Server-Aktionen.
aiLib.numbers.round(value, decimals?), groupDigits(value, separator?), headingTo(from, to)Zahlenhelfer.
aiLib.stripGameText(text)HTML-Tags und GTA-Codes entfernt.
aiLib.notify(...)Client (text, kind?, duration?); Server (source, text, kind?, duration?).
aiLib.inventory, aiLib.world, aiLib.appearanceÜber ai-core; die Mitglieder unterscheiden sich je Seite (unten).

Client

FunktionWas
aiLib.cacheped, playerId, serverId, vehicle, seat, weapon; cache.onChange(key, handler).
aiLib.playerData.get(key), playerData.onChange(key, handler)Die Spielerdaten von ai-core (character, money, jobs, duty, gangs, activeGang).
aiLib.triggerServerCallback(name, args?, timeout?)Fragt den Server; gibt die Antwort und einen Fehler zurück.
aiLib.onServerCallback(name, handler), aiLib.onServerEvent(name, handler)Antwortet dem Server, hört auf Server-Events.
aiLib.callAction(name, args?, { fallback, timeout?, silent? })Führt eine Server-Aktion aus, zeigt die übersetzte Ablehnung, gibt die ok-Antwort oder nil zurück.
aiLib.progress(options)Der Fortschrittsbalken von ai-lib (anim, scenario, canCancel, whileDead, freeze, disable); true, wenn er abgelaufen ist. progress.cancel(), progress.isRunning().
aiLib.menu.show(request, listeners?)Ein Menü ({ title, items, back? }, Listener onHover, onToggle); gibt die gewählte ID zurück.
aiLib.input(request)Ein Eingabedialog ({ title, confirm, fields }); gibt die Werte oder nil zurück.
aiLib.itemPicker({ title, target? })Admin-Werkzeuge: das Item-Raster von ai-core.
aiLib.skillCheck(difficulty, keys?)Skill-Check; true, wenn jede Stufe getroffen wurde.
aiLib.lockpick({ difficulty?, pins?, picks? })'opened', 'broken' oder 'cancelled'.
aiLib.showPrompt(id, text), hidePrompt(id), onPromptPressed(handler)Der Prompt von ai-lib.
aiLib.Points.new()Interaktionspunkte: :add(id, options), :addModel(id, options), :addVehicle(id, options), :remove(id), :clear(), :refresh().
aiLib.Zones.new()Zonen: :add(id, options), :remove, :clear, :isInside.
aiLib.LocalPed.new(options)Ein lokaler Ped (attach, seat); :remove().
aiLib.Blips.new(), aiLib.Blips.create(options)Blips: :add, :get, :remove, :clear.
aiLib.Keybind.new(options)Eine umbelegbare Taste (hint, icon, hintLabel); :disable(state).
aiLib.playercoords, heading, distanceTo, freeze, teleport (ground = 'find' oder ohne z: der Boden unter x / y), playAnim, stopAnim.
aiLib.playerPed(serverId)Der Ped eines Spielers, 0 außerhalb des Scopes.
aiLib.nearestPlayer(metres, { from?, filter? })Die Server-ID des nächsten anderen Spielers.
aiLib.nearestVehicle(metres, { networked?, notOwn?, filter? })Das nächste Fahrzeug.
aiLib.waitForEntity(netId, timeout?)Die Entity, sobald sie hier existiert, 0 nach dem Timeout.
aiLib.waypoint()Der Wegpunkt auf der Karte { x, y }.
aiLib.onShot(handler)Der Frame, in dem der lokale Ped schießt.
aiLib.fadeOut(ms?), aiLib.fadeIn(ms?)Bildschirm abblenden.
aiLib.controls.disable(reason, controls, group?), disableAll(reason, except?), enable(reason)Deaktivierte Steuerungen.
aiLib.hud.hide(reason), show(reason), visible()HUDs ausblenden.
aiLib.keyHints.show(id, { label, keybind?, key?, icon? }), hide(id)Tastenhilfe-Zeilen.
aiLib.gestures.isHandsUp(), isPointing(), provider()Hände hoch und Zeigen.
aiLib.radial.add(item), remove(id), refresh()Radialeinträge über ai-core.
aiLib.inventory.openInventory(), hasItem(item, count?), currentWeapon()Das aktive Inventar.
aiLib.world.pauseSync(reason), resumeSync(reason)Den Wetter- und Zeit-Sync pausieren.
aiLib.appearance.apply(ped, look), read(ped)Aussehen über das aktive Kleidungsskript.
aiLib.requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeout?)Ein Spiel-Asset laden.
aiLib.pedHeadshot(ped, transparent?, timeout?)Ein Headshot-Handle und Texturname.
aiLib.locationName(coords?), vehicleLabel(vehicle), groundZ(x, y, z?)Namen und Bodenhöhe.
aiLib.raycast(from, to, options?)Eine Linienabfrage: { coords, normal, entity } oder nil.
Lua
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,
})

Server

FunktionWas
aiLib.onClientCallback(name, handler, { rate?, lock?, ace? })Beantwortet Client-Callbacks durch das Gate.
aiLib.onClientEvent(name, handler, options?)Ein Client-Net-Event durch das Gate.
aiLib.triggerClientCallback(name, source, args?, timeout?)Fragt einen Client; gibt die Antwort und einen Fehler zurück.
aiLib.isAdmin(source, ace?)Ob der Spieler ein ai-core-Admin ist (oder ace hat).
aiLib.RateLimit.new(count, windowMs)Ein Burst-Limit pro Spieler: limit:take(source), limit:release(source).
aiLib.progressFor(source, options)Der Balken von ai-lib auf dem Client des Spielers, vom Server getaktet (wartet).
aiLib.minigameFor(source, options)Ein Minispiel auf dem Client des Spielers: 'won', 'lost' oder 'broken' (wartet).
aiLib.addCommand(name, { help?, params?, restricted? }, handler)Ein Befehl; handler(source, args, raw).
aiLib.onCharacter({ loaded?, unloaded? })Laden und Entladen von Charakteren, spielt vor einem Neustart geladene Charaktere nach.
aiLib.onlinecharacter, name(src, fallback), jobs, gangs, jobGrade, gangGrade, dutyJob, sources (fragt ai-core bei jedem Aufruf).
aiLib.spawnVehicle(options)Ein Server-Fahrzeug (model, coords, asker, plate, fuel, keysTo, purpose, driver, seats, props, setup, locked, bucket, persistent, bags); wartet.
aiLib.playersNear(source, radius), playersNearEntity(entity, radius)Spieler in der Nähe.
aiLib.nearestPlayerTo(source, metres, filter?), nearestVehicleTo(source, metres, filter?)Der nächste Spieler oder das nächste Fahrzeug.
aiLib.vehicleFromNet(netId), vehicleNearPlayer(source, netId, { metres?, driver? })Ein lebendes Fahrzeug aus der Net-ID eines Clients, oder 0.
aiLib.aiLog(channel, message, options?)Ein Log über ai-core.
aiLib.inventoryaddItem, removeItem, getItemCount, hasItem, canCarryItem, getItems, clearInventory, registerStash, openInventory, registerUsableItem, getItemDefinition.
aiLib.vehicleKeys.give(source, vehicle, purpose?), remove, hasFahrzeugschlüssel über ai-core.
aiLib.phonenumber, sourceOf, hasPhone, mail, message, notify.
aiLib.dispatch.alert(alert)Ein Polizeialarm über ai-core.
aiLib.prison.jail(src, minutes, by?), release(src), timeLeft(src)Haftstrafen.
aiLib.worldgetWeather, setWeather, getTime, setTime, setBlackout, freezeTime.
aiLib.appearance.get(charId), provider()Das gespeicherte Aussehen eines Charakters (wartet).

Nicht auf der Lua-Seite: die Admin-Panel-Klassen, PendingActions, PlayerMap, Cooldowns, die strikten Eingabeleser, die State-Bag-Klassen (Lua liest Entity(e).state selbst) und die Datenbank (Lua-Ressourcen nutzen die oxmysql-API von ai-mysql).

Auf dieser Seite