AI Core
Esencialesai-radialmenu

ai-radialmenu para desarrolladores

Añadir entradas al menú radial, la forma de RadialItem, los exports de cliente propios de ai-radialmenu y las API de radial a las que responde.

Añade tus entradas a través de AI Core, no a través de ai-radialmenu: radial.add(item) de la lib en TypeScript o aiLib.radial.add(item) en Lua. AI Core guarda las entradas, las entrega al menú radial que use el servidor, las vuelve a dar a un radial que se reinicia y las quita cuando tu recurso se detiene. Llamar directamente a ai-radialmenu ata tu script a una sola rueda.

Añadir una entrada (forma recomendada)

radial.add

Añade una entrada a la rueda, o reemplaza la entrada con el mismo id.

Lado: Cliente · Espera: no

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

Parámetros

Prop

Type

RadialItem

Prop

Type

Devuelve

Nada.

Ejemplo

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

// Una categoría de policía en la rueda principal, mostrada solo de servicio.
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") },
  ],
});

// Una entrada dentro de la categoría de vehículo incluida.
radial.add({
  id: "myscript_windows",
  label: Locale("RADIAL_WINDOWS"),
  icon: "car-side",
  parent: RADIAL_VEHICLE,
  keepOpen: true,
  onPressed: () => notify(Locale("WINDOWS_TOGGLED"), "info"),
});

// Cambió el servicio: vuelve a leer cada canShow de una rueda abierta.
onPlayerData("duty", () => radial.refresh());

Añade tus entradas una vez, cuando se inicia tu recurso. No las vuelvas a añadir cuando se reinicia el menú radial: AI Core lo hace por ti. canShow se ejecuta en cada apertura, así que mantenlo barato (lee datos en caché, sin llamadas al servidor).

radial.remove

Quita una de tus entradas por id. Lado: Cliente · Espera: no.

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

radial.refresh

Vuelve a leer cada canShow de una rueda abierta. Llámalo después de que hayan cambiado los datos que lee tu canShow mientras la rueda puede estar abierta. Lado: Cliente · Espera: no.

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

Exports de cliente propios de ai-radialmenu

Los llama la capa radial de AI Core. Están tipados como AiRadialClientExports en @aicore-fivem/shared.

ExportQué hace
AddItem(item: RadialItem & { onSelect?: () => void }): voidAñade o reemplaza una entrada del recurso que llama. onSelect se acepta como nombre antiguo de onPressed. parent la mete en un submenú.
RemoveItem(id: string, parent?: string): voidQuita una entrada (de debajo de parent si se da).
Refresh(): voidVuelve a leer cada canShow de una rueda abierta.

Las entradas, submenús y estados de entrada de un recurso se quitan cuando ese recurso se detiene.

API a las que responde

ai-radialmenu hace provide de otras dos ruedas, así que sus nombres de export llegan a él:

  • qb-radialmenu: AddOption(data, id?) devuelve el id con el que se guarda la entrada; RemoveOption(id). Campos de entrada title, icon (se acepta fas fa-x), items, action (una función) o type + event (client, server, command, qbcommand), shouldClose = false mantiene la rueda abierta.
  • 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 de entrada label (un texto, o { en, tr } elegido según la convar ai:locale), canInteract(args), onSelect(args), event + type + args, command, export { resource, name, args }, menu, shouldClose, whileDead.

No se responden: GetCurrentMenuId de tgiann-radialmenu-target, sus ajustes y exports de servidor, ni sus eventos locales (menuOpened, itemSelected). Su API de target la responde ai-target.

Eventos

Ninguno para otros scripts. Los mensajes NUI de la rueda (open, update, close) y los callbacks (select, close) son internos.

En esta página