AI Core
Dokumentacja API

Lib dla Lua

aiLib - lib dla zasobów Lua, wczytywany z ai-lib jak ox_lib.

ai-lib zawiera port liba do Lua. Działa wewnątrz zasobu, który go wczytuje, więc punkty, klawisze, komendy i callbacki należą do tego zasobu i znikają razem z nim.

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

Moduły wczytują się przy pierwszym użyciu: aiLib.notify(...), aiLib.Points.new(), aiLib.addCommand(...). Wywołania, które czekają (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor), muszą działać w wątku. Typy to klasa AiLib w init.lua ai-lib.

Zasoby JavaScript bez bundlera wczytują zamiast tego @ai-lib/dist/client.js / server.js: ta sama zmienna globalna aiLib z funkcjami /shared oraz /client albo /server liba TypeScript.

Obie strony

FunkcjaCo
aiLib.side'client' albo 'server'.
aiLib.every(ms, fn, options?)Praca okresowa w jednym wątku harmonogramu zasobu (0 = każda klatka); job:set(active), job:stop(), job.running. Zadanie nigdy nie robi Wait.
aiLib.waitFor(check, timeout?, interval?)Czeka, aż check zwróci wartość.
aiLib.formatText(text, ...)Symbole zastępcze {0}.
aiLib.locale(resource?)Zwraca t(key, ...) i połączoną tabelę tłumaczeń.
aiLib.fail(error){ ok = false, error = error } dla akcji serwera.
aiLib.numbers.round(value, decimals?), groupDigits(value, separator?), headingTo(from, to)Funkcje liczbowe.
aiLib.stripGameText(text)Usuwa tagi HTML i kody GTA.
aiLib.notify(...)Klient (text, kind?, duration?); serwer (source, text, kind?, duration?).
aiLib.inventory, aiLib.world, aiLib.appearancePrzez ai-core; pola różnią się po stronach (poniżej).

Klient

FunkcjaCo
aiLib.cacheped, playerId, serverId, vehicle, seat, weapon; cache.onChange(key, handler).
aiLib.playerData.get(key), playerData.onChange(key, handler)Dane gracza z ai-core (character, money, jobs, duty, gangs, activeGang).
aiLib.triggerServerCallback(name, args?, timeout?)Pyta serwer; zwraca odpowiedź i błąd.
aiLib.onServerCallback(name, handler), aiLib.onServerEvent(name, handler)Odpowiada serwerowi, słucha zdarzeń serwera.
aiLib.callAction(name, args?, { fallback, timeout?, silent? })Uruchamia akcję serwera, pokazuje przetłumaczoną odmowę, zwraca odpowiedź ok albo nil.
aiLib.progress(options)Pasek postępu ai-lib (anim, scenario, canCancel, whileDead, freeze, disable); true, gdy dobiegł końca. progress.cancel(), progress.isRunning().
aiLib.menu.show(request, listeners?)Menu ({ title, items, back? }, listenery onHover, onToggle); zwraca wybrane id.
aiLib.input(request)Okno wprowadzania ({ title, confirm, fields }); zwraca wartości albo nil.
aiLib.itemPicker({ title, target? })Narzędzia administratora: siatka przedmiotów ai-core.
aiLib.skillCheck(difficulty, keys?)Test umiejętności; true, gdy trafiono każdy etap.
aiLib.lockpick({ difficulty?, pins?, picks? })'opened', 'broken' albo 'cancelled'.
aiLib.showPrompt(id, text), hidePrompt(id), onPromptPressed(handler)Prompt ai-lib.
aiLib.Points.new()Punkty interakcji: :add(id, options), :addModel(id, options), :addVehicle(id, options), :remove(id), :clear(), :refresh().
aiLib.Zones.new()Strefy: :add(id, options), :remove, :clear, :isInside.
aiLib.LocalPed.new(options)Lokalny ped (attach, seat); :remove().
aiLib.Blips.new(), aiLib.Blips.create(options)Blipy: :add, :get, :remove, :clear.
aiLib.Keybind.new(options)Klawisz do przypisania (hint, icon, hintLabel); :disable(state).
aiLib.playercoords, heading, distanceTo, freeze, teleport (ground = 'find' albo bez z: ziemia pod x / y), playAnim, stopAnim.
aiLib.playerPed(serverId)Ped gracza, 0 poza zasięgiem.
aiLib.nearestPlayer(metres, { from?, filter? })Id serwerowe najbliższego innego gracza.
aiLib.nearestVehicle(metres, { networked?, notOwn?, filter? })Najbliższy pojazd.
aiLib.waitForEntity(netId, timeout?)Encja, gdy pojawi się tutaj, 0 po upływie czasu.
aiLib.waypoint()Punkt nawigacji na mapie { x, y }.
aiLib.onShot(handler)Klatka, w której lokalny ped strzela.
aiLib.fadeOut(ms?), aiLib.fadeIn(ms?)Wygaszanie ekranu.
aiLib.controls.disable(reason, controls, group?), disableAll(reason, except?), enable(reason)Wyłączone sterowanie.
aiLib.hud.hide(reason), show(reason), visible()Ukrywanie HUD-ów.
aiLib.keyHints.show(id, { label, keybind?, key?, icon? }), hide(id)Linie pomocy klawiszy.
aiLib.gestures.isHandsUp(), isPointing(), provider()Ręce w górze i wskazywanie.
aiLib.radial.add(item), remove(id), refresh()Elementy menu radialnego przez ai-core.
aiLib.inventory.openInventory(), hasItem(item, count?), currentWeapon()Aktywny ekwipunek.
aiLib.world.pauseSync(reason), resumeSync(reason)Wstrzymanie synchronizacji pogody i czasu.
aiLib.appearance.apply(ped, look), read(ped)Wygląd przez aktywny skrypt ubrań.
aiLib.requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeout?)Wczytanie zasobu gry.
aiLib.pedHeadshot(ped, transparent?, timeout?)Uchwyt i nazwa tekstury zdjęcia twarzy.
aiLib.locationName(coords?), vehicleLabel(vehicle), groundZ(x, y, z?)Nazwy i wysokość gruntu.
aiLib.raycast(from, to, options?)Sonda liniowa: { coords, normal, entity } albo 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,
})

Serwer

FunkcjaCo
aiLib.onClientCallback(name, handler, { rate?, lock?, ace? })Odpowiada na callbacki klienta przez bramkę.
aiLib.onClientEvent(name, handler, options?)Zdarzenie sieciowe klienta przez bramkę.
aiLib.triggerClientCallback(name, source, args?, timeout?)Pyta klienta; zwraca odpowiedź i błąd.
aiLib.isAdmin(source, ace?)Czy gracz jest administratorem ai-core (albo ma ace).
aiLib.RateLimit.new(count, windowMs)Limit serii na gracza: limit:take(source), limit:release(source).
aiLib.progressFor(source, options)Pasek ai-lib na kliencie gracza, mierzony przez serwer (czeka).
aiLib.minigameFor(source, options)Minigra na kliencie gracza: 'won', 'lost' albo 'broken' (czeka).
aiLib.addCommand(name, { help?, params?, restricted? }, handler)Komenda; handler(source, args, raw).
aiLib.onCharacter({ loaded?, unloaded? })Wczytanie i zwolnienie postaci, z odtworzeniem postaci wczytanych przed restartem.
aiLib.onlinecharacter, name(src, fallback), jobs, gangs, jobGrade, gangGrade, dutyJob, sources (pyta ai-core przy każdym wywołaniu).
aiLib.spawnVehicle(options)Pojazd serwerowy (model, coords, asker, plate, fuel, keysTo, purpose, driver, seats, props, setup, locked, bucket, persistent, bags); czeka.
aiLib.playersNear(source, radius), playersNearEntity(entity, radius)Gracze w pobliżu.
aiLib.nearestPlayerTo(source, metres, filter?), nearestVehicleTo(source, metres, filter?)Najbliższy gracz albo pojazd.
aiLib.vehicleFromNet(netId), vehicleNearPlayer(source, netId, { metres?, driver? })Żywy pojazd z net id od klienta albo 0.
aiLib.aiLog(channel, message, options?)Log przez ai-core.
aiLib.inventoryaddItem, removeItem, getItemCount, hasItem, canCarryItem, getItems, clearInventory, registerStash, openInventory, registerUsableItem, getItemDefinition.
aiLib.vehicleKeys.give(source, vehicle, purpose?), remove, hasKlucze pojazdów przez ai-core.
aiLib.phonenumber, sourceOf, hasPhone, mail, message, notify.
aiLib.dispatch.alert(alert)Alert policyjny przez ai-core.
aiLib.prison.jail(src, minutes, by?), release(src), timeLeft(src)Wyroki więzienia.
aiLib.worldgetWeather, setWeather, getTime, setTime, setBlackout, freezeTime.
aiLib.appearance.get(charId), provider()Zapisany wygląd postaci (czeka).

Nie ma po stronie Lua: klas panelu administratora, PendingActions, PlayerMap, Cooldowns, ścisłych czytników wejścia, klas state bagów (Lua sam czyta Entity(e).state) ani bazy danych (zasoby Lua używają API oxmysql z ai-mysql).

Na tej stronie