AI Core
Dokumentacja APILib: serwer

Komendy

addCommand: komendy czatu ze sparsowanymi argumentami, uprawnieniami ACE, podpowiedziami na czacie i wierszem w panelu administratora ai-core.

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

addCommand

Rejestruje komendę czatu (i komendę konsoli). Argumenty są parsowane i sprawdzane, zanim zadziała twój handler, uprawnienie jest sprawdzane przez ACE, podpowiedzi na czacie trafiają tylko do graczy, którzy mogą używać komendy, a panel administratora ai-core wymienia ją w zakładce Commands. Używaj jej dla każdej komendy serwera zamiast gołego RegisterCommand.

Strona: Serwer · Czeka: nie

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

Parametry

Prop

Type

CommandOptions

Prop

Type

CommandParam

Prop

Type

Co widzi gracz przy złym wejściu

Zanim zadziała handler, lib odpowiada powiadomieniem ai-core (albo linią w konsoli dla source 0) z tekstami ai-core:

PrzypadekTekst (po angielsku)
Brak uprawnieniaYou are not allowed to use this command.
Brakuje wymaganego argumentu<name> is missing.
number / playerId nie jest liczbą<name> must be a number.
playerId nie jest graczem onlineNo player is online with id <value>.
Po każdym błędzie argumentuUsage: /name <required> [optional]

Zwracana wartość

void. W TypeScript rzuca wyjątek, gdy name jest pustą listą.

Przykład

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 to number | undefined
    if (target === 0) return; // konsola musi wskazać gracza
    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);
  },
);

Nigdy nie sprawdzaj uprawnień ręcznie wewnątrz handlera: robi to restricted, a podpowiedzi na czacie za nim podążają. Dla listy principali ai-core przyznaje command.<name> każdemu z nich, co wymaga add_ace resource.ai-core command.add_ace allow i add_ace resource.ai-core command.remove_ace allow w permission.cfg. Stopnie prac i gangów są principalami (ai.job.police), więc podpowiedzi aktualizują się, gdy zmieni się praca albo gang gracza.

W TypeScript args jest typowany z params: args.id to number albo number | undefined, gdy jest opcjonalny. Lista parametrów wspólna dla kilku komend musi być zadeklarowana as const, bo inaczej nazwy i typy się rozszerzają i args je traci.

Na tej stronie