13.02.2019, 16:18
Можно было проще, делай всё по порядку. Лет 6 назад я писал:
Добавляешь ещё один strtok только для цифрового параметра, а потом уже strfind.
pawn Код:
if(strcmp(cmd, "/ban", true, 4) == 0)
{
new tmp[128]; // создали новую переменную для хранения параметров
tmp = strtok(cmdtext, idx); // засунули в неё параметры до следующего пробела
if(strlen(tmp) < 1) return SendClientMessage(playerid, 0xFF0000FF, "Синтаксис: /ban [playerid][reason]"); // если нет аргументов
new targetid = strval(tmp); // взяли ID игрока из параметров
new pos = strfind(cmdtext, " ", true, 4); // ищем пробел после ID
if(pos == -1) return SendClientMessage(playerid, 0xFF0000FF, "Синтаксис: /ban [playerid][text]"); // если больше аргументов нет
format(tmp, sizeof(tmp), "Администратор %s забанил игрока %s. Причина: %s", PlayerInfo[playerid][pName], PlayerInfo[targetid][pName], cmdtext[pos + 1]); // форматируем с причиной, полученной из параметров после следующего пробела (важно: причина может быть с пробелами, т.е. в несколько слов).
SendClientMessage(targetid, 0xFF0000FF, tmp);
Ban(playerid);
return 1;
}