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
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
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
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
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
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
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
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
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
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).
| Event | Konstante | Richtung | Argumente |
|---|---|---|---|
ai-core:client:keybind | KEYBIND.announceEvent | Lib an ai-core | (info: KeybindInfo) ein Keybind wartet auf seine Standardtaste. |
ai-core:client:keybindKey | KEYBIND.keyEvent | ai-core an Lib | (resource: string, name: string, key: string) die zu registrierende Taste: die Taste des Panels, sonst die eigene des Skripts. |
Server-Events
Jedes lokale Server-Event, das ai-core auslöst - Charaktere, Geld, Jobs, Dienst, Gangs, Metadaten, Definitionen, Items, Tode - mit Argumenten und Listenern in TypeScript und Lua.
Net-Events
Die Net-Events, auf die ein Client-Skript hören darf (der Spielerdaten-Kanal von ai-core), und der eigene Netzwerkverkehr von ai-core, den andere Skripte nicht auslösen dürfen.