AI Core
Referencia de la API

Lib para Lua

aiLib - la lib para recursos Lua, cargada desde ai-lib como ox_lib.

ai-lib incluye un port de la lib a Lua. Se ejecuta dentro del recurso que la carga, así que los puntos, keybinds, comandos y callbacks pertenecen a ese recurso y se van con él.

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

Los módulos se cargan en el primer uso: aiLib.notify(...), aiLib.Points.new(), aiLib.addCommand(...). Las llamadas que esperan (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor) deben ejecutarse en un hilo. Los tipos son la clase AiLib del init.lua de ai-lib.

Los recursos en JavaScript sin bundler cargan en su lugar @ai-lib/dist/client.js / server.js: el mismo global aiLib con las utilidades /shared de la lib de TypeScript más las de /client o /server.

Ambos lados

FunciónQué
aiLib.side'client' o 'server'.
aiLib.every(ms, fn, options?)Trabajo periódico en el único hilo planificador del recurso (0 = cada frame); job:set(active), job:stop(), job.running. Una tarea nunca hace Wait.
aiLib.waitFor(check, timeout?, interval?)Espera hasta que check devuelve un valor.
aiLib.formatText(text, ...)Marcadores {0}.
aiLib.locale(resource?)Devuelve t(key, ...) y la tabla de idioma combinada.
aiLib.fail(error){ ok = false, error = error } para acciones del servidor.
aiLib.numbers.round(value, decimals?), groupDigits(value, separator?), headingTo(from, to)Utilidades numéricas.
aiLib.stripGameText(text)Quita etiquetas HTML y códigos de GTA.
aiLib.notify(...)Cliente (text, kind?, duration?); servidor (source, text, kind?, duration?).
aiLib.inventory, aiLib.world, aiLib.appearanceA través de ai-core; los miembros cambian según el lado (abajo).

Cliente

FunciónQué
aiLib.cacheped, playerId, serverId, vehicle, seat, weapon; cache.onChange(key, handler).
aiLib.playerData.get(key), playerData.onChange(key, handler)Los datos del jugador de ai-core (character, money, jobs, duty, gangs, activeGang).
aiLib.triggerServerCallback(name, args?, timeout?)Pregunta al servidor; devuelve la respuesta y un error.
aiLib.onServerCallback(name, handler), aiLib.onServerEvent(name, handler)Responde al servidor, escucha eventos del servidor.
aiLib.callAction(name, args?, { fallback, timeout?, silent? })Ejecuta una acción del servidor, muestra el rechazo traducido, devuelve la respuesta ok o nil.
aiLib.progress(options)La barra de progreso de ai-lib (anim, scenario, canCancel, whileDead, freeze, disable); true cuando terminó. progress.cancel(), progress.isRunning().
aiLib.menu.show(request, listeners?)Un menú ({ title, items, back? }, listeners onHover, onToggle); devuelve el id elegido.
aiLib.input(request)Un diálogo de entrada ({ title, confirm, fields }); devuelve los valores o nil.
aiLib.itemPicker({ title, target? })Herramientas de admin: la cuadrícula de objetos de ai-core.
aiLib.skillCheck(difficulty, keys?)Prueba de habilidad; true cuando se acertó cada etapa.
aiLib.lockpick({ difficulty?, pins?, picks? })'opened', 'broken' o 'cancelled'.
aiLib.showPrompt(id, text), hidePrompt(id), onPromptPressed(handler)El prompt de ai-lib.
aiLib.Points.new()Puntos de interacción: :add(id, options), :addModel(id, options), :addVehicle(id, options), :remove(id), :clear(), :refresh().
aiLib.Zones.new()Zonas: :add(id, options), :remove, :clear, :isInside.
aiLib.LocalPed.new(options)Un ped local (attach, seat); :remove().
aiLib.Blips.new(), aiLib.Blips.create(options)Blips: :add, :get, :remove, :clear.
aiLib.Keybind.new(options)Una tecla reasignable (hint, icon, hintLabel); :disable(state).
aiLib.playercoords, heading, distanceTo, freeze, teleport (ground = 'find' o sin z: el suelo bajo x / y), playAnim, stopAnim.
aiLib.playerPed(serverId)El ped de un jugador, 0 fuera de scope.
aiLib.nearestPlayer(metres, { from?, filter? })El id de servidor del otro jugador más cercano.
aiLib.nearestVehicle(metres, { networked?, notOwn?, filter? })El vehículo más cercano.
aiLib.waitForEntity(netId, timeout?)La entidad cuando existe aquí, 0 tras el tiempo límite.
aiLib.waypoint()El waypoint del mapa { x, y }.
aiLib.onShot(handler)El frame en que dispara el ped local.
aiLib.fadeOut(ms?), aiLib.fadeIn(ms?)Fundidos de pantalla.
aiLib.controls.disable(reason, controls, group?), disableAll(reason, except?), enable(reason)Controles desactivados.
aiLib.hud.hide(reason), show(reason), visible()Ocultan los HUD.
aiLib.keyHints.show(id, { label, keybind?, key?, icon? }), hide(id)Líneas de ayuda de teclas.
aiLib.gestures.isHandsUp(), isPointing(), provider()Manos arriba y señalar.
aiLib.radial.add(item), remove(id), refresh()Elementos del radial a través de ai-core.
aiLib.inventory.openInventory(), hasItem(item, count?), currentWeapon()El inventario activo.
aiLib.world.pauseSync(reason), resumeSync(reason)Pausan la sincronización de clima y hora.
aiLib.appearance.apply(ped, look), read(ped)Aspectos a través del script de ropa activo.
aiLib.requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeout?)Cargan un recurso del juego.
aiLib.pedHeadshot(ped, transparent?, timeout?)El handle y el nombre de textura de un retrato.
aiLib.locationName(coords?), vehicleLabel(vehicle), groundZ(x, y, z?)Nombres y altura del suelo.
aiLib.raycast(from, to, options?)Un sondeo en línea: { coords, normal, entity } o 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,
})

Servidor

FunciónQué
aiLib.onClientCallback(name, handler, { rate?, lock?, ace? })Responde a callbacks del cliente a través de la puerta.
aiLib.onClientEvent(name, handler, options?)Un evento de red del cliente a través de la puerta.
aiLib.triggerClientCallback(name, source, args?, timeout?)Pregunta a un cliente; devuelve la respuesta y un error.
aiLib.isAdmin(source, ace?)Si el jugador es admin de ai-core (o tiene ace).
aiLib.RateLimit.new(count, windowMs)Un límite de ráfagas por jugador: limit:take(source), limit:release(source).
aiLib.progressFor(source, options)La barra de ai-lib en el cliente del jugador, temporizada por el servidor (espera).
aiLib.minigameFor(source, options)Un minijuego en el cliente del jugador: 'won', 'lost' o 'broken' (espera).
aiLib.addCommand(name, { help?, params?, restricted? }, handler)Un comando; handler(source, args, raw).
aiLib.onCharacter({ loaded?, unloaded? })Carga y descarga de personajes, repitiendo los personajes cargados antes de un reinicio.
aiLib.onlinecharacter, name(src, fallback), jobs, gangs, jobGrade, gangGrade, dutyJob, sources (pregunta a ai-core en cada llamada).
aiLib.spawnVehicle(options)Un vehículo del servidor (model, coords, asker, plate, fuel, keysTo, purpose, driver, seats, props, setup, locked, bucket, persistent, bags); espera.
aiLib.playersNear(source, radius), playersNearEntity(entity, radius)Jugadores alrededor.
aiLib.nearestPlayerTo(source, metres, filter?), nearestVehicleTo(source, metres, filter?)El jugador o vehículo más cercano.
aiLib.vehicleFromNet(netId), vehicleNearPlayer(source, netId, { metres?, driver? })Un vehículo vivo a partir del net id de un cliente, o 0.
aiLib.aiLog(channel, message, options?)Un log a través de ai-core.
aiLib.inventoryaddItem, removeItem, getItemCount, hasItem, canCarryItem, getItems, clearInventory, registerStash, openInventory, registerUsableItem, getItemDefinition.
aiLib.vehicleKeys.give(source, vehicle, purpose?), remove, hasLlaves de vehículos a través de ai-core.
aiLib.phonenumber, sourceOf, hasPhone, mail, message, notify.
aiLib.dispatch.alert(alert)Una alerta policial a través de ai-core.
aiLib.prison.jail(src, minutes, by?), release(src), timeLeft(src)Condenas de cárcel.
aiLib.worldgetWeather, setWeather, getTime, setTime, setBlackout, freezeTime.
aiLib.appearance.get(charId), provider()El aspecto guardado de un personaje (espera).

No está en el lado Lua: las clases del panel de administración, PendingActions, PlayerMap, Cooldowns, los lectores estrictos de entrada, las clases de state bags (Lua lee Entity(e).state por sí mismo) y la base de datos (los recursos Lua usan la API oxmysql de ai-mysql).

En esta página