AI Core
Referencia de la APIAI Core: exports de servidor

Panel de administración y comandos

Los exports detrás del panel de administración de ai-core - registro de paneles, cambios en el panel, la pestaña Commands, listas de valores y las pantallas de ajustes de otros scripts en el dashboard.

ai-core aloja un único panel de administración para todos los scripts. La mayoría de los exports de esta página son fontanería que @aicore-fivem/lib llama por ti: un script construido con AdminPanel y addCommand de la lib nunca llama por sí mismo a RegisterAdminPanel, AdminPanelChanged ni RegisterCommands. Se documentan para que sepas qué ocurre y puedas darles soporte desde otro lenguaje. RegisterExternalPanel y GetLookupValues son útiles para cualquier script.

RegisterAdminPanel

Anuncia que el recurso que llama tiene una sección en el panel. Entonces ai-core le pide su esquema y sus datos cada vez que un admin abre el panel.

Lado: Servidor · Espera: no · Lib: lo llama el AdminPanel de la lib cuando se inicia

Firma
RegisterAdminPanel(resource: string): void
Lua
exports['ai-core']:RegisterAdminPanel(GetCurrentResourceName())

Parámetros

Prop

Type

Devuelve

Nada. El registro se elimina cuando el recurso se detiene.

Ejemplo

Sin ejemplo: lo llama el AdminPanel de la lib. Un recurso que se registre sin la lib también debe responder a los exports a los que ai-core llama de vuelta (AdminPanelSnapshot, AdminPanelData, AdminPanelSummary, tipados como AdminPanelResourceExports en @aicore-fivem/shared), que es trabajo de la lib.

AdminPanelChanged

Un recurso de panel avisa a ai-core de que cambió uno de sus registros. ai-core reenvía el cambio a cada admin que tiene el panel abierto, para que su pantalla se actualice sin recargar.

Lado: Servidor · Espera: no · Lib: lo llama el AdminPanel de la lib tras cada cambio guardado

Firma
AdminPanelChanged(delta: AdminDelta): void
Lua
exports['ai-core']:AdminPanelChanged({ resource = GetCurrentResourceName(), file = 'shops', key = 'shop_1', value = record })

Parámetros

Prop

Type

Consulta AdminDelta.

Devuelve

Nada. ai-core no comprueba el delta; lo envía tal cual.

Ejemplo

Sin ejemplo: lo llama el AdminPanel de la lib después de validar y guardar un cambio.

RegisterCommands

Lista los comandos de un recurso en la pestaña Commands (comandos) del panel, con su ayuda, sus parámetros y quién puede usarlos.

Lado: Servidor · Espera: no · Lib: lo llama el addCommand de la lib (TypeScript y aiLib.addCommand en Lua)

Firma
RegisterCommands(resource: string, commands: CommandInfo[]): void
Lua
exports['ai-core']:RegisterCommands(GetCurrentResourceName(), commands)

Parámetros

Prop

Type

Consulta CommandInfo y CommandParam.

Devuelve

Nada. La lista se elimina cuando el recurso se detiene. Para comandos restringidos a un principal (group.admin), ai-core también concede a ese principal command.<name>, lo que necesita add_ace resource.ai-core command.add_ace allow (y command.remove_ace) en permission.cfg.

Ejemplo

Sin ejemplo: usa addCommand de la lib (TypeScript) o aiLib.addCommand (Lua) y el comando aparece solo en la pestaña. Los comandos creados con un RegisterCommand a secas también se listan, marcados como simples.

GetLookupValues

Los valores de una lista de valores: los nombres de objetos del inventario activo, los nombres de trabajos, de bandas, etc. La validación del panel de la lib lo usa para comprobar que existe un valor que ha escrito un admin.

Lado: Servidor · Espera: no · Lib: lo usa la validación del AdminPanel de la lib

Firma
GetLookupValues(source: LookupSource): string[]
Lua
local items = exports['ai-core']:GetLookupValues('item') -- lista de nombres de objetos

Parámetros

Prop

Type

sourceValores
itemNombres de objetos del inventario activo.
job / gangNombres de trabajos / bandas del panel.
accountNombres de tipos de cuenta (cash, bank...).
resourceNombres de los recursos iniciados.
playerCitizen ids de los jugadores con un personaje cargado.
vehicle / pedSiempre vacío: solo el juego del admin puede listar modelos.

Consulta LookupSource.

Devuelve

string[]: los valores, ordenados por su etiqueta. Una lista vacía para un source desconocido, para vehicle y ped, y cuando la lista aún no se conoce (no hay ningún inventario en marcha): trata la lista vacía como "no se puede comprobar", no como "nada es válido".

Ejemplo

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

/** Checks a reward item from your config; unknown is fine while no inventory runs. */
export function isKnownItem(name: string): boolean {
  const items = core.GetLookupValues("item");
  return items.length === 0 || items.includes(name);
}

La lista se construye de nuevo en cada llamada (la lista de objetos puede ser larga). Llámalo cuando valides, no en un bucle.

RegisterExternalPanel

Lista la pantalla de ajustes propia de otro script en el dashboard del panel de ai-core, para que el dueño del servidor encuentre los ajustes de todos los scripts en un solo sitio. La tarjeta abre la pantalla con un comando de chat, o muestra una página web dentro del panel.

Lado: Servidor · Espera: no · Lib: ninguna

Firma
RegisterExternalPanel(panel: {
  id?: string;
  label: string;
  icon?: string;
  description?: string;
  command?: string;
  url?: string;
}): void
Lua
exports['ai-core']:RegisterExternalPanel({ label = 'My script', command = 'myscriptconfig' })

Parámetros

Prop

Type

Campos del panel

Prop

Type

Devuelve

Nada. Sin un label, o sin command ni url, la tarjeta no se añade. Las tarjetas se eliminan cuando tu recurso se detiene.

Ejemplo

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

// Una vez al iniciar.
core.RegisterExternalPanel({
  label: "My script",
  icon: "gear",
  description: "Shops, prices and rewards",
  command: "myscriptconfig",
});

Un script que no puedes cambiar puede listarse con líneas en su fxmanifest.lua: ai_admin_label, ai_admin_command o ai_admin_url, y opcionalmente ai_admin_icon y ai_admin_description. El dueño del servidor también puede añadir tarjetas a mano en el panel.

En esta página