Menú radial
Añade, quita y refresca elementos en el menú radial que tenga el servidor, con condiciones, submenús y handlers de pulsación.
El menú radial es la rueda que los jugadores abren con una tecla para elegir acciones rápidas (puertas del vehículo, emotes, acciones de trabajo). Los scripts añaden sus elementos a ai-core, y ai-core se los entrega al menú radial que tenga el servidor: ai-radialmenu, o uno de terceros compatible (tgiann-radialmenu, qb-radialmenu, codem-supreme-radialmenu, el radial de ox_lib).
ai-core guarda cada elemento. Cuando el menú radial se reinicia, o el dueño del servidor cambia a otro, ai-core vuelve a añadir cada elemento por sí mismo, así que tu script añade sus elementos una vez al iniciar y nunca tiene que vigilar el recurso radial. Los elementos se quitan cuando se detiene el recurso que los añadió.
AddRadialItem
Añade un elemento al menú radial, o reemplaza el elemento con el mismo id. Las funciones del elemento (canShow, onPressed) se ejecutan dentro de tu recurso.
Lado: Cliente · Espera: no
AddRadialItem(item: RadialItem): voidexports['ai-core']:AddRadialItem(item) -- o aiLib.radial.add(item)Parámetros
Prop
Type
RadialItem
Consulta también RadialItem.
Prop
Type
Devuelve
Nada. Un elemento sin un id o label de texto no se añade, y ai-core imprime un aviso que nombra a tu recurso.
Ejemplo
import { cache, radial } from "@aicore-fivem/lib/client";
import { RADIAL_VEHICLE } from "@aicore-fivem/shared";
import { Locale } from "common";
// Una vez al iniciar: un interruptor del motor en el submenú de vehículo, solo para el conductor.
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 se ejecuta cada vez que se abre la rueda: que sea barato (lee cache, una variable local o HasItem), nunca llames al servidor desde él. No vuelvas a añadir los mismos elementos cuando se reinicia el menú radial; ai-core ya lo hace.
RemoveRadialItem
Quita un elemento por su id.
Lado: Cliente · Espera: no
RemoveRadialItem(id: string): voidexports['ai-core']:RemoveRadialItem(id) -- o aiLib.radial.remove(id)Parámetros
Prop
Type
Devuelve
Nada.
Ejemplo
import { onPlayerData, radial } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Una acción de esposar solo mientras se está de servicio como policía.
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");
});El id no se comprueba contra el recurso que lo añadió: quitar "myscript_cuff" lo quita sea quien sea quien lo añadió. Usa ids que empiecen con el nombre de tu recurso. Para un elemento que aparece y desaparece a menudo, un canShow es más sencillo que añadir y quitar.
RefreshRadial
Vuelve a leer cada canShow de una rueda abierta, para que los elementos aparezcan o desaparezcan mientras el jugador la mira. Llámalo después de que cambie algo que lee un canShow (el jugador subió a un vehículo, entró de servicio).
Lado: Cliente · Espera: no
RefreshRadial(): voidexports['ai-core']:RefreshRadial() -- o aiLib.radial.refresh()Parámetros
Ninguno.
Devuelve
Nada. Sin un menú radial en marcha no hace nada.
Ejemplo
import { onCache, radial } from "@aicore-fivem/lib/client";
// Los elementos de vehículo dependen del asiento: refresca cuando cambia.
onCache("seat", () => radial.refresh());Objetos
Abre el inventario del jugador, comprueba un objeto, lee el arma en la mano y abre el selector de objetos de admin, sea cual sea el inventario del servidor.
Gestos y emotes
Comprueba manos arriba y señalar, reproduce y detén emotes por nombre y mira qué script de emotes responde, sea cual sea el menú de emotes del servidor.