AI Core
API-Referenzai-core: Client-Exports

Gesten und Emotes

Erhobene Hände und Zeigen prüfen, Emotes per Name abspielen und stoppen und sehen, welches Emote-Skript antwortet, egal welches Emote-Menü der Server nutzt.

Erhobene Hände, Zeigen und Emotes kommen aus einem Emote-Skript. ai-core fragt das, das läuft, sodass eine Polizeidurchsuchung („sind seine Hände oben?“) oder eine Job-Animation mit jedem von ihnen funktioniert.

Zwei Listen werden getrennt geführt, weil nicht jedes Skript beides kann:

  • Gesten (Hände hoch, Zeigen): tgiann-emotes, codem-emotemenu, rpemotes (und rpemotes-reborn), 0r-animmenu, ai-smallresources. Das erste, das in dieser Reihenfolge läuft, antwortet.
  • Emotes (per Name abspielen, stoppen): tgiann-emotes, rpemotes (und rpemotes-reborn), scully_emotemenu, dpemotes. Das erste, das in dieser Reihenfolge läuft, antwortet.

IsHandsUp

Sagt, ob der lokale Spieler die Hände oben hat, in dem Emote-Skript, das Gesten beantwortet.

Seite: Client · Wartet: nein

Signature
IsHandsUp(): boolean
Lua
local up = exports['ai-core']:IsHandsUp() -- oder aiLib.gestures.isHandsUp()

Parameter

Keine.

Rückgabe

boolean: true, solange die Hände oben sind. false, wenn nicht oder wenn kein Gesten-Skript läuft.

Beispiel

resource/client/rob.ts
import { gestures, notify } from "@aicore-fivem/lib/client";
import { Locale } from "common";

RegisterCommand(
  "surrender_check",
  () => notify(Locale(gestures.isHandsUp() ? "HANDS_UP" : "HANDS_DOWN")),
  false,
);

Das liest nur den lokalen Spieler. Um zu wissen, ob ein anderer Spieler die Hände oben hat (ein Überfall, eine Durchsuchung), frage den Server, der den Client dieses Spielers fragt.

IsPointing

Sagt, ob der lokale Spieler zeigt, in dem Emote-Skript, das Gesten beantwortet.

Seite: Client · Wartet: nein

Signature
IsPointing(): boolean
Lua
local pointing = exports['ai-core']:IsPointing() -- oder aiLib.gestures.isPointing()

Parameter

Keine.

Rückgabe

boolean: true, solange er zeigt. false, wenn nicht, wenn kein Gesten-Skript läuft oder das laufende es nicht sagen kann (0r-animmenu hat keine Zeige-Prüfung).

Beispiel

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

RegisterCommand("ispointing", () => console.log(gestures.isPointing()), false);

GetGestureProvider

Gibt den Ressourcennamen des Emote-Skripts zurück, das erhobene Hände und Zeigen beantwortet.

Seite: Client · Wartet: nein

Signature
GetGestureProvider(): string | null
Lua
local provider = exports['ai-core']:GetGestureProvider() -- oder aiLib.gestures.provider()

Parameter

Keine.

Rückgabe

string: der Ressourcenname ("tgiann-emotes"). null, wenn keines der unterstützten Skripte läuft.

Beispiel

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

// Nutze deine eigene Hände-hoch-Taste nur, wenn kein Emote-Skript eine anbietet.
if (gestures.provider() === null) console.log("no gesture script, enabling my own hands-up key");

PlayEmote

Spielt ein Emote des laufenden Emote-Skripts über seinen Befehlsnamen ab, den Namen, den Spieler nach /e tippen ("sit", "notepad").

Seite: Client · Wartet: nein

Signature
PlayEmote(name: string): boolean
Lua
local played = exports['ai-core']:PlayEmote(name) -- oder aiLib.gestures.playEmote(name)

Parameter

Prop

Type

Rückgabe

boolean: true, wenn der Name gültig ist und ein Emote-Skript aufgefordert wurde, es abzuspielen. false für einen ungültigen Namen oder wenn kein Emote-Skript läuft. true beweist nicht, dass das Emote in diesem Skript existiert: Ein unbekannter Name spielt einfach nichts ab.

Beispiel

resource/client/notes.ts
import { gestures, progress } from "@aicore-fivem/lib/client";
import { Locale } from "common";

// Schreibt eine Notiz mit dem Notizblock-Emote, während der Balken läuft.
export async function writeNote(): Promise<boolean> {
  gestures.playEmote("notepad");
  const done = await progress({ label: Locale("WRITING"), duration: 5000, canCancel: true });
  gestures.cancelEmote();
  return done;
}

CancelEmote

Stoppt das Emote, das der lokale Spieler im laufenden Emote-Skript abspielt. Nutze es, wenn dein Skript die Hände des Spielers braucht (Fesseln, ein Niederschlag, ein Minispiel).

Seite: Client · Wartet: nein

Signature
CancelEmote(): boolean
Lua
local stopped = exports['ai-core']:CancelEmote() -- oder aiLib.gestures.cancelEmote()

Parameter

Keine.

Rückgabe

boolean: true, wenn ein Emote-Skript zum Stoppen aufgefordert wurde (auch wenn nichts lief), false, wenn kein Emote-Skript läuft.

Beispiel

Siehe das Beispiel zu PlayEmote.

GetEmoteProvider

Gibt den Ressourcennamen des Emote-Skripts zurück, das Emotes per Name abspielt.

Seite: Client · Wartet: nein

Signature
GetEmoteProvider(): string | null
Lua
local provider = exports['ai-core']:GetEmoteProvider() -- oder aiLib.gestures.emoteProvider()

Parameter

Keine.

Rückgabe

string: der Ressourcenname ("rpemotes"). null, wenn keines der unterstützten Emote-Skripte läuft.

Beispiel

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

// Bevorzuge das Emote-Skript des Servers, falle auf eine einfache Animation zurück.
export function sitDown(): void {
  if (gestures.emoteProvider() !== null) gestures.playEmote("sit");
  else void player.playAnim("anim@amb@business@bgen@bgen_no_work@", "sit_phone_phoneputdown_idle_nowork");
}

Auf dieser Seite