AI Core
Référence de l’APIAI Core : exports serveur

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

Signature
RegisterAdminPanel(resource: string): void
Lua
exports['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é

Signature
AdminPanelChanged(delta: AdminDelta): void
Lua
exports['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)

Signature
RegisterCommands(resource: string, commands: CommandInfo[]): void
Lua
exports['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

Signature
GetLookupValues(source: LookupSource): string[]
Lua
local items = exports['ai-core']:GetLookupValues('item') -- liste de noms d’objets

Paramètres

Prop

Type

sourceValeurs
itemNoms d’objets de l’inventaire actif.
job / gangNoms de métiers / de gangs depuis le panneau.
accountNoms des types de comptes (cash, bank...).
resourceNoms des ressources démarrées.
playerCitizen ids des joueurs qui ont un personnage chargé.
vehicle / pedToujours 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

Signature
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' })

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.

Sur cette page