AI Core
Essenciaisai-radialmenu

ai-radialmenu para desenvolvedores

Adicionando itens ao menu radial, o formato RadialItem, os próprios exports do cliente do ai-radialmenu e as APIs de menu radial que ele responde.

Adicione seus itens através do AI Core, não do ai-radialmenu: radial.add(item) da lib em TypeScript ou aiLib.radial.add(item) em Lua. O AI Core guarda os itens, os entrega a qualquer menu radial que o servidor rode, os dá de novo a um menu radial que reinicia, e os remove quando seu recurso para. Chamar o ai-radialmenu diretamente prende seu script a um único menu.

Adicionando um item (forma recomendada)

radial.add

Adiciona um item ao menu, ou substitui o item com o mesmo id.

Lado: Cliente · Espera: não

Signature
radial.add(item: RadialItem): void
Lua
aiLib.radial.add(item)

Parâmetros

Prop

Type

RadialItem

Prop

Type

Retorno

Nada.

Exemplo

import { radial, notify, onPlayerData, getPlayerData } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import Locale from "common/locale";

// Uma categoria de polícia no menu principal, mostrada só em serviço.
radial.add({
  id: "police",
  label: Locale("RADIAL_POLICE"),
  icon: "shield-halved",
  canShow: () => getPlayerData("duty") === "police",
  items: [
    { id: "police_cuff", label: Locale("RADIAL_CUFF"), icon: "handcuffs", onPressed: () => emit("myscript:cuffNearest") },
  ],
});

// Um item dentro da categoria de veículo embutida.
radial.add({
  id: "myscript_windows",
  label: Locale("RADIAL_WINDOWS"),
  icon: "car-side",
  parent: RADIAL_VEHICLE,
  keepOpen: true,
  onPressed: () => notify(Locale("WINDOWS_TOGGLED"), "info"),
});

// O serviço mudou: lê de novo todos os canShow de um menu aberto.
onPlayerData("duty", () => radial.refresh());

Adicione seus itens uma vez, quando seu recurso inicia. Não os adicione de novo quando o menu radial reinicia: o AI Core faz isso por você. canShow roda a cada abertura, então mantenha-o leve (leia dados em cache, sem chamadas ao servidor).

radial.remove

Remove um dos seus itens pelo id. Lado: Cliente · Espera: não.

Signature
radial.remove(id: string): void
Lua
aiLib.radial.remove('myscript_windows')

radial.refresh

Lê de novo todos os canShow de um menu aberto. Chame depois que os dados que o seu canShow lê mudaram enquanto o menu pode estar aberto. Lado: Cliente · Espera: não.

Signature
radial.refresh(): void
Lua
aiLib.radial.refresh()

Exports do cliente do próprio ai-radialmenu

A camada radial do AI Core chama estes. Eles são tipados como AiRadialClientExports em @aicore-fivem/shared.

ExportO que faz
AddItem(item: RadialItem & { onSelect?: () => void }): voidAdiciona ou substitui um item do recurso que chama. onSelect é aceito como nome antigo de onPressed. parent o coloca em um submenu.
RemoveItem(id: string, parent?: string): voidRemove um item (de dentro de parent quando informado).
Refresh(): voidLê de novo todos os canShow de um menu aberto.

Os itens, submenus e estados de item de um recurso são removidos quando esse recurso para.

APIs que ele responde

O ai-radialmenu faz provide de dois outros menus, então os nomes de exports deles chegam a ele:

  • qb-radialmenu: AddOption(data, id?) retorna o id com que o item é guardado; RemoveOption(id). Campos do item title, icon (fas fa-x é aceito), items, action (uma função) ou type + event (client, server, command, qbcommand), shouldClose = false mantém o menu aberto.
  • tgiann-radialmenu-target: AddMenuItem(item | items, parentId?), RemoveMenuItem(id, parentId?), ClearMenuItems(), RegisterSubMenu({ id, items }), RefreshMenu(), DisableMenu(state), IsMenuDisabled(), OpenMenu(), CloseMenu(), IsMenuOpen(), HasMenuItem(id), SetMenuItemHidden(id, state), IsMenuItemHidden(id), UpdateMenuItem(id, { label?, icon? }), ResetMenuItem(id). Campos do item label (um texto, ou { en, tr } escolhido pela convar ai:locale), canInteract(args), onSelect(args), event + type + args, command, export { resource, name, args }, menu, shouldClose, whileDead.

Não respondidos: o GetCurrentMenuId do tgiann-radialmenu-target, suas configurações e exports do servidor, e seus eventos locais (menuOpened, itemSelected). A API de target dele é respondida pelo ai-target.

Eventos

Nenhum para outros scripts. As mensagens NUI do menu (open, update, close) e os callbacks (select, close) são internos.

Nesta página