Comprobaciones de conexión
Añade comprobaciones que cada jugador que se conecta debe superar (whitelists, baneos) y declara que tu script sustituye a otro.
Cada jugador que se conecta pasa por una única puerta en ai-core. Primero van las comprobaciones propias de ai-core: el jugador necesita una cuenta de FiveM, y ningún script innecesario puede ejecutarse junto al script que lo sustituye (cuando está activado Refuse players while both run (rechazar jugadores mientras ambos se ejecutan) en el panel). Después vienen las comprobaciones que otros recursos añaden con AddConnectionCheck, en el orden en que se añadieron. Gana el primer rechazo.
AddConnectionCheck
Añade una comprobación que cada jugador que se conecta debe superar. Úsala para una whitelist, una lista de baneos o un modo de mantenimiento.
Lado: Servidor · Espera: no (la propia comprobación debe responder al momento) · Lib: ninguna
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 contiene cada tipo de identificador con su valor sin el prefijo: identifiers.license es abc123..., no license:abc123.... Los tipos que el jugador no tiene no aparecen.
Devuelve
Nada. Sin un id de texto o una función la llamada no hace nada. La comprobación se quita cuando tu recurso se detiene.
Ejemplo
import { resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";
const core = resourceExport("ai-core");
const allowed = new Set<string>(); // se rellena desde tu base de datos al iniciar
core.AddConnectionCheck("myscript:whitelist", (_source, identifiers) => {
const fivem = identifiers.fivem;
return fivem && allowed.has(fivem) ? null : Locale("CONNECT_NOT_WHITELISTED");
});La comprobación se ejecuta mientras el jugador se conecta y debe responder al momento: nada de consultas a la base de datos, ni await, ni Wait. Ten en memoria lo que compruebas (cárgalo al iniciar, actualízalo cuando cambie). Una comprobación que lanza un error queda en el log y se salta, así que nunca deja fuera a todo el mundo.
RegisterReplacement
Declara que un script hace innecesarios a otros (tu script hace el mismo trabajo que ellos). Mientras ambos estén instalados, ai-core avisa en la consola y nombra la carpeta que hay que borrar; mientras ambos estén iniciados y Refuse players while both run esté activado en el panel, nadie puede entrar.
Lado: Servidor · Espera: no · Lib: ninguna
RegisterReplacement(remove: string | string[], keep?: string): voidexports['ai-core']:RegisterReplacement({ 'qb-banking', 'okokBanking' })Parámetros
Prop
Type
Devuelve
Nada. La regla se quita cuando el recurso que llama se detiene. ai-core vuelve a buscar choques un segundo después de que cualquier recurso se inicie o se detenga.
Ejemplo
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Nuestro script de banca hace lo que hacen estos; ejecutar ambos duplicaría las pantallas del banco.
core.RegisterReplacement(["qb-banking", "okokBanking"]);Un recurso que no puedes cambiar (un script con escrow) puede declarar lo mismo con una línea en su fxmanifest.lua: ai_replaces 'qb-banking'.
GetConflicts
Cada choque encontrado ahora: un script instalado junto a un script que lo sustituye.
Lado: Servidor · Espera: no · Lib: ninguna
GetConflicts(): { keep: string; remove: string; running: boolean; from: string }[]local conflicts = exports['ai-core']:GetConflicts() -- lista de tablasParámetros
Ninguno.
Devuelve
Una lista, una entrada por choque:
Prop
Type
Una lista vacía cuando no hay ningún choque.
Ejemplo
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
Envía los logs de tu recurso a través de ai-core a Discord, Fivemanage, FiveM Stats y la consola, y describe tus canales de log.
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.