AI Core
Referencia de la APIEventos y estado

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

resource/client/index.ts
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

resource/client/index.ts
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

resource/client/index.ts
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

resource/client/index.ts
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

resource/client/hud.ts
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

resource/client/weather.ts
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

resource/client/portraits.ts
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

resource/client/hud.ts
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

resource/client/hud.ts
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).

EventoConstanteDirecciónArgumentos
ai-core:client:keybindKEYBIND.announceEventde la lib a ai-core(info: KeybindInfo) un keybind espera su tecla por defecto.
ai-core:client:keybindKeyKEYBIND.keyEventde ai-core a la lib(resource: string, name: string, key: string) la tecla que registrar: la del panel; si no, la propia del script.

En esta página