Menu radial
Adicione, remova e atualize itens no menu radial que o servidor roda, com condições, submenus e handlers de clique.
O menu radial é a roda que os jogadores abrem com uma tecla para escolher ações rápidas (portas do veículo, emotes, ações de emprego). Os scripts adicionam seus itens ao ai-core, e o ai-core os entrega ao menu radial que o servidor roda: ai-radialmenu, ou um de terceiros suportado (tgiann-radialmenu, qb-radialmenu, codem-supreme-radialmenu, o radial do ox_lib).
O ai-core guarda cada item. Quando o menu radial reinicia, ou o dono do servidor troca para outro, o ai-core adiciona cada item de novo sozinho, então seu script adiciona os itens uma vez ao iniciar e nunca precisa vigiar o recurso do radial. Os itens são removidos quando o recurso que os adicionou para.
AddRadialItem
Adiciona um item ao menu radial, ou substitui o item com o mesmo id. As funções do item (canShow, onPressed) rodam dentro do seu recurso.
Lado: Cliente · Espera: não
AddRadialItem(item: RadialItem): voidexports['ai-core']:AddRadialItem(item) -- ou aiLib.radial.add(item)Parâmetros
Prop
Type
RadialItem
Veja também RadialItem.
Prop
Type
Retorno
Nada. Um item sem id ou label em texto não é adicionado, e o ai-core imprime um aviso com o nome do seu recurso.
Exemplo
import { cache, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import { Locale } from "common";
// Uma vez ao iniciar: um interruptor do motor no submenu do veículo, só para o motorista.
radial.add({
id: "myscript_engine",
label: Locale("RADIAL_ENGINE"),
icon: "power-off",
parent: RADIAL_VEHICLE,
canShow: () => cache.vehicle !== false && cache.seat === -1,
onPressed: () => {
if (cache.vehicle === false) return;
SetVehicleEngineOn(cache.vehicle, !GetIsVehicleEngineRunning(cache.vehicle), false, true);
},
});canShow roda toda vez que a roda abre: mantenha-o barato (leia cache, uma variável local ou HasItem) e nunca chame o servidor a partir dele. Não adicione os mesmos itens de novo quando o menu radial reinicia; o ai-core já faz isso.
RemoveRadialItem
Remove um item pelo id.
Lado: Cliente · Espera: não
RemoveRadialItem(id: string): voidexports['ai-core']:RemoveRadialItem(id) -- ou aiLib.radial.remove(id)Parâmetros
Prop
Type
Retorno
Nada.
Exemplo
import { onPlayerData, radial } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Uma ação de algemar só enquanto em serviço como policial.
onPlayerData("duty", (duty) => {
if (duty === "police")
radial.add({ id: "myscript_cuff", label: Locale("RADIAL_CUFF"), icon: "handcuffs", onPressed: () => ExecuteCommand("cuff") });
else radial.remove("myscript_cuff");
});O id não é comparado com o recurso que o adicionou: remover "myscript_cuff" o remove seja quem for que o adicionou. Use ids que comecem com o nome do seu recurso. Para um item que vem e vai com frequência, um canShow é mais simples que adicionar e remover.
RefreshRadial
Lê de novo cada canShow de uma roda aberta, para que os itens apareçam ou sumam enquanto o jogador olha para ela. Chame depois que algo que um canShow lê mudou (o jogador entrou num veículo, entrou em serviço).
Lado: Cliente · Espera: não
RefreshRadial(): voidexports['ai-core']:RefreshRadial() -- ou aiLib.radial.refresh()Parâmetros
Nenhum.
Retorno
Nada. Sem um menu radial rodando, não faz nada.
Exemplo
import { onCache, radial } from "@aicore-fivem/lib/client";
// Os itens do veículo dependem do assento: atualize quando ele muda.
onCache("seat", () => radial.refresh());Itens
Abra o inventário do jogador, verifique um item, leia a arma na mão e abra o seletor de itens do admin, seja qual for o inventário do servidor.
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.