1. В sscanf есть спецификатор 'u', который может принимать как NickName игрока, так и его ID.
Так что, при его использовании, будет вполне достаточно сравнивать с INVALID_PLAYER_ID.
PHP код:
CMD:kick(playerid, params[])
{
new
target,
reason[32 + 1];
if(sscanf(params, "us[32]", target, reason))
return SendClientMessage(playerid, -1, !"Используйте: /kick [ID игрока/часть NickName] [причина]");
if(target == INVALID_PLAYER_ID)
return SendClientMessage(playerid, -1, !"Ошибка: Указанный игрок не подключён к серверу.");
// etc...
return 1;
}
2. Если в OnPlayerText возвращаемое значение является истинной (true/1) - текст (сообщение) игрока будет отправлено в чат, если же возвращаемое значение является ложью (false/0) - сообщение не будет отправлено в чат. У тебя в коде проверяется наличие блокировки чата у игрока и, если у него есть блокировка чата - его об этом оповестит и его сообщение не будет отправлено в чат.
В случае же с командой особой роли это не играет (разве что, в Pawn.CMD есть определённые возвращаемые значения, если не изменяет память). Тут, возвратом функции (точнее, после выполнения функция вернёт 1) - обрывается последующий код команды.