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:
- A lib: visão geral
- Lib: funções do cliente
- Lib: funções do servidor
- Lib: funções compartilhadas
- Lua (
aiLib): os equivalentes Lua e a ordem dos argumentos deles
Carregando
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
dependency 'ai-lib'
shared_script '@ai-lib/init.lua'
client_script 'client.lua'
server_script 'server.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
Notify(notification: Notification): voidexports['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
import { notify } from "@aicore-fivem/lib/client";
notify("Your vehicle was stored", "success", 5000);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
ShowProgress(label: string, duration: number): void
HideProgress(): voidProp
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
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): voidProp
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.
CloseDialog(): voidExports internos
Estes são usados pelas próprias funções da lib. Você não os chama.
| Export | Usado 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
| Evento | Lado | Argumentos | O que é |
|---|---|---|---|
ai-lib:client:notify | Servidor para cliente | notification: Notification | Mostra um cartão na tela daquele jogador. O notify(source, text, kind?, duration?) de servidor da lib o envia. |
ai-lib:client:promptPressed | Cliente (local) | resource: string, id: string | A tecla de interação foi apertada enquanto o aviso daquele recurso estava em cima. |
ai-lib:client:cancelProgress | Cliente (local) | nenhum | A 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 });ai-lib
A UI compartilhada do jogador que todo script usa (notificações, barra de progresso, avisos, menus, caixas de entrada, minigames) e os helpers do AI Core para recursos em Lua e JavaScript.
ai-loading
A tela de carregamento que os jogadores veem enquanto o jogo carrega, com o nome do seu servidor, um fundo, o progresso do carregamento e dicas.