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
radial.add(item: RadialItem): voidaiLib.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.
radial.remove(id: string): voidaiLib.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.
radial.refresh(): voidaiLib.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.
| Export | O que faz |
|---|---|
AddItem(item: RadialItem & { onSelect?: () => void }): void | Adiciona 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): void | Remove um item (de dentro de parent quando informado). |
Refresh(): void | Lê 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 itemtitle,icon(fas fa-xé aceito),items,action(uma função) outype+event(client,server,command,qbcommand),shouldClose = falsemanté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 itemlabel(um texto, ou{ en, tr }escolhido pela convarai: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.