This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Как передать аргументы команды?

Ilya Bochenin

Участник портала
Автор темы
28 Май 2022
87
8
23
Как передать аргументы команды в mp.invoke просто не могу понять как сделать чтобы код понимал что после пробела идёт аргумент?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Ивент принятия команд сам понимает где аргументы, а где команда (насколько мне известно). Всё, что тебе нужно - отправить в нужный ивент всю строку (без '/').
JavaScript:
mp.invoke("command", "testcmd arg1 arg2 arg3");
 

Ilya Bochenin

Участник портала
Автор темы
28 Май 2022
87
8
23
спасибо а как возвращать ошибку из чата при выполнении команды чтобы потом вызвать уведомление например USAGE: /amakeleader [factionid]?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Это стандартное уведомление, когда человек вводит неверное количество аргументов, для этого не нужно ничего дополнительно писать.
Но на C# сервере (на JS не знаю, не искал) дополнительно есть вот такой метод - SetCommandErrorMessage, с помощью которого можно изменить текст ошибки.
 

Ilya Bochenin

Участник портала
Автор темы
28 Май 2022
87
8
23
я знаю что это стандартное уведомление просто я хочу их выводить не в чат а в консоль, если при выполнении команды она возникала то вызывала метод в самой консоли можно ли такое реализовать
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Полагаю, что для такого тебе придётся написать свой обработчик команд. Стандартный обработчик в RAGE - CommandAttribute не даёт такой опции.
Внутри Boostrapper'а это выглядит вот так.
C#:
public bool Parse(Player sender, string cmdRaw, string ourcmd, string[] args)
{
    if (GameServer.GlobalDefaultCommandMessages && !this.Hide && (args.Length < this.Parameters.Length - this.OptionalArguments || (args.Length > this.Parameters.Length && !this.Greedy)))
    {
        NAPI.Chat.SendChatMessageToPlayer(sender, this.HelpText, true);
        return true;
    }
 

Ilya Bochenin

Участник портала
Автор темы
28 Май 2022
87
8
23
Хорошо а как тогда заменить этот класс в boostrapper?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Хорошо а как тогда заменить этот класс в boostrapper?
Ну, можешь открыть его чем-нибудь и перекомпилировать как нужно тебе, но это такое себе решение. Проще тебе сделать свой обработчик команд, как мне кажется.