AI Core
Référence de l’APIExports client d’ai-core

Gestes et emotes

Vérifier les mains en l’air et le pointage, jouer et arrêter des emotes par nom, et savoir quel script d’emotes répond, quel que soit le menu d’emotes du serveur.

Les mains en l’air, le pointage et les emotes viennent d’un script d’emotes. ai-core interroge celui qui tourne, si bien qu’une fouille de police (« a-t-il les mains en l’air ? ») ou une animation de métier fonctionne avec n’importe lequel d’entre eux.

Deux listes sont tenues séparément, car tous les scripts ne font pas les deux :

  • Gestes (mains en l’air, pointage) : tgiann-emotes, codem-emotemenu, rpemotes (et rpemotes-reborn), 0r-animmenu, ai-smallresources. Le premier qui tourne dans cet ordre répond.
  • Emotes (jouer par nom, arrêter) : tgiann-emotes, rpemotes (et rpemotes-reborn), scully_emotemenu, dpemotes. Le premier qui tourne dans cet ordre répond.

IsHandsUp

Indique si le joueur local a les mains en l’air, dans le script d’emotes qui répond pour les gestes.

Côté : Client · Attend : non

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

Paramètres

Aucun.

Retour

boolean : true tant que les mains sont en l’air. false quand elles ne le sont pas, ou quand aucun script de gestes ne tourne.

Exemple

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,
);

Ceci ne lit que le joueur local. Pour savoir si un autre joueur a les mains en l’air (un braquage, une fouille), demandez au serveur, qui interroge le client de ce joueur.

IsPointing

Indique si le joueur local pointe du doigt, dans le script d’emotes qui répond pour les gestes.

Côté : Client · Attend : non

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

Paramètres

Aucun.

Retour

boolean : true pendant le pointage. false sinon, quand aucun script de gestes ne tourne, ou quand celui en cours ne peut pas le dire (0r-animmenu n’a pas de vérification du pointage).

Exemple

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

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

GetGestureProvider

Renvoie le nom de ressource du script d’emotes qui répond pour les mains en l’air et le pointage.

Côté : Client · Attend : non

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

Paramètres

Aucun.

Retour

string : le nom de ressource ("tgiann-emotes"). null quand aucun des scripts pris en charge ne tourne.

Exemple

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

// Utiliser votre propre touche mains en l’air seulement quand aucun script d’emotes n’en offre une.
if (gestures.provider() === null) console.log("no gesture script, enabling my own hands-up key");

PlayEmote

Joue une emote du script d’emotes en cours par son nom de commande, le nom que les joueurs tapent après /e ("sit", "notepad").

Côté : Client · Attend : non

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

Paramètres

Prop

Type

Retour

boolean : true quand le nom est valide et qu’on a demandé à un script d’emotes de la jouer. false pour un nom invalide ou quand aucun script d’emotes ne tourne. true ne prouve pas que l’emote existe dans ce script : un nom inconnu ne joue simplement rien.

Exemple

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

// Écrit une note avec l’emote notepad pendant que la barre avance.
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

Arrête l’emote que joue le joueur local, dans le script d’emotes en cours. Utilisez-le quand votre script a besoin des mains du joueur (menottage, mise à terre, mini-jeu).

Côté : Client · Attend : non

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

Paramètres

Aucun.

Retour

boolean : true quand on a demandé à un script d’emotes d’arrêter (aussi quand rien n’était joué), false quand aucun script d’emotes ne tourne.

Exemple

Voir l’exemple de PlayEmote.

GetEmoteProvider

Renvoie le nom de ressource du script d’emotes qui joue les emotes par nom.

Côté : Client · Attend : non

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

Paramètres

Aucun.

Retour

string : le nom de ressource ("rpemotes"). null quand aucun des scripts d’emotes pris en charge ne tourne.

Exemple

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

// Préférer le script d’emotes du serveur, se rabattre sur une simple animation.
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");
}

Sur cette page