AI Core
Referencia de la APIExports de cliente de ai-core

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

Firma
IsHandsUp(): boolean
Lua
local 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

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

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

Firma
IsPointing(): boolean
Lua
local 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

resource/client/index.ts
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

Firma
GetGestureProvider(): string | null
Lua
local 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

resource/client/index.ts
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

Firma
PlayEmote(name: string): boolean
Lua
local 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

resource/client/notes.ts
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

Firma
CancelEmote(): boolean
Lua
local 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

Firma
GetEmoteProvider(): string | null
Lua
local 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

resource/client/index.ts
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");
}

En esta página