AI Core
Referência da APIAI Core: exports de servidor

Painel de administração e comandos

Os exports por trás do painel de administração do ai-core - registro de painéis, mudanças no painel, a aba Commands, listas de consulta e as telas de configuração de outros scripts no dashboard.

O ai-core hospeda um painel de administração para todos os scripts. A maioria dos exports desta página é encanamento que o @aicore-fivem/lib chama por você: um script feito com o AdminPanel e o addCommand da lib nunca chama RegisterAdminPanel, AdminPanelChanged ou RegisterCommands ele mesmo. Eles estão documentados para você saber o que acontece e poder suportá-los a partir de outra linguagem. RegisterExternalPanel e GetLookupValues são úteis para qualquer script.

RegisterAdminPanel

Anuncia que o recurso que chama tem uma seção no painel. O ai-core então pede a ele o schema e os dados sempre que um admin abre o painel.

Lado: Servidor · Espera: não · Lib: chamado pelo AdminPanel da lib quando ele inicia

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

Parâmetros

Prop

Type

Retorno

Nada. O registro é descartado quando o recurso para.

Exemplo

Sem exemplo: o AdminPanel da lib o chama. Um recurso que se registra sem a lib também precisa responder aos exports que o ai-core chama de volta (AdminPanelSnapshot, AdminPanelData, AdminPanelSummary, tipados como AdminPanelResourceExports em @aicore-fivem/shared), o que é trabalho da lib.

AdminPanelChanged

Um recurso com painel avisa o ai-core que um dos seus registros mudou. O ai-core encaminha a mudança para cada admin que está com o painel aberto, então a tela dele atualiza sem recarregar.

Lado: Servidor · Espera: não · Lib: chamado pelo AdminPanel da lib depois de cada mudança salva

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

Parâmetros

Prop

Type

Veja AdminDelta.

Retorno

Nada. O ai-core não verifica o delta; ele o envia como recebeu.

Exemplo

Sem exemplo: o AdminPanel da lib o chama depois que uma mudança foi validada e salva.

RegisterCommands

Lista os comandos de um recurso na aba Commands (Comandos) do painel, com a ajuda, os parâmetros e quem pode usá-los.

Lado: Servidor · Espera: não · Lib: chamado pelo addCommand da lib (TypeScript e aiLib.addCommand em Lua)

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

Parâmetros

Prop

Type

Veja CommandInfo e CommandParam.

Retorno

Nada. A lista é descartada quando o recurso para. Para comandos restritos a um principal (group.admin), o ai-core também concede a esse principal command.<name>, o que exige add_ace resource.ai-core command.add_ace allow (e command.remove_ace) no permission.cfg.

Exemplo

Sem exemplo: use o addCommand da lib (TypeScript) ou aiLib.addCommand (Lua) e o comando aparece na aba sozinho. Comandos criados com um RegisterCommand puro também são listados, marcados como simples.

GetLookupValues

Os valores de uma lista de consulta: os nomes de itens do inventário ativo, os nomes de empregos, de gangues e assim por diante. A validação do painel da lib usa isto para verificar se um valor que um admin digitou existe.

Lado: Servidor · Espera: não · Lib: usado pela validação do AdminPanel da lib

Assinatura
GetLookupValues(source: LookupSource): string[]
Lua
local items = exports['ai-core']:GetLookupValues('item') -- lista de nomes de itens

Parâmetros

Prop

Type

sourceValores
itemNomes de itens do inventário ativo.
job / gangNomes de empregos / gangues do painel.
accountNomes de tipos de conta (cash, bank...).
resourceNomes dos recursos iniciados.
playerCitizen ids dos jogadores com um personagem carregado.
vehicle / pedSempre vazio: só o jogo do admin consegue listar modelos.

Veja LookupSource.

Retorno

string[]: os valores, ordenados pelo rótulo. Uma lista vazia para um source desconhecido, para vehicle e ped, e quando a lista ainda não é conhecida (nenhum inventário rodando): trate vazio como "não dá para verificar", não como "nada é válido".

Exemplo

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);
}

A lista é montada do zero a cada chamada (a lista de itens pode ser longa). Chame quando validar, não num loop.

RegisterExternalPanel

Lista a própria tela de configurações de outro script no dashboard do painel do ai-core, para que o dono do servidor encontre as configurações de todos os scripts num só lugar. O card abre a tela com um comando de chat, ou mostra uma página web dentro do painel.

Lado: Servidor · Espera: não · Lib: nenhuma

Assinatura
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 do painel

Prop

Type

Retorno

Nada. Sem um label, ou sem command e url, o card não é adicionado. Os cards são descartados quando seu recurso para.

Exemplo

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

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

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

Um script que você não pode alterar pode ser listado por linhas no fxmanifest.lua dele: ai_admin_label, ai_admin_command ou ai_admin_url, e opcionalmente ai_admin_icon e ai_admin_description. O dono do servidor também pode adicionar cards à mão no painel.

Nesta página