AI Core
API-ReferenzEvents und Zustand

Client-Events

Jedes lokale Client-Event, das ai-core auslöst - der lokale Charakter geladen oder entladen, Zustand am Boden, gecachte Werte, HUD-Sichtbarkeit, Welt-Sync, Job-Definitionen, Tastenhinweise, Sicherheitsgurt - mit Argumenten und Listenern.

Der Client von ai-core löst diese Events mit TriggerEvent im eigenen Spiel des Spielers aus. Jede Client-Ressource dieses Spielers hört sie; andere Spieler nie. Sie beschreiben nur den lokalen Spieler.

ai-core:client:playerLoaded

Der Charakter des lokalen Spielers steht in der Welt. Starte hier deine Client-Arbeit pro Charakter (HUD-Werte, Job-Blips, Schleifen).

Seite: Client · Konstante: CORE.clientPlayerLoadedEvent

Argumente

Prop

Type

Listener

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}`);
}

// Deckt auch einen Neustart der Ressource ab, während der Spieler schon in der Welt ist.
const now = core.GetPlayerData();
if (now) start(now);
on(CORE.clientPlayerLoadedEvent, start);

ai-core:client:playerUnloaded

Der lokale Charakter wurde losgelassen: Der Spieler ist zum Charakterbildschirm zurückgekehrt. Stoppe die Arbeit pro Charakter und lösche, was du für diesen Charakter gehalten hast. (Wenn der Spieler den Server verlässt, schließt sich sein Spiel; nichts wird ausgelöst.)

Seite: Client · Konstante: CORE.clientPlayerUnloadedEvent

Argumente

Keine.

Listener

resource/client/index.ts
import { CORE } from "@aicore-fivem/shared";

on(CORE.clientPlayerUnloadedEvent, () => {
  SendNUIMessage({ action: "reset" });
});

ai-core:client:dead

Der lokale Spieler ist zu Boden gegangen (tot oder Last Stand) oder wieder aufgestanden, im laufenden Tod-Skript. Wird nur bei einer Änderung ausgelöst.

Seite: Client · Konstante: CORE.clientDeadEvent · Lib: medical.onChange

Argumente

Prop

Type

Listener

resource/client/index.ts
import { medical } from "@aicore-fivem/lib/client";

// Dasselbe wie on(CORE.clientDeadEvent, ...).
medical.onChange((dead) => {
  if (dead) SendNUIMessage({ action: "close" });
});

ai-core:client:cache

Ein gecachter Wert des lokalen Spielers hat sich geändert. Ein Beobachter in ai-core liest Ped, Fahrzeug, Sitz und Waffe für jede Ressource und löst dies nur aus, wenn sich ein Wert ändert, sodass keine Ressource sie abfragen muss. cache und onCache der Lib (aiLib.cache und aiLib.cache.onChange in Lua) bauen darauf auf; nutze diese.

Seite: Client · Konstante: CORE.clientCacheEvent

Argumente

Prop

Type

Listener

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

HUDs sollen sich ein- oder ausblenden: Eine Vollbild-UI wurde geöffnet oder die letzte geschlossen. Eine HUD-Ressource hört darauf.

Seite: Client · Konstante: CORE.clientHudVisibleEvent · Lib: hud.onChange

Argumente

Prop

Type

Listener

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

hud.onChange((visible) => SendNUIMessage({ action: "visible", data: visible }));

ai-core:client:worldSync

Die Wetter- und Zeitsynchronisierung wurde angehalten oder läuft wieder. Ein Wetter-Skript hört darauf. Siehe Wetter- und Zeitsynchronisierung.

Seite: Client · Konstante: CORE.clientWorldSyncEvent

Argumente

Prop

Type

Listener

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

Ein Job oder eine Gang wurde im Admin-Panel hinzugefügt, geändert oder gelöscht. Wird auf jedem Client ausgelöst, einmal pro geändertem Job oder geänderter Gang. Kombiniere es mit dem Export GetDefinitions.

Seite: Client · Konstante: CORE.clientDefinitionsEvent

Argumente

Prop

Type

Listener

Siehe das Beispiel zu GetDefinitions.

ai-core:client:characterPortrait

Ein Porträtbild für eine Charakterkarte auf dem Charakterbildschirm. Ein Kleidungs-Skript (ai-appearance) löst es aus; der Charakterbildschirm von ai-core hört darauf und zeigt das Bild. Löse es nur selbst aus, wenn du ein Kleidungs-Skript schreibst.

Seite: Client · Konstante: CORE.clientCharacterPortraitEvent · Ausgelöst von: dem Kleidungs-Skript, gehört von ai-core

Argumente

Prop

Type

Listener

resource/client/portraits.ts
import { CORE } from "@aicore-fivem/shared";

// Ein Kleidungs-Skript übergibt ein Porträt an den Charakterbildschirm.
export function sendPortrait(charId: number, txd: string): void {
  emit(CORE.clientCharacterPortraitEvent, charId, `https://nui-img/${txd}/${txd}`);
}

ai-core:client:keyHints

Die Liste der Tastenhinweise, die HUDs zeigen sollen, hat sich geändert. Trägt die ganze neue Liste. Kombiniere es mit dem Export GetKeyHints.

Seite: Client · Konstante: KEY_HINTS.changedEvent

Argumente

Prop

Type

Listener

Siehe das Beispiel zu GetKeyHints.

ai-core:client:seatbelt

Der Sicherheitsgurt des lokalen Spielers hat sich geändert, in dem Gurt-Skript, das ai-core liest. Wird von den Skripten ausgelöst, die Änderungen melden (ai-smallresources, qbx_seatbelt); bei einem eigenen Gurt eines HUD lies GetSeatbelt, wenn du es brauchst.

Seite: Client · Konstante: CORE.clientSeatbeltEvent · Lib: seatbelt.onChange

Argumente

Prop

Type

Listener

resource/client/hud.ts
import { seatbelt } from "@aicore-fivem/lib/client";

seatbelt.onChange((worn) => SendNUIMessage({ action: "belt", data: worn === true }));

ai-smallresources:seatbelt

Das eigene Gurt-Event von ai-smallresources. HUDs, die nur ai-smallresources unterstützen, hören darauf. Neuer Code sollte auf ai-core:client:seatbelt oben hören, das mit jedem unterstützten Gurt-Skript funktioniert.

Seite: Client · Konstante: SEATBELT_EVENT

Argumente

Prop

Type

Listener

resource/client/hud.ts
import { SEATBELT_EVENT } from "@aicore-fivem/shared";

on(SEATBELT_EVENT, (worn: boolean | null) => console.log(`belt: ${worn}`));

Interne Client-Events

Keybind der Lib spricht über zwei lokale Events mit dem Client von ai-core. Löse sie nicht selbst aus und beantworte sie nicht; nutze Keybind (TS) oder aiLib.Keybind (Lua).

EventKonstanteRichtungArgumente
ai-core:client:keybindKEYBIND.announceEventLib an ai-core(info: KeybindInfo) ein Keybind wartet auf seine Standardtaste.
ai-core:client:keybindKeyKEYBIND.keyEventai-core an Lib(resource: string, name: string, key: string) die zu registrierende Taste: die Taste des Panels, sonst die eigene des Skripts.

Auf dieser Seite