SAMP/OnPlayerCommandText
Материал из Pawno Info Wikipedia
OnPlayerCommandText
Описание:
Срабатывает, когда игрок отправляет напечатанную команду в чат.
Параметры:
(playerid, cmdtext[])
playerid | ID игрока, написавшего и отправившего текст в чат. |
cmdtext | команда, которую игрок написал и отправил в чат. |
Возвращаемые значения:
0 - команда не будет обработана; если данный возврат находится в фильтр-скрипте, то это отключает обработку обратного вызова в других скриптах.
1 - команда будет обработана.
1 - команда будет обработана.
Примечание |
Если команда не будет найдена ни в моде, ни в фильтр-скриптах, игроку отобразится сообщение:SERVER: Unknown command. |
Важное |
Функция вызывается сначала в фильтр-скриптах, затем в моде. Длина команды ограничена максимальной длиной ввода в чате, т.е. 128 символами. Следовательно, чтобы гарантированно вместить название команды, нужен массив из 128 + 1 = 129 ячеек. Длина параметров тоже ограничена 128 символами, однако следует также учитывать знак /, с которого начинаются команды, и пробел между названием команды и параметрами. В итоге для полного сохранения параметров требуется массив из (128 + 1) - 1 - 1 = 127 ячеек. Таким образом, массив на 256 ячеек сможет хранить в себе максимально длинную команду с максимально длинными параметрами. |
Баг PAWN |
Название команды и параметры могут содержать в себе любые символы, которые игрок может ввести в чате. При этом название команды может состоять из одного символа /: например, / 123 считается правильной командой с названием / и параметром 123. Случается это из-за особенностей работы strcmp, которая при сравнении с пустой строкой выдаёт истину. |
Подсказка |
Команды - это любой текст, который начинается с / (слеша, косой черты), например: /help Обратный вызов работает не только для игроков, но и для NPC. Вместо обработки команд в рассматриваемом коллбэке, рекомендуется использовать так называемые командные процессоры - они отличаются гораздо меньшим временем отклика (быстрее отыскивают нужный обработчик команды) и обеспечивают больше возможностей для разбиения скрипта на модули (обработчики команд реализуются в виде отдельных функций, которые можно хранить в разных исходных файлах). Одними из самых известных командных процессоров считаются ZCMD (iZCMD), DC_CMD и Pawn.CMD. |
Пример использования:
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/flip", true))
{
new Float:z, vehicleid = GetPlayerVehicleID(playerid);
if(!vehicleid) return 1; // если игрок не в транспорте
GetVehicleZAngle(vehicleid, z);
SetVehicleZAngle(vehicleid, z); // поставит на колёса опрокинутое транспортное средство
return 1;
}
return 0;
}
Связанные обратные вызовы
Следующие обратные вызовы также могут быть полезны, поскольку они так или иначе связаны с рассматриваемым обратным вызовом.
OnPlayerText: срабатывает при отправке напечатанного игроком текста в чат.
OnRconCommand: срабатывает при отправке rcon-команды.
Связанные функции
Следующие функции также могут быть полезны, поскольку они так или иначе связаны с рассматриваемой функцией.
SendPlayerMessageToPlayer: отображает текст от игрока другому игроку.
SendPlayerMessageToAll: отображает текст от игрока в чате.
SendRconCommand: отправляет rcon-команду серверу.