Eventos de cliente
Cada evento local de cliente que dispara ai-core - el personaje local cargado o descargado, el estado de caído, valores en caché, la visibilidad del HUD, la sincronización del mundo, definiciones de trabajos, ayudas de teclas, cinturón - con sus argumentos y listeners.
El cliente de ai-core dispara estos eventos con TriggerEvent en el propio juego del jugador. Todos los recursos de cliente de ese jugador los oyen; los demás jugadores nunca. Solo describen al jugador local.
ai-core:client:playerLoaded
El personaje del jugador local está en el mundo. Empieza aquí tu trabajo de cliente por personaje (valores del HUD, blips de trabajo, bucles).
Lado: Cliente · Constante: CORE.clientPlayerLoadedEvent
Argumentos
Prop
Type
Oyente
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}`);
}
// También cubre el reinicio de un recurso mientras el jugador ya está en el mundo.
const now = core.GetPlayerData();
if (now) start(now);
on(CORE.clientPlayerLoadedEvent, start);ai-core:client:playerUnloaded
Se soltó al personaje local: el jugador volvió a la pantalla de personajes. Detén el trabajo por personaje y borra lo que guardabas para ese personaje. (Cuando el jugador sale del servidor, su juego se cierra; no se dispara nada.)
Lado: Cliente · Constante: CORE.clientPlayerUnloadedEvent
Argumentos
Ninguno.
Oyente
import { CORE } from "@aicore-fivem/shared";
on(CORE.clientPlayerUnloadedEvent, () => {
SendNUIMessage({ action: "reset" });
});ai-core:client:dead
El jugador local cayó (muerto o last stand) o se levantó, en el script de muerte que esté en marcha. Solo se dispara cuando hay un cambio.
Lado: Cliente · Constante: CORE.clientDeadEvent · Lib: medical.onChange
Argumentos
Prop
Type
Oyente
import { medical } from "@aicore-fivem/lib/client";
// Lo mismo que on(CORE.clientDeadEvent, ...).
medical.onChange((dead) => {
if (dead) SendNUIMessage({ action: "close" });
});ai-core:client:cache
Cambió un valor en caché del jugador local. Un único observador de ai-core lee el ped, el vehículo, el asiento y el arma para todos los recursos y solo dispara esto cuando cambia un valor, así que ningún recurso tiene que consultarlos una y otra vez. cache y onCache de la lib (aiLib.cache y aiLib.cache.onChange en Lua) se basan en él; usa esos.
Lado: Cliente · Constante: CORE.clientCacheEvent
Argumentos
Prop
Type
Oyente
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
Los HUD deberían mostrarse u ocultarse: se abrió una interfaz a pantalla completa o se cerró la última. Un recurso de HUD lo escucha.
Lado: Cliente · Constante: CORE.clientHudVisibleEvent · Lib: hud.onChange
Argumentos
Prop
Type
Oyente
import { hud } from "@aicore-fivem/lib/client";
hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));ai-core:client:worldSync
La sincronización de clima y hora se pausó o vuelve a correr. Un script de clima lo escucha. Consulta Sincronización de clima y hora.
Lado: Cliente · Constante: CORE.clientWorldSyncEvent
Argumentos
Prop
Type
Oyente
import { CORE } from "@aicore-fivem/shared";
on(CORE.clientWorldSyncEvent, (paused: boolean) => {
console.log(paused ? "weather sync paused" : "weather sync running");
});ai-core:client:definitions
Se añadió, cambió o borró un trabajo o una banda en el panel de administración. Se dispara en cada cliente, una vez por cada trabajo o banda que cambió. Úsalo junto con el export GetDefinitions.
Lado: Cliente · Constante: CORE.clientDefinitionsEvent
Argumentos
Prop
Type
Oyente
Consulta el ejemplo de GetDefinitions.
ai-core:client:characterPortrait
Una imagen de retrato para la tarjeta de un personaje en la pantalla de personajes. La dispara un script de ropa (ai-appearance); la pantalla de personajes de ai-core la escucha y muestra la imagen. Dispárala tú solo si escribes un script de ropa.
Lado: Cliente · Constante: CORE.clientCharacterPortraitEvent · Lo dispara: el script de ropa, lo oye ai-core
Argumentos
Prop
Type
Oyente
import { CORE } from "@aicore-fivem/shared";
// Un script de ropa entrega un retrato a la pantalla de personajes.
export function sendPortrait(charId: number, txd: string): void {
emit(CORE.clientCharacterPortraitEvent, charId, `https://nui-img/${txd}/${txd}`);
}ai-core:client:keyHints
Cambió la lista de ayudas de teclas que deberían mostrar los HUD. Lleva la lista nueva completa. Úsalo junto con el export GetKeyHints.
Lado: Cliente · Constante: KEY_HINTS.changedEvent
Argumentos
Prop
Type
Oyente
Consulta el ejemplo de GetKeyHints.
ai-core:client:seatbelt
Cambió el cinturón del jugador local, en el script de cinturón que lee ai-core. Se dispara desde los scripts que avisan de los cambios (ai-smallresources, qbx_seatbelt); con el cinturón propio de un HUD, lee GetSeatbelt cuando lo necesites.
Lado: Cliente · Constante: CORE.clientSeatbeltEvent · Lib: seatbelt.onChange
Argumentos
Prop
Type
Oyente
import { seatbelt } from "@aicore-fivem/lib/client";
seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));ai-smallresources:seatbelt
El evento de cinturón propio de ai-smallresources. Los HUD que solo son compatibles con ai-smallresources lo escuchan. El código nuevo debería escuchar ai-core:client:seatbelt (arriba), que funciona con todos los scripts de cinturón compatibles.
Lado: Cliente · Constante: SEATBELT_EVENT
Argumentos
Prop
Type
Oyente
import { SEATBELT_EVENT } from "@aicore-fivem/shared";
on(SEATBELT_EVENT, (worn: boolean | null) => console.log(`belt: ${worn}`));Eventos internos de cliente
El Keybind de la lib habla con el cliente de ai-core con dos eventos locales. No los dispares ni los respondas tú; usa Keybind (TS) o aiLib.Keybind (Lua).
| Evento | Constante | Dirección | Argumentos |
|---|---|---|---|
ai-core:client:keybind | KEYBIND.announceEvent | de la lib a ai-core | (info: KeybindInfo) un keybind espera su tecla por defecto. |
ai-core:client:keybindKey | KEYBIND.keyEvent | de ai-core a la lib | (resource: string, name: string, key: string) la tecla que registrar: la del panel; si no, la propia del script. |
Eventos de servidor
Cada evento local de servidor que dispara ai-core - personajes, dinero, trabajos, servicio, bandas, metadatos, definiciones, objetos, muertes - con sus argumentos y listeners en TypeScript y Lua.
Eventos de red
Los eventos de red que puede escuchar un script de cliente (el canal de datos del jugador de ai-core), y el tráfico de red propio de ai-core que los demás scripts no deben disparar.