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

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

Assinatura
AddRadialItem(item: RadialItem): void
Lua
exports['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

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

Assinatura
RemoveRadialItem(id: string): void
Lua
exports['ai-core']:RemoveRadialItem(id) -- ou aiLib.radial.remove(id)

Parâmetros

Prop

Type

Retorno

Nada.

Exemplo

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

Assinatura
RefreshRadial(): void
Lua
exports['ai-core']:RefreshRadial() -- ou aiLib.radial.refresh()

Parâmetros

Nenhum.

Retorno

Nada. Sem um menu radial rodando, não faz nada.

Exemplo

resource/client/radial.ts
import { onCache, radial } from "@aicore-fivem/lib/client";

// Os itens do veículo dependem do assento: atualize quando ele muda.
onCache("seat", () => radial.refresh());

Nesta página