Panneau d’administration et commandes
Les exports derrière le panneau d’administration d’ai-core - enregistrement dans le panneau, changements du panneau, l’onglet Commands, listes de recherche et écrans de réglages des autres scripts sur le tableau de bord.
ai-core héberge un seul panneau d’administration pour tous les scripts. La plupart des exports de cette page sont de la tuyauterie que @aicore-fivem/lib appelle pour vous : un script construit avec AdminPanel et addCommand de la lib n’appelle jamais lui-même RegisterAdminPanel, AdminPanelChanged ou RegisterCommands. Ils sont documentés pour que vous sachiez ce qui se passe et puissiez les prendre en charge depuis un autre langage. RegisterExternalPanel et GetLookupValues sont utiles à n’importe quel script.
RegisterAdminPanel
Annonce que la ressource appelante a une section de panneau. ai-core lui demande alors son schéma et ses données chaque fois qu’un admin ouvre le panneau.
Côté : Serveur · Attend : non · Lib : appelé par AdminPanel de la lib à son démarrage
RegisterAdminPanel(resource: string): voidexports['ai-core']:RegisterAdminPanel(GetCurrentResourceName())Paramètres
Prop
Type
Retour
Rien. L’enregistrement est abandonné quand la ressource s’arrête.
Exemple
Pas d’exemple : AdminPanel de la lib l’appelle. Une ressource qui s’enregistre sans la lib doit aussi répondre aux exports qu’ai-core rappelle (AdminPanelSnapshot, AdminPanelData, AdminPanelSummary, typés AdminPanelResourceExports dans @aicore-fivem/shared), ce qui est le travail de la lib.
AdminPanelChanged
Une ressource de panneau signale à ai-core que l’un de ses enregistrements a changé. ai-core transmet le changement à chaque admin qui a le panneau ouvert, pour que son écran se mette à jour sans rechargement.
Côté : Serveur · Attend : non · Lib : appelé par AdminPanel de la lib après chaque changement enregistré
AdminPanelChanged(delta: AdminDelta): voidexports['ai-core']:AdminPanelChanged({ resource = GetCurrentResourceName(), file = 'shops', key = 'shop_1', value = record })Paramètres
Prop
Type
Voir AdminDelta.
Retour
Rien. ai-core ne vérifie pas le delta ; il l’envoie tel quel.
Exemple
Pas d’exemple : AdminPanel de la lib l’appelle après qu’un changement a été validé et enregistré.
RegisterCommands
Liste les commandes d’une ressource dans l’onglet Commands du panneau, avec leur aide, leurs paramètres et qui peut les utiliser.
Côté : Serveur · Attend : non · Lib : appelé par addCommand de la lib (TypeScript et aiLib.addCommand en Lua)
RegisterCommands(resource: string, commands: CommandInfo[]): voidexports['ai-core']:RegisterCommands(GetCurrentResourceName(), commands)Paramètres
Prop
Type
Voir CommandInfo et CommandParam.
Retour
Rien. La liste est abandonnée quand la ressource s’arrête. Pour les commandes réservées à un principal (group.admin), ai-core accorde aussi à ce principal command.<name>, ce qui demande add_ace resource.ai-core command.add_ace allow (et command.remove_ace) dans permission.cfg.
Exemple
Pas d’exemple : utilisez addCommand de la lib (TypeScript) ou aiLib.addCommand (Lua) et la commande apparaît d’elle-même dans l’onglet. Les commandes créées avec un simple RegisterCommand sont listées aussi, marquées comme simples.
GetLookupValues
Les valeurs d’une liste de recherche : les noms d’objets de l’inventaire actif, les noms de métiers, les noms de gangs, etc. La validation du panneau de la lib l’utilise pour vérifier qu’une valeur tapée par un admin existe.
Côté : Serveur · Attend : non · Lib : utilisé par la validation d’AdminPanel de la lib
GetLookupValues(source: LookupSource): string[]local items = exports['ai-core']:GetLookupValues('item') -- liste de noms d’objetsParamètres
Prop
Type
source | Valeurs |
|---|---|
item | Noms d’objets de l’inventaire actif. |
job / gang | Noms de métiers / de gangs depuis le panneau. |
account | Noms des types de comptes (cash, bank...). |
resource | Noms des ressources démarrées. |
player | Citizen ids des joueurs qui ont un personnage chargé. |
vehicle / ped | Toujours vide : seul le jeu de l’admin peut lister les modèles. |
Voir LookupSource.
Retour
string[] : les valeurs, triées par libellé. Une liste vide pour une source inconnue, pour vehicle et ped, et quand la liste n’est pas encore connue (aucun inventaire ne tourne) : traitez le vide comme « impossible de vérifier », pas comme « rien n’est valide ».
Exemple
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 liste est reconstruite à chaque appel (la liste d’objets peut être longue). Appelez-le au moment de valider, pas dans une boucle.
RegisterExternalPanel
Liste l’écran de réglages propre à un autre script sur le tableau de bord du panneau d’ai-core, pour que le propriétaire du serveur trouve les réglages de chaque script au même endroit. La carte ouvre l’écran avec une commande de chat, ou affiche une page web dans le panneau.
Côté : Serveur · Attend : non · Lib : aucune
RegisterExternalPanel(panel: {
id?: string;
label: string;
icon?: string;
description?: string;
command?: string;
url?: string;
}): voidexports['ai-core']:RegisterExternalPanel({ label = 'My script', command = 'myscriptconfig' })Paramètres
Prop
Type
Champs du panneau
Prop
Type
Retour
Rien. Sans label, ou sans command ni url, la carte n’est pas ajoutée. Les cartes sont abandonnées quand votre ressource s’arrête.
Exemple
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Une fois au démarrage.
core.RegisterExternalPanel({
label: "My script",
icon: "gear",
description: "Shops, prices and rewards",
command: "myscriptconfig",
});Un script que vous ne pouvez pas modifier peut plutôt être listé par des lignes dans son fxmanifest.lua : ai_admin_label, ai_admin_command ou ai_admin_url, et en option ai_admin_icon et ai_admin_description. Le propriétaire du serveur peut aussi ajouter des cartes à la main dans le panneau.
Vérifications de connexion
Ajouter des vérifications que chaque joueur qui se connecte doit passer (listes blanches, bannissements), et déclarer que votre script en remplace un autre.
Pont vRP
Les exports qu’utilise le pont vRP intégré d’ai-core - le stockage de données de vRP, son API de base de données, la correspondance des permissions et la liste des permissions.