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.
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
addCommand<P extends readonly CommandParam[]>(
name: string | string[],
options: CommandOptions<P>,
handler: (source: number, args: CommandArgs<P>, raw: string) => unknown,
): voidaiLib.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 :
| Cas | Texte (anglais) |
|---|---|
| Pas de permission | You 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 ligne | No player is online with id <value>. |
| Après toute erreur d’argument | Usage: /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.
Entrées client
Répondre aux clients en sécurité : onClientCallback, onClientEvent, gardes, triggerClientCallback, barres de progression et mini-jeux vérifiés par le serveur, PendingActions.
Joueurs et personnages
online, onCharacter, notify, joueurs proches, positions et stockages par joueur : PlayerMap, Cooldowns, KeyedCooldowns, SourceLock, RateLimit, KeyWatchers.