SAMP/OnPlayerCommandText
OnPlayerCommandText
Описание:
Параметры:
| playerid | ID игрока, написавшего и отправившего текст в чат. |
| cmdtext | команда, которую игрок написал и отправил в чат. |
Возвращаемые значения:
1 - команда будет обработана.
SERVER: Unknown command.
Длина команды ограничена максимальной длиной ввода в чате, т.е. 128 символами. Следовательно, чтобы гарантированно вместить название команды, нужен массив из 128 + 1 = 129 ячеек. Длина параметров тоже ограничена 128 символами, однако следует также учитывать знак /, с которого начинаются команды, и пробел между названием команды и параметрами. В итоге для полного сохранения параметров требуется массив из (128 + 1) - 1 - 1 = 127 ячеек. Таким образом, массив на 256 ячеек сможет хранить в себе максимально длинную команду с максимально длинными параметрами.
☠ PAWN | Название команды и параметры могут содержать в себе любые символы, которые игрок может ввести в чате. При этом название команды может состоять из одного символа /: например, / 123 считается правильной командой с названием / и параметром 123. Случается это из-за особенностей работы strcmp, которая при сравнении с пустой строкой выдаёт истину.
Обратный вызов работает не только для игроков, но и для 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-команду серверу.