AI Core
Essenciaisai-lib

ai-lib para desenvolvedores

Carregando o ai-lib em um recurso Lua ou JavaScript, onde fica a referência da lib, e os próprios exports do cliente e eventos do ai-lib.

O ai-lib carrega o @aicore-fivem/lib para recursos que não empacotam o pacote npm. As funções em si são documentadas uma vez, na referência da lib:

Carregando

fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
lua54 'yes'

dependency 'ai-lib'
shared_script '@ai-lib/init.lua'
client_script 'client.lua'
server_script 'server.lua'
client.lua
local L = aiLib.locale()
aiLib.notify(L('WELCOME'), 'success')

Os módulos carregam no primeiro uso (aiLib.Points, aiLib.progress...), dentro do seu recurso, então os pontos, keybinds e callbacks que você cria pertencem ao seu recurso e somem quando ele para. Funções que esperam (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor) precisam rodar dentro de uma thread ou de um handler de evento.

Exports do cliente

O notify, progress, showPrompt, menu, input, skillCheck e lockpick da lib os chamam por você; use as funções da lib. Eles são tipados como AiLibClientExports em @aicore-fivem/shared (resourceExport("ai-lib")). Avisos, menus e zonas pertencem ao recurso que chama e somem quando ele para.

Notify

Mostra um cartão de notificação na tela deste jogador.

Lado: Cliente · Espera: não

Signature
Notify(notification: Notification): void
Lua
exports['ai-lib']:Notify({ text = 'Saved', kind = 'success' })
-- o mesmo pela lib: aiLib.notify('Saved', 'success')

Notification

Prop

Type

Retorno

Nada. Uma notificação sem text é descartada. Quando o dono escolheu outro script de notificação no painel, o cartão vai para lá; se esse script não o aceitar, o ai-lib o desenha.

Exemplo

client.ts
import { notify } from "@aicore-fivem/lib/client";

notify("Your vehicle was stored", "success", 5000);
server.ts
import { notify, onClientEvent } from "@aicore-fivem/lib/server";

// O mesmo cartão na tela de um jogador, enviado a partir do servidor.
onClientEvent("myscript:collectPay", (source) => {
  notify(source, "You were paid $500", "info");
});

ShowProgress and HideProgress

Mostra a barra de progresso por um tempo, ou a esconde. Só a barra: o script que chama roda a ação, a animação dela e a lógica de cancelamento. Use o progress (cliente) ou o progressFor (servidor) da lib no lugar, que fazem tudo isso.

Lado: Cliente · Espera: não

Signature
ShowProgress(label: string, duration: number): void
HideProgress(): void

Prop

Type

Enquanto a barra aparece, a tecla de cancelar (Backspace) dispara o evento local ai-lib:client:cancelProgress.

ShowPrompt and HidePrompt

Mostra ou atualiza um dos avisos do recurso que chama, ou o esconde. Use showPrompt / hidePrompt da lib, ou melhor, o Points da lib, que mostra e esconde avisos pela distância para você.

Lado: Cliente · Espera: não

Signature
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): void

Prop

Type

Quando o jogador aperta a tecla de interação enquanto o seu aviso está em cima, o evento local ai-lib:client:promptPressed (resource, id) dispara; o onPromptPressed da lib o filtra para o seu recurso.

CloseDialog

Fecha o menu ou a caixa de entrada aberta do recurso que chama. A chamada menu.show / input que está esperando responde null, como se o jogador a tivesse fechado. Lado: Cliente · Espera: não.

Signature
CloseDialog(): void

Exports internos

Estes são usados pelas próprias funções da lib. Você não os chama.

ExportUsado por
OpenMenu(requestId, request), OpenInput(requestId, request), OpenMinigame(requestId, request)menu.show, input, skillCheck, lockpick da lib. As respostas voltam como ai-lib:client:menuResult / inputResult com o id do pedido.
AddZone(key, shape, interval, inside), RemoveZone(key)Zones da lib em recursos JavaScript: o ai-lib verifica as zonas de todos os recursos em um único timer e responde com ai-lib:client:zone (owner, key, inside).
AddModelPoint(key, def, entity), RemoveModelPoint(key)Points.addModel / addVehicle da lib no modo de aviso: o ai-lib encontra o objeto mais próximo e responde com ai-lib:client:modelPoint (owner, key, entity).

Eventos

EventoLadoArgumentosO que é
ai-lib:client:notifyServidor para clientenotification: NotificationMostra um cartão na tela daquele jogador. O notify(source, text, kind?, duration?) de servidor da lib o envia.
ai-lib:client:promptPressedCliente (local)resource: string, id: stringA tecla de interação foi apertada enquanto o aviso daquele recurso estava em cima.
ai-lib:client:cancelProgressCliente (local)nenhumA tecla de cancelar foi apertada enquanto uma barra de progresso aparece.
// Servidor: uma notificação sem a lib.
emitNet("ai-lib:client:notify", source, { text: "Welcome to the city", kind: "info", duration: 6000 });

Nesta página