AI Core
Referência da API

Lib: cliente

@aicore-fivem/lib/client - todo helper de cliente com sua assinatura, e o gêmeo em Lua do aiLib quando existe.

TypeScript
import { Points, notify, progress, cache } from "@aicore-fivem/lib/client";

A entrada de cliente também reexporta os helpers de /fivem (every, ByResource, Reasons, caller, onStop, plateOf, os helpers de exports e de idioma, as classes de state bags): veja Lib: shared e fivem. A última coluna dá o gêmeo em Lua no aiLib (Lib para Lua).

Falando com o servidor

HelperO quêLua
triggerServerCallback(name, args = [], timeoutMs?): Promise<unknown>Pergunta ao servidor (onClientCallback lá); valide a resposta.triggerServerCallback
onServerCallback(name, handler: (...args) => unknown): voidResponde ao triggerClientCallback do servidor.onServerCallback
onServerEvent(name, handler) / onServerEvent(name, { args }, handler)Um evento de rede do servidor; emits que não vieram do servidor são descartados. args valida os dados.onServerEvent
fromServer(): booleanSe o evento em tratamento veio do servidor.
callAction(name, args = [], { fallback, timeout?, silent? })Executa uma ação no servidor, mostra a recusa traduzida sozinho e resolve a resposta ok ou null.callAction
isActionOk(reply), replyError(reply, fallback)Leem um ActionResult à mão.
TypeScript
const reply = await callAction("buy", [itemId], { fallback: "BUY_FAILED" });
if (reply) notify(t("BOUGHT"), "success");

O jogador local

HelperO quêLua
cacheped, playerId, serverId, vehicle, seat, weapon (false = nenhum), mantidos pelo único observador do ai-core.cache
onCache(key, handler: (value, old) => void): voidRoda quando um valor em cache muda.cache.onChange
readPlayerState(ped), readWeapon(ped)Veículo, assento e arma de um ped agora.
player.coords(), player.heading(), player.distanceTo(point), player.ped()Leituras de posição (do cache).player
player.freeze(state: boolean)Congela o ped.player.freeze
player.teleport(to: { x, y, z? }, { heading?, ground?, fade?, keepVehicle? }): Promise<void>Teleporte atrás de um fade com carregamento de colisão; sem z cai no chão.player.teleport
player.playAnim(dict, clip, options?): Promise<void>, player.stopAnim()Toca ou para uma animação.player.playAnim, player.stopAnim
player.holdAnim(dict, clip, { ...options, while? })Mantém uma animação até stop() ou até while() ser false.
fadeOut(ms = 300), fadeIn(ms = 400)Fades de tela; cada um resolve ao terminar.fadeOut, fadeIn
getPlayerData(key), onPlayerData(key, handler): () => void, seedPlayerData(data)Os dados do jogador do ai-core (character, money, jobs, duty, job, gangs, activeGang, metadata).playerData.get, playerData.onChange
hasJob(jobs, minGrade = 0), inGang(gangs, minGrade = 0), onDutyIn(jobs)Verificações de vínculo (uma lista vazia = todos).
onMembershipChange(fn)Empregos, serviço ou gangues mudaram.
allows(rule: AccessRule): booleanSe o jogador pode usar um local (o online.allows do servidor decide o mesmo).
playerPed(serverId): numberO ped de um jogador pelo id de servidor, 0 fora do scope.playerPed
nearestPlayer(metres, { from?, filter? }): number | nullO id de servidor do outro jogador mais próximo.nearestPlayer

Locais e o mundo

HelperO quêLua
new Points()Todo local que um jogador usa: prompt ou target (escolha do dono), NPC, blip.Points.new()
points.add(id, { coords, label, icon?, radius?, height?, canShow?, onPressed, onEnter?, onExit?, ped?, blip?, world?, promptOnly?, preferTarget? })Adiciona um ponto; label pode ser uma função.points:add
points.addModel(id, { models, label, icon?, radius?, canShow?(entity), onPressed(entity), vehicles?, inVehicle? })Um ponto em todo objeto de certos modelos (caixas eletrônicos, cadeiras).points:addModel
points.addVehicle(id, { label, icon?, radius?, canShow?(vehicle), onPressed(vehicle) })Um ponto em todo veículo em rede.points:addVehicle
points.remove(id), clear(), refresh(id?), isInside(id)Gerenciam os pontos; refresh lê canShow de novo.
new Zones(): add(id, options), remove, clear, isInside, sizeÁreas sem interação.Zones.new()
new LocalPed({ model, coords, ... }): entity, removeUm ped que só este cliente vê, criado perto do jogador.LocalPed.new()
new Blips(): add(id, options), get, remove, clear; createBlip(options)Blips com nome.Blips.new(), Blips.create()
showPrompt(id, text, at?), hidePrompt(id), onPromptPressed(handler)O prompt do ai-lib à mão (Points o usa).showPrompt, hidePrompt, onPromptPressed
new AdminWorld(files): get, onChange, view, recordsA cópia no cliente dos arquivos de painel sync: "all" de um script.
TypeScript
const points = new Points();
points.add("shop", {
  coords: { x: 25.7, y: -1347.3, z: 29.5 },
  label: t("OPEN_SHOP"),
  icon: "basket-shopping",
  blip: { sprite: 52, color: 2, scale: 0.8, label: t("SHOP") },
  onPressed: () => openShop(),
});

Interface

HelperO quêLua
notify(text, kind = "info", duration?)Um cartão de notificação.notify
progress({ label, duration, anim?, scenario?, face?, allowVehicle?, canCancel?, whileDead?, freeze?, disable? }): Promise<boolean>Uma ação cronometrada com a barra do ai-lib; false quando cancelada.progress
cancelProgress(), isProgressRunning()Param ou verificam a barra deste recurso.progress.cancel(), progress.isRunning()
menu(request, onHover? | { onHover, onToggle }): Promise<string | null>O menu do ai-lib; resolve com o id escolhido.menu.show
input(request): Promise<Record<string, string | number> | null>O diálogo de entrada do ai-lib.input
itemPicker({ title, target? }): Promise<PickedItem[] | null>Ferramentas de admin: a grade de itens do ai-core.itemPicker
skillCheck(difficulty | difficulty[], keys = ["e"]): Promise<boolean>Skill check ("easy" | "medium" | "hard" ou { areaSize, speedMultiplier }).skillCheck
lockpick({ difficulty?, pins?, picks? }): Promise<"opened" | "broken" | "cancelled">Minigame de lockpick.lockpick
new NuiScreen(name, { cursor?, onClose?, closeCallback? }): open, close, send, on, isOpenUma NUI de tela cheia: foco, HUDs escondidos, mensagem de fechamento, callbacks.
hud.hide(reason), hud.show(reason), hud.visible(), hud.onChange(fn)Escondem os HUDs em volta de uma interface de tela cheia.hud
keyHints.show(id, { label, keybind?, key?, icon? }), keyHints.hide(id)Uma linha de dica de tecla no HUD.keyHints
radial.add(item), radial.remove(id), radial.refresh()Itens no menu radial que estiver rodando.radial
controls.disable(reason, controls, group?), controls.enable(reason), controls.disableAll(reason, except?)Controles desativados, uma única tarefa por frame.controls
new Keybind({ name, description, defaultKey, defaultMapper, hint?, icon?, hintLabel?, onPressed, onReleased })Uma tecla reconfigurável; o painel pode definir o padrão. isPressed(), currentKey(), disable(state).Keybind.new()
TypeScript
const done = await progress({
  label: t("REPAIRING"),
  duration: 8000,
  anim: { dict: "mini@repair", clip: "fixing_a_player" },
  canCancel: true,
});

Pelo AI Core

HelperO quêLua
inventory.openInventory(), inventory.hasItem(item, count = 1), inventory.currentWeapon()O inventário ativo.inventory
medical.isDead(), medical.onChange(fn)O jogador local está caído, em qualquer script de morte.
gestures.isHandsUp(), isPointing(), provider()Mãos para cima e apontar de qualquer script de emotes.gestures
appearance.apply(ped, look), appearance.read(ped)Aparências pelo script de roupas ativo.appearance
world.pauseSync(reason), world.resumeSync(reason)Pausam a sincronização de clima e hora.world

Veículos e entidades

HelperO quêLua
nearestVehicle(metres, { networked?, notOwn?, filter? }): numberO veículo mais próximo.nearestVehicle
drivenVehicle(): number | falseO veículo que o jogador dirige.
waitForEntity(netId, timeoutMs = 5000): Promise<number>A entidade quando ela existir aqui, 0 após o tempo limite.waitForEntity
entityFromNetId(netId, type?): numberA entidade agora ou 0 (tipo 1 ped, 2 veículo, 3 objeto).
getVehicleProps(vehicle), setVehicleProps(vehicle, props), setVehicleSetup(vehicle, setup)Leem e aplicam a aparência de um veículo.
new PreviewVehicle(): show(model, at, setup?), clear()Um veículo local de vitrine.
vehicleLabel(model | hash | vehicle): stringO nome de exibição de um veículo.vehicleLabel

Sondagens, carregamento, tempo

HelperO quêLua
raycast(from, to, { flags?, ignore?, options? }): RayHit | nullUma sondagem em linha: { coords, normal, entity }.raycast
groundZ(x, y, z = 1000): number | nullA altura do chão, null enquanto a colisão não está carregada.groundZ
locationName(coords?): { street, crossing?, zone }Nomes de rua e zona.locationName
waypoint(): { x, y } | nullO waypoint do mapa.waypoint
pedHeadshot(ped, transparent = false, timeoutMs = 5000)O handle e o nome de textura do retrato de um ped.pedHeadshot
onShot(handler: (weapon) => void): () => voidO frame em que o ped local atira.onShot
requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeoutMs = 10000)Carregam um recurso do jogo.mesmos nomes
attachProp(model, { ped?, bone, offset?, rotation?, collision?, rotationOrder? }): Promise<number>Um prop local preso a um osso do ped.
new TickLoop(onFrame, name?): set(active), runningUma tarefa por frame ligada só quando necessário.
new AreaFollower(event, cellSize = 64): start, stopInforma a célula da grade do jogador a um AreaStream do servidor.
new ScriptCamera(type?): start, move, glideTo, attach, pointAt, setFov, shake, blur, stopUma câmera de script, devolvida à câmera do jogo ao parar.

Nesta página