OnPlayerCommandText - Вызывается, когда игрок или NPC отправляет команду в чат

Описание:

Вызывается, когда игрок или NPC отправляет команду в чат.

Параметры:

(playerid, cmdtext[])
playeridID игрока, отправившего сообщение.
cmdtext[]Текст комады, включающий в себя название команды и её параметры.


Возвращаемое значение:

При возврате 0 функция не будет вызвана в других фильтрскриптах и в моде, а игроку в чате будет выведено сообщение «SERVER: Unknown command.».
Примечание

Функция вызывается сначала в фильтрскриптах, затем в моде.

Сервер считает командой любую отправляемую в чат строку, начинающуюся с '/'. Название команды и параметры могут содержать в себе любые символы, которые игрок может ввести в чате. При этом название команды может состоять из одного символа'/': например,"/ 123"считается правильной командой с названием"/"и параметром«123».

Длина команды ограничена максимальной длиной ввода в чате, т.е. 128 символами. Следовательно, чтобы гарантированно вместить название команды, нужен массив из128 + 1 = 129ячеек.
Длина параметров тоже ограничена 128 символами, однако следует также учитывать знак'/', с которого начинаются команды, и пробел между названием команды и параметрами. В итоге для полного сохранения параметров требуется массив из(128 + 1) — 1 — 1 = 127ячеек.

Код:

public OnPlayerCommandText(playerid, text[])
{
    new cmd[129], params[127];
    sscanf(cmdtext, "s[129] S[127]", cmd, params);

    if (0 == strcmp(cmd, "/getmoney"))
    {
        GivePlayerMoney(playerid, 1000);
        SendClientMessage(playerid, -1, "Вы получили 1000$.");
        // Не забудем использовать return, чтобы сервер не искал команду дальше.
        // Также вместо "return 1" часто делают возврат результата из любой функции,
        // возвращающей ненулевое значение (например, "return SendClientMessage(...)").
        return 1;
    }

    if (0 == strcmp(cmd, "/restore"))
    {
        if (0 == strcmp(params, "health"))
        {
            SetPlayerHealth(playerid, 100.0);
            return SendClientMessage(playerid, -1, "Здоровье восстановлено.");
        }
        // В английском языке есть 2 варианта написания: "armor" (в британском английском)
        // и "armour" (в американском английском) - учтём оба варианта.
        if (0 == strcmp(params, "armor") || 0 == strcmp(params, "armour"))
        {
            SetPlayerArmour(playerid, 100.0);
            return SendClientMessage(playerid, -1, "Броня восстановлена.");
        }
        return SendClientMessage(playerid, -1, "Использование: /restore [health|armor|armour]");
    }

    // Вместо стандартного "SERVER: Unknown command." (при return 0)
    // отобразим своё сообщение на русском.
    return SendClientMessage(playerid, -1, "Неизвестная команда.");
}

RSS
Нет комментариев. Ваш будет первым!
Загрузка...