AI Core
Справочник APILib: сервер

Команды

addCommand: команды чата с разобранными аргументами, правами ACE, подсказками в чате и строкой в админ-панели ai-core.

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

addCommand

Регистрирует команду чата (и консольную команду). Аргументы разбираются и проверяются до запуска вашего обработчика, права проверяются через ACE, подсказки в чате получают только игроки, которым разрешено пользоваться командой, а админ-панель ai-core показывает её на вкладке Commands (Команды). Используйте для каждой серверной команды вместо голого RegisterCommand.

Сторона: Сервер · Ждёт: нет

Сигнатура
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)

Параметры

Prop

Type

CommandOptions

Prop

Type

CommandParam

Prop

Type

Что видит игрок при неверном вводе

До запуска обработчика lib отвечает уведомлением ai-core (или строкой в консоли для source 0) с текстами ai-core:

СлучайТекст (на английском)
Нет правYou are not allowed to use this command. (Вам не разрешено использовать эту команду.)
Отсутствует обязательный аргумент<name> is missing. (<name> отсутствует.)
number / playerId не является числом<name> must be a number. (<name> должен быть числом.)
playerId не является игроком онлайнNo player is online with id <value>. (Нет игрока онлайн с id <value>.)
После любой ошибки аргументаUsage: /name <required> [optional] (Использование)

Возвращает

void. В TypeScript выбрасывает ошибку, если name является пустым списком.

Пример

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 имеет тип number | undefined
    if (target === 0) return; // консоль должна указать игрока
    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);
  },
);

Никогда не проверяйте права вручную внутри обработчика: это делает restricted, и подсказки чата следуют ему. Для списка principal ai-core выдаёт command.<name> каждому из них, для чего нужны add_ace resource.ai-core command.add_ace allow и add_ace resource.ai-core command.remove_ace allow в permission.cfg. Ранги работ и банд являются principal (ai.job.police), поэтому подсказки обновляются, когда меняется работа или банда игрока.

В TypeScript тип args выводится из params: args.id имеет тип number или number | undefined, если параметр необязательный. Список параметров, общий для нескольких команд, нужно объявить as const, иначе имена и типы расширятся и args их потеряет.

На этой странице