AI Core
API-ReferenzLib: Server

Befehle

addCommand: Chat-Befehle mit geparsten Argumenten, ACE-Berechtigungen, Chat-Vorschlägen und einer Zeile im Admin-Panel von ai-core.

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

addCommand

Registriert einen Chat-Befehl (und Konsolenbefehl). Argumente werden geparst und geprüft, bevor dein Handler läuft, die Berechtigung wird per ACE geprüft, Chat-Vorschläge gehen nur an Spieler, die den Befehl nutzen dürfen, und das Admin-Panel von ai-core listet ihn im Tab Commands. Nutze es für jeden Server-Befehl statt eines nackten RegisterCommand.

Seite: Server · Wartet: nein

Signatur
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)

Parameter

Prop

Type

CommandOptions

Prop

Type

CommandParam

Prop

Type

Was der Spieler bei falscher Eingabe sieht

Bevor der Handler läuft, antwortet die Lib mit einer ai-core-Benachrichtigung (oder einer Konsolenzeile bei Source 0) mit den Texten von ai-core:

FallText (Englisch)
Keine BerechtigungYou are not allowed to use this command.
Ein Pflichtargument fehlt<name> is missing.
number / playerId ist keine Zahl<name> must be a number.
playerId ist kein Online-SpielerNo player is online with id <value>.
Nach jedem ArgumentfehlerUsage: /name <required> [optional]

Rückgabewert

void. Wirft in TypeScript, wenn name eine leere Liste ist.

Beispiel

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 ist number | undefined
    if (target === 0) return; // die Konsole muss einen Spieler angeben
    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);
  },
);

Prüfe Berechtigungen nie von Hand im Handler: restricted erledigt das, und die Chat-Vorschläge folgen ihm. Bei einer Liste von Principals gewährt ai-core jedem von ihnen command.<name>, was add_ace resource.ai-core command.add_ace allow und add_ace resource.ai-core command.remove_ace allow in permission.cfg braucht. Job- und Gang-Ränge sind Principals (ai.job.police), sodass sich die Vorschläge aktualisieren, wenn sich der Job oder die Gang eines Spielers ändert.

In TypeScript wird args aus params typisiert: args.id ist number, oder number | undefined, wenn optional. Eine Parameterliste, die mehrere Befehle teilen, muss as const deklariert werden, sonst werden Namen und Typen verbreitert und args verliert sie.

Auf dieser Seite