Eventos de cliente
Cada evento local de cliente que o ai-core dispara - o personagem local carregado ou descarregado, estado de caído, valores em cache, visibilidade do HUD, sincronização do mundo, definições de empregos, dicas de teclas, cinto de segurança - com argumentos e listeners.
O cliente do ai-core dispara estes eventos com TriggerEvent no próprio jogo do jogador. Cada recurso de cliente desse jogador os ouve; os outros jogadores nunca. Eles descrevem só o jogador local.
ai-core:client:playerLoaded
O personagem do jogador local está no mundo. Comece aqui o seu trabalho de cliente por personagem (valores do HUD, blips de emprego, loops).
Lado: Cliente · Constante: CORE.clientPlayerLoadedEvent
Argumentos
Prop
Type
Listener
import { resourceExport } from "@aicore-fivem/lib/client";
import { CORE, type AiPlayerData } from "@aicore-fivem/shared";
const core = resourceExport("ai-core");
function start(data: AiPlayerData): void {
console.log(`hello ${data.character?.firstname}, cash ${data.money.cash ?? 0}`);
}
// Também cobre um restart do recurso enquanto o jogador já está no mundo.
const now = core.GetPlayerData();
if (now) start(now);
on(CORE.clientPlayerLoadedEvent, start);ai-core:client:playerUnloaded
O personagem local foi liberado: o jogador voltou para a tela de personagens. Pare o trabalho por personagem e limpe o que você guardou para esse personagem. (Quando o jogador sai do servidor, o jogo dele fecha; nada dispara.)
Lado: Cliente · Constante: CORE.clientPlayerUnloadedEvent
Argumentos
Nenhum.
Listener
import { CORE } from "@aicore-fivem/shared";
on(CORE.clientPlayerUnloadedEvent, () => {
SendNUIMessage({ action: "reset" });
});ai-core:client:dead
O jogador local caiu (morto ou last stand) ou se levantou, no script de morte que estiver rodando. Só dispara numa mudança.
Lado: Cliente · Constante: CORE.clientDeadEvent · Lib: medical.onChange
Argumentos
Prop
Type
Listener
import { medical } from "@aicore-fivem/lib/client";
// O mesmo que on(CORE.clientDeadEvent, ...).
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" });
});ai-core:client:cache
Um valor em cache do jogador local mudou. Um único observador no ai-core lê o ped, o veículo, o assento e a arma para todos os recursos e só dispara isto quando um valor muda, então nenhum recurso precisa consultá-los repetidamente. O cache e o onCache da lib (aiLib.cache e aiLib.cache.onChange em Lua) são construídos sobre ele; use-os.
Lado: Cliente · Constante: CORE.clientCacheEvent
Argumentos
Prop
Type
Listener
import { onCache } from "@aicore-fivem/lib/client";
onCache("vehicle", (vehicle, old) => {
if (vehicle !== false) console.log(`entered vehicle ${vehicle}`);
else if (old !== false) console.log("left the vehicle");
});ai-core:client:hudVisible
Os HUDs devem aparecer ou se esconder: uma UI de tela cheia abriu ou a última fechou. Um recurso de HUD o escuta.
Lado: Cliente · Constante: CORE.clientHudVisibleEvent · Lib: hud.onChange
Argumentos
Prop
Type
Listener
import { hud } from "@aicore-fivem/lib/client";
hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));ai-core:client:worldSync
A sincronização de clima e hora foi pausada ou voltou a rodar. Um script de clima o escuta. Veja Sincronização de clima e hora.
Lado: Cliente · Constante: CORE.clientWorldSyncEvent
Argumentos
Prop
Type
Listener
import { CORE } from "@aicore-fivem/shared";
on(CORE.clientWorldSyncEvent, (paused: boolean) => {
console.log(paused ? "weather sync paused" : "weather sync running");
});ai-core:client:definitions
Um emprego ou gangue foi adicionado, alterado ou apagado no painel de administração. Dispara em cada cliente, uma vez por emprego ou gangue que mudou. Combine com o export GetDefinitions.
Lado: Cliente · Constante: CORE.clientDefinitionsEvent
Argumentos
Prop
Type
Listener
Veja o exemplo de GetDefinitions.
ai-core:client:characterPortrait
Uma imagem de retrato para o card de um personagem na tela de personagens. Um script de roupas (ai-appearance) o dispara; a tela de personagens do ai-core escuta e mostra a imagem. Dispare-o você mesmo só se escrever um script de roupas.
Lado: Cliente · Constante: CORE.clientCharacterPortraitEvent · Disparado por: o script de roupas, ouvido pelo ai-core
Argumentos
Prop
Type
Listener
import { CORE } from "@aicore-fivem/shared";
// Um script de roupas entrega um retrato à tela de personagens.
export function sendPortrait(charId: number, txd: string): void {
emit(CORE.clientCharacterPortraitEvent, charId, `https://nui-img/${txd}/${txd}`);
}ai-core:client:keyHints
A lista de dicas de teclas que os HUDs devem mostrar mudou. Traz a nova lista inteira. Combine com o export GetKeyHints.
Lado: Cliente · Constante: KEY_HINTS.changedEvent
Argumentos
Prop
Type
Listener
Veja o exemplo de GetKeyHints.
ai-core:client:seatbelt
O cinto de segurança do jogador local mudou, no script de cinto que o ai-core lê. Dispara a partir dos scripts que avisam mudanças (ai-smallresources, qbx_seatbelt); com o cinto próprio de um HUD, leia GetSeatbelt quando precisar.
Lado: Cliente · Constante: CORE.clientSeatbeltEvent · Lib: seatbelt.onChange
Argumentos
Prop
Type
Listener
import { seatbelt } from "@aicore-fivem/lib/client";
seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));ai-smallresources:seatbelt
O evento de cinto de segurança próprio do ai-smallresources. HUDs que só suportam o ai-smallresources o escutam. Código novo deve escutar ai-core:client:seatbelt acima, que funciona com todos os scripts de cinto suportados.
Lado: Cliente · Constante: SEATBELT_EVENT
Argumentos
Prop
Type
Listener
import { SEATBELT_EVENT } from "@aicore-fivem/shared";
on(SEATBELT_EVENT, (worn: boolean | null) => console.log(`belt: ${worn}`));Eventos internos de cliente
O Keybind da lib conversa com o cliente do ai-core por dois eventos locais. Não os dispare nem os responda você mesmo; use Keybind (TS) ou aiLib.Keybind (Lua).
| Evento | Constante | Direção | Argumentos |
|---|---|---|---|
ai-core:client:keybind | KEYBIND.announceEvent | da lib para o ai-core | (info: KeybindInfo) um keybind espera pela tecla padrão dele. |
ai-core:client:keybindKey | KEYBIND.keyEvent | do ai-core para a lib | (resource: string, name: string, key: string) a tecla a registrar: a tecla do painel, senão a do próprio script. |
Eventos de servidor
Cada evento local de servidor que o ai-core dispara - personagens, dinheiro, empregos, serviço, gangues, metadata, definições, itens, mortes - com argumentos e listeners em TypeScript e Lua.
Net events
Os net events que um script de cliente pode escutar (o canal de dados do jogador do ai-core) e o tráfego de rede próprio do ai-core que outros scripts não devem disparar.