OnPlayerCommandText - Вызывается, когда игрок или NPC отправляет команду в чат
Описание:
Параметры:
(playerid, cmdtext[]) |
playerid | ID игрока, отправившего сообщение. |
cmdtext[] | Текст комады, включающий в себя название команды и её параметры. |
Возвращаемое значение:
Примечание | Функция вызывается сначала в фильтрскриптах, затем в моде. Сервер считает командой любую отправляемую в чат строку, начинающуюся с '/'. Название команды и параметры могут содержать в себе любые символы, которые игрок может ввести в чате. При этом название команды может состоять из одного символа'/': например,"/ 123"считается правильной командой с названием"/"и параметром«123». Длина команды ограничена максимальной длиной ввода в чате, т.е. 128 символами. Следовательно, чтобы гарантированно вместить название команды, нужен массив из128 + 1 = 129ячеек. |
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, "Неизвестная команда.");
}