Verificações de conexão
Adicione verificações que todo jogador que conecta precisa passar (whitelists, bans) e declare que seu script substitui outro.
Todo jogador que conecta passa por um portão no ai-core. As verificações do próprio ai-core vêm primeiro: o jogador precisa de uma conta FiveM, e nenhum script desnecessário pode rodar ao lado do script que o substitui (quando Refuse players while both run do painel está ligado). Depois vêm as verificações que outros recursos adicionam com AddConnectionCheck, na ordem em que foram adicionadas. A primeira recusa vence.
AddConnectionCheck
Adiciona uma verificação que todo jogador que conecta precisa passar. Use para uma whitelist, uma lista de bans ou um modo de manutenção.
Lado: Servidor · Espera: não (a verificação em si precisa responder na hora) · Lib: nenhuma
AddConnectionCheck(
id: string,
check: (source: number, identifiers: Record<string, string>) => string | null | undefined,
): voidexports['ai-core']:AddConnectionCheck('myscript:whitelist', function(source, identifiers) end)Parâmetros
Prop
Type
identifiers guarda cada tipo de identificador com o valor sem o prefixo: identifiers.license é abc123..., não license:abc123.... Os tipos que o jogador não tem ficam ausentes.
Retorno
Nada. Sem um id em texto ou uma função a chamada não faz nada. A verificação é removida quando seu recurso para.
Exemplo
import { resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";
const core = resourceExport("ai-core");
const allowed = new Set<string>(); // preenchido a partir do seu banco de dados ao iniciar
core.AddConnectionCheck("myscript:whitelist", (_source, identifiers) => {
const fivem = identifiers.fivem;
return fivem && allowed.has(fivem) ? null : Locale("CONNECT_NOT_WHITELISTED");
});A verificação roda enquanto o jogador conecta e precisa responder na hora: nada de consulta ao banco de dados, nada de await, nada de Wait. Guarde na memória o que você verifica (carregue ao iniciar, atualize quando mudar). Uma verificação que lança um erro é registrada no log e pulada, então ela nunca tranca todo mundo para fora.
RegisterReplacement
Declara que um script torna outros desnecessários (seu script faz o mesmo trabalho que os deles). Enquanto os dois estão instalados, o ai-core avisa no console e diz qual pasta apagar; enquanto os dois estão iniciados e Refuse players while both run do painel está ligado, ninguém consegue entrar.
Lado: Servidor · Espera: não · Lib: nenhuma
RegisterReplacement(remove: string | string[], keep?: string): voidexports['ai-core']:RegisterReplacement({ 'qb-banking', 'okokBanking' })Parâmetros
Prop
Type
Retorno
Nada. A regra é removida quando o recurso que chama para. O ai-core procura conflitos de novo um segundo depois que qualquer recurso inicia ou para.
Exemplo
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Nosso script de banco faz o que estes fazem; rodar os dois duplicaria as telas de banco.
core.RegisterReplacement(["qb-banking", "okokBanking"]);Um recurso que você não pode alterar (um script com escrow) pode declarar o mesmo com uma linha no fxmanifest.lua dele: ai_replaces 'qb-banking'.
GetConflicts
Cada conflito encontrado agora: um script instalado ao lado de um script que o substitui.
Lado: Servidor · Espera: não · Lib: nenhuma
GetConflicts(): { keep: string; remove: string; running: boolean; from: string }[]local conflicts = exports['ai-core']:GetConflicts() -- lista de tablesParâmetros
Nenhum.
Retorno
Uma lista, uma entrada por conflito:
Prop
Type
Uma lista vazia quando não há conflito.
Exemplo
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
addCommand("conflicts", { help: "Lists scripts to remove", restricted: true }, () => {
for (const c of core.GetConflicts())
console.log(`${c.keep} replaces ${c.remove}${c.running ? " (both started!)" : ""} [${c.from}]`);
});Logs
Envie os logs do seu recurso pelo ai-core ao Discord, Fivemanage, FiveM Stats e ao console, e descreva os seus canais de log.
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.