AI Core
Référence de l’APILib : serveur

Commandes

addCommand : des commandes de chat avec arguments analysés, permissions ACE, suggestions de chat et une ligne dans le panneau d’administration d’ai-core.

TypeScript
import { addCommand } from "@aicore-fivem/lib/server";

addCommand

Enregistre une commande de chat (et de console). Les arguments sont analysés et vérifiés avant que votre gestionnaire ne s’exécute, la permission est vérifiée avec ACE, les suggestions de chat ne vont qu’aux joueurs autorisés à utiliser la commande, et le panneau d’administration d’ai-core la liste dans son onglet Commands. Utilisez-la pour chaque commande serveur au lieu d’un simple RegisterCommand.

Côté : serveur · Attend : non

Signature
addCommand<P extends readonly CommandParam[]>(
  name: string | string[],
  options: CommandOptions<P>,
  handler: (source: number, args: CommandArgs<P>, raw: string) => unknown,
): void
Lua
aiLib.addCommand(name, options, handler) -- handler(source, args, raw)

Paramètres

Prop

Type

CommandOptions

Prop

Type

CommandParam

Prop

Type

Ce que voit le joueur en cas de saisie incorrecte

Avant que le gestionnaire ne s’exécute, la lib répond par une notification ai-core (ou une ligne de console pour la source 0) avec les textes d’ai-core :

CasTexte (anglais)
Pas de permissionYou are not allowed to use this command.
Un argument obligatoire manque<name> is missing.
number / playerId n’est pas un nombre<name> must be a number.
playerId n’est pas un joueur en ligneNo player is online with id <value>.
Après toute erreur d’argumentUsage: /name <required> [optional]

Retour

void. Lève une erreur en TypeScript quand name est une liste vide.

Exemple

import { addCommand, medical, notify, createLocale } from "@aicore-fivem/lib/server";

const Locale = createLocale();

addCommand(
  ["heal", "h"],
  {
    help: Locale("CMD_HEAL"),
    params: [{ name: "id", type: "playerId", help: Locale("CMD_P_ID"), optional: true }],
    restricted: true,
  },
  (source, args) => {
    const target = args.id ?? source; // args.id est number | undefined
    if (target === 0) return; // la console doit nommer un joueur
    if (medical.heal(target) && source > 0) notify(source, Locale("HEALED"), "success");
  },
);

addCommand(
  "announce",
  {
    help: "Sends a message to everyone",
    params: [{ name: "text", type: "longString" }],
    restricted: ["group.admin", "ai.admin"],
  },
  (_source, { text }) => {
    for (const player of getPlayers()) notify(Number(player), text, "info", 8000);
  },
);

Ne vérifiez jamais les permissions à la main dans le gestionnaire : restricted s’en charge, et les suggestions de chat le suivent. Pour une liste de principals, ai-core accorde command.<name> à chacun d’eux, ce qui nécessite add_ace resource.ai-core command.add_ace allow et add_ace resource.ai-core command.remove_ace allow dans permission.cfg. Les grades de métier et de gang sont des principals (ai.job.police), donc les suggestions se mettent à jour quand le métier ou le gang d’un joueur change.

En TypeScript, args est typé à partir de params : args.id est number, ou number | undefined quand il est facultatif. Une liste de paramètres partagée par plusieurs commandes doit être déclarée as const, sinon les noms et les types s’élargissent et args les perd.

Sur cette page