AI Core
Referência da APIExports de cliente do ai-core

Gestos e emotes

Verifique mãos para cima e apontar, toque e pare emotes pelo nome e veja qual script de emotes responde, seja qual for o menu de emotes do servidor.

Mãos para cima, apontar e emotes vêm de um script de emotes. O ai-core pergunta ao que estiver rodando, então uma revista policial ("as mãos dele estão para cima?") ou uma animação de emprego funciona com qualquer um deles.

Duas listas são mantidas separadas, porque nem todo script faz as duas coisas:

  • Gestos (mãos para cima, apontar): tgiann-emotes, codem-emotemenu, rpemotes (e rpemotes-reborn), 0r-animmenu, ai-smallresources. O primeiro que estiver rodando nesta ordem responde.
  • Emotes (tocar pelo nome, parar): tgiann-emotes, rpemotes (e rpemotes-reborn), scully_emotemenu, dpemotes. O primeiro que estiver rodando nesta ordem responde.

IsHandsUp

Diz se o jogador local está com as mãos para cima, no script de emotes que responde aos gestos.

Lado: Cliente · Espera: não

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

Parâmetros

Nenhum.

Retorno

boolean: true enquanto as mãos estão para cima. false quando não estão, ou quando nenhum script de gestos está rodando.

Exemplo

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

Isto lê só o jogador local. Para saber se outro jogador está com as mãos para cima (um assalto, uma revista), pergunte ao servidor, que pergunta ao cliente daquele jogador.

IsPointing

Diz se o jogador local está apontando, no script de emotes que responde aos gestos.

Lado: Cliente · Espera: não

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

Parâmetros

Nenhum.

Retorno

boolean: true enquanto aponta. false quando não aponta, quando nenhum script de gestos está rodando ou quando o que está rodando não sabe dizer (o 0r-animmenu não tem verificação de apontar).

Exemplo

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

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

GetGestureProvider

Retorna o nome do recurso do script de emotes que responde a mãos para cima e apontar.

Lado: Cliente · Espera: não

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

Parâmetros

Nenhum.

Retorno

string: o nome do recurso ("tgiann-emotes"). null quando nenhum dos scripts suportados está rodando.

Exemplo

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

// Use sua própria tecla de mãos para cima só quando nenhum script de emotes oferece uma.
if (gestures.provider() === null) console.log("no gesture script, enabling my own hands-up key");

PlayEmote

Toca um emote do script de emotes ativo pelo nome do comando, o nome que os jogadores digitam depois de /e ("sit", "notepad").

Lado: Cliente · Espera: não

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

Parâmetros

Prop

Type

Retorno

boolean: true quando o nome é válido e um script de emotes recebeu o pedido de tocá-lo. false para um nome inválido ou quando nenhum script de emotes está rodando. true não prova que o emote existe naquele script: um nome desconhecido simplesmente não toca nada.

Exemplo

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

// Escreve uma nota com o emote de bloco de notas enquanto a barra corre.
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

Para o emote que o jogador local está tocando, no script de emotes ativo. Use quando seu script precisa das mãos do jogador (algemar, uma queda, um minigame).

Lado: Cliente · Espera: não

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

Parâmetros

Nenhum.

Retorno

boolean: true quando um script de emotes recebeu o pedido de parar (também quando nada estava tocando), false quando nenhum script de emotes está rodando.

Exemplo

Veja o exemplo de PlayEmote.

GetEmoteProvider

Retorna o nome do recurso do script de emotes que toca emotes pelo nome.

Lado: Cliente · Espera: não

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

Parâmetros

Nenhum.

Retorno

string: o nome do recurso ("rpemotes"). null quando nenhum dos scripts de emotes suportados está rodando.

Exemplo

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

// Prefira o script de emotes do servidor, com uma animação simples como alternativa.
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");
}

Nesta página