Gestos y emotes
Comprueba manos arriba y señalar, reproduce y detén emotes por nombre y mira qué script de emotes responde, sea cual sea el menú de emotes del servidor.
Las manos arriba, señalar y los emotes vienen de un script de emotes. ai-core pregunta al que esté en marcha, así que un cacheo policial ("¿tiene las manos arriba?") o una animación de trabajo funciona con cualquiera de ellos.
Se mantienen dos listas separadas, porque no todos los scripts hacen ambas cosas:
- Gestos (manos arriba, señalar): tgiann-emotes, codem-emotemenu, rpemotes (y rpemotes-reborn), 0r-animmenu, ai-smallresources. Responde el primero que esté en marcha en este orden.
- Emotes (reproducir por nombre, detener): tgiann-emotes, rpemotes (y rpemotes-reborn), scully_emotemenu, dpemotes. Responde el primero que esté en marcha en este orden.
IsHandsUp
Indica si el jugador local tiene las manos arriba, en el script de emotes que responda a los gestos.
Lado: Cliente · Espera: no
IsHandsUp(): booleanlocal up = exports['ai-core']:IsHandsUp() -- o aiLib.gestures.isHandsUp()Parámetros
Ninguno.
Devuelve
boolean: true mientras las manos están arriba. false cuando no lo están, o cuando no hay ningún script de gestos en marcha.
Ejemplo
import { gestures, notify } from "@aicore-fivem/lib/client";
import { Locale } from "common";
RegisterCommand(
"surrender_check",
() => notify(Locale(gestures.isHandsUp() ? "HANDS_UP" : "HANDS_DOWN")),
false,
);Esto solo lee al jugador local. Para saber si otro jugador tiene las manos arriba (un robo, un cacheo), pregunta al servidor, que pregunta al cliente de ese jugador.
IsPointing
Indica si el jugador local está señalando, en el script de emotes que responda a los gestos.
Lado: Cliente · Espera: no
IsPointing(): booleanlocal pointing = exports['ai-core']:IsPointing() -- o aiLib.gestures.isPointing()Parámetros
Ninguno.
Devuelve
boolean: true mientras señala. false cuando no, cuando no hay ningún script de gestos en marcha o cuando el que está en marcha no puede saberlo (0r-animmenu no tiene comprobación de señalar).
Ejemplo
import { gestures } from "@aicore-fivem/lib/client";
RegisterCommand("ispointing", () => console.log(gestures.isPointing()), false);GetGestureProvider
Devuelve el nombre de recurso del script de emotes que responde a manos arriba y señalar.
Lado: Cliente · Espera: no
GetGestureProvider(): string | nulllocal provider = exports['ai-core']:GetGestureProvider() -- o aiLib.gestures.provider()Parámetros
Ninguno.
Devuelve
string: el nombre del recurso ("tgiann-emotes"). null cuando no hay en marcha ninguno de los scripts compatibles.
Ejemplo
import { gestures } from "@aicore-fivem/lib/client";
// Usa tu propia tecla de manos arriba solo cuando ningún script de emotes ofrece una.
if (gestures.provider() === null) console.log("no gesture script, enabling my own hands-up key");PlayEmote
Reproduce un emote del script de emotes en marcha por su nombre de comando, el nombre que los jugadores escriben después de /e ("sit", "notepad").
Lado: Cliente · Espera: no
PlayEmote(name: string): booleanlocal played = exports['ai-core']:PlayEmote(name) -- o aiLib.gestures.playEmote(name)Parámetros
Prop
Type
Devuelve
boolean: true cuando el nombre es válido y se pidió a un script de emotes que lo reproduzca. false para un nombre no válido o cuando no hay ningún script de emotes en marcha. true no demuestra que el emote exista en ese script: un nombre desconocido simplemente no reproduce nada.
Ejemplo
import { gestures, progress } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Escribe una nota con el emote de libreta mientras corre la barra.
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
Detiene el emote que está reproduciendo el jugador local, en el script de emotes en marcha. Úsalo cuando tu script necesite las manos del jugador (esposar, un derribo, un minijuego).
Lado: Cliente · Espera: no
CancelEmote(): booleanlocal stopped = exports['ai-core']:CancelEmote() -- o aiLib.gestures.cancelEmote()Parámetros
Ninguno.
Devuelve
boolean: true cuando se pidió a un script de emotes que pare (también cuando no se reproducía nada), false cuando no hay ningún script de emotes en marcha.
Ejemplo
Consulta el ejemplo de PlayEmote.
GetEmoteProvider
Devuelve el nombre de recurso del script de emotes que reproduce emotes por nombre.
Lado: Cliente · Espera: no
GetEmoteProvider(): string | nulllocal provider = exports['ai-core']:GetEmoteProvider() -- o aiLib.gestures.emoteProvider()Parámetros
Ninguno.
Devuelve
string: el nombre del recurso ("rpemotes"). null cuando no hay en marcha ninguno de los scripts de emotes compatibles.
Ejemplo
import { gestures, player } from "@aicore-fivem/lib/client";
// Prefiere el script de emotes del servidor, si no, una animación simple.
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");
}Menú radial
Añade, quita y refresca elementos en el menú radial que tenga el servidor, con condiciones, submenús y handlers de pulsación.
Aspecto
Pon el aspecto de un personaje en un ped, lee el aspecto que lleva un ped, abre la tienda de ropa, la barbería o el menú de conjuntos y viste al jugador con un conjunto de trabajo, sea cual sea el script de ropa.