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
IsHandsUp(): booleanlocal 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
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
IsPointing(): booleanlocal 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
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
GetGestureProvider(): string | nulllocal 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
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
PlayEmote(name: string): booleanlocal 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
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
CancelEmote(): booleanlocal 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
GetEmoteProvider(): string | nulllocal 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
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");
}Menu radial
Ajouter, retirer et rafraîchir des entrées sur le menu radial qu’utilise le serveur, avec conditions, sous-menus et handlers d’appui.
Apparence
Mettre l’apparence d’un personnage sur un ped, lire l’apparence que porte un ped, ouvrir le magasin de vêtements, le barbier ou le menu des tenues, et habiller le joueur d’une tenue de métier, quel que soit le script de vêtements.