SAMP/OnPlayerCommandText

Материал из Pawno Info Wikipedia

OnPlayerCommandText

Описание:

Срабатывает, когда игрок отправляет напечатанную команду в чат.


Параметры:

(playerid, cmdtext[])


playeridID игрока, написавшего и отправившего текст в чат.
cmdtextкоманда, которую игрок написал и отправил в чат.


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

0 - команда не будет обработана; если данный возврат находится в фильтр-скрипте, то это отключает обработку обратного вызова в других скриптах.
1 - команда будет обработана.


Wiki note.png

Примечание

Если команда не будет найдена ни в моде, ни в фильтр-скриптах, игроку отобразится сообщение:
SERVER: Unknown command.


Wiki note important.png

Важное
примечание

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


Wiki bug.png

Баг PAWN

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


Wiki tip.png

Подсказка

Команды - это любой текст, который начинается с / (слеша, косой черты), например: /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-команду серверу.