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
IsHandsUp(): booleanlocal 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
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
IsPointing(): booleanlocal 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
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
GetGestureProvider(): string | nulllocal 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
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
PlayEmote(name: string): booleanlocal 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
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
CancelEmote(): booleanlocal 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
GetEmoteProvider(): string | nulllocal 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
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");
}Menu radial
Adicione, remova e atualize itens no menu radial que o servidor roda, com condições, submenus e handlers de clique.
Aparência
Aplique o visual de um personagem num ped, leia o visual que um ped veste, abra a loja de roupas, o barbeiro ou o menu de outfits e vista o jogador com um uniforme de emprego, seja qual for o script de roupas.