AI Core
Referencia de la APIExports de cliente de ai-core

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

Firma
AddRadialItem(item: RadialItem): void
Lua
exports['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

resource/client/radial.ts
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

Firma
RemoveRadialItem(id: string): void
Lua
exports['ai-core']:RemoveRadialItem(id) -- o aiLib.radial.remove(id)

Parámetros

Prop

Type

Devuelve

Nada.

Ejemplo

resource/client/duty.ts
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

Firma
RefreshRadial(): void
Lua
exports['ai-core']:RefreshRadial() -- o aiLib.radial.refresh()

Parámetros

Ninguno.

Devuelve

Nada. Sin un menú radial en marcha no hace nada.

Ejemplo

resource/client/radial.ts
import { onCache, radial } from "@aicore-fivem/lib/client";

// Los elementos de vehículo dependen del asiento: refresca cuando cambia.
onCache("seat", () => radial.refresh());

En esta página