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
radial.add(item: RadialItem): voidaiLib.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.
radial.remove(id: string): voidaiLib.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.
radial.refresh(): voidaiLib.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.
| Export | Qué hace |
|---|---|
AddItem(item: RadialItem & { onSelect?: () => void }): void | Añ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): void | Quita una entrada (de debajo de parent si se da). |
Refresh(): void | Vuelve 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 entradatitle,icon(se aceptafas fa-x),items,action(una función) otype+event(client,server,command,qbcommand),shouldClose = falsemantiene 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 entradalabel(un texto, o{ en, tr }elegido según la convarai: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.
ai-radialmenu
El menú radial en F3, con acciones incluidas y las entradas que añaden todos los demás scripts. Responde a las API de qb-radialmenu y tgiann-radialmenu-target.
ai-target
El ojo de interacción. Marcadores en lo que un jugador puede usar; la tecla de interacción elige uno. Responde a la API de ox_target.