Начало работы с командами

NozmaD

Администратор
Команда форума
Администратор
Сообщения
166
Баллы
208
Команды просты в создании и использовании, а также легки для понимания.

Введение
Для создания команды используется: [Command ("cmd", "Текст ошибки, если требуется", GreedyArg = bool, SensitiveInfo = bool, Alias = "", ..)]

Все аргументы разберем ниже. А пока давайте рассмотрим простой пример ниже:
C#:
[Command("hi")]
public void SayHi(Client player)
{
    API.sendChatMessageToPlayer(player, "Привет!");
}
Наша командная часть определена внутри скобок [] как «Command ()». В нашем случае выше, мы сделали команду /hi. Когда код будет выполнен, то он будет искать функцию чуть ниже (независимо от того, какое имя). Вызываемая функция SayHi (...) как раз и содержит то, что должна делать команда. В нашем случае будет отправлен игроку текст в чат "Привет"

Опциональные параметры:
Параметры команды объявляются в вызываемой командой функции. В примере мы сделаем два аргумента, один обязательный, а другой не обязательный. (Обратите внимание, что бесполезно присваивать первый аргумент как необязательный, если требуется последний)

C#:
[Command("hi")]
public void SayHi(Client player, int arg1, float arg2 = 1.5f)
{
    //какие то действия с аргументом arg1 (обязательный) и arg2 (не обязательный)
}

Параметры в командах
Параметры передаются при вводе команды.

GreedyArg:
В качестве примера рассмотрим команду с параметром: /me [text]

GreedyArg используется , чтобы допускать пробелы в команде.
Например /me заполняет бланк, где «бланк» будет в параметре. А без GreedyArg в параметре будет только слово «заполняет», потому что «бланк» не ожидается.

C#:
[Command("me", GreedyArg = true)]
public void MeCommand(Client player, string action)
{
    var msg = "* " + player.name + " " + action;
    var players = API.getPlayersInRadiusOfPlayer(30, player);

    foreach (Client c in players)
    {
        API.sendChatMessageToPlayer(c, msg);
    }
}

Alias:
Этот атрибут позволяет ввести альтернативные имена для команды.
Предположим, мы хотим добавить команду /hello, которая делает то же самое, что и /hi Для этого мы используем Alias = "hello"

C#:
[Command("hi", Alias = "hello")]
public void SayHi(Client player)
{
    API.sendChatMessageToPlayer(player, "Привет!");
}
Теперь /hi и /hello будут запускать одно и то же действие.

Если вы хотите добавить несколько альт-имен для одной и той же команды, то вы можете разделить альт-имена запятыми. В следующем примере команды /hey и /hello могут дополнительно использоваться для запуска команды /hi:

C#:
[Command("hi", Alias="hello,hey")]
public void SayHi(Client player)
{
    API.sendChatMessageToPlayer(player, "Привет!");
}

SensitiveInfo:
Этот атрибут предотвращает запись конфиденциальной информации на консоль. Атрибут SensitiveInfo скрывает ваши параметры команды при возникновении исключения, в то время как само исключение все равно будет отображаться. Если вы не используете этот атрибут, то конфиденциальные данные будут видимыми.

C#:
[Command("login", "Usage: /login [password]", SensitiveInfo = true, GreedyArg = true)]
public void LoginCommand(Client player, string password)
{
    //Код пишем здесь
}
 
Верх