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
RegisterAdminPanel(resource: string): voidexports['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
AdminPanelChanged(delta: AdminDelta): voidexports['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)
RegisterCommands(resource: string, commands: CommandInfo[]): voidexports['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
GetLookupValues(source: LookupSource): string[]local items = exports['ai-core']:GetLookupValues('item') -- lista de nomes de itensParâmetros
Prop
Type
source | Valores |
|---|---|
item | Nomes de itens do inventário ativo. |
job / gang | Nomes de empregos / gangues do painel. |
account | Nomes de tipos de conta (cash, bank...). |
resource | Nomes dos recursos iniciados. |
player | Citizen ids dos jogadores com um personagem carregado. |
vehicle / ped | Sempre 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
RegisterExternalPanel(panel: {
id?: string;
label: string;
icon?: string;
description?: string;
command?: string;
url?: string;
}): voidexports['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.
Verificações de conexão
Adicione verificações que todo jogador que conecta precisa passar (whitelists, bans) e declare que seu script substitui outro.
Ponte vRP
Os exports que a ponte vRP embutida do ai-core usa - o armazenamento de dados do vRP, a API de banco de dados, o mapeamento de permissões e a lista de permissões.