Лучший Ответ
Elrmrnt-Kritik
,
12 Февраль 2017 - 21:24
sanek281215, команду заменяйте на эту:
if(!strcmp(cmd, "/makeadmin", true)) // создаем команду
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF8F1CFF, "Данная команда недоступна!"); // отправляем игроку сообщение о том, что он не ркон админ, 0xFF0000FF - цвет
tmp = strtok(cmdtext, idx); // делаем пробел после самой команды
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF , "Используйте /makeadmin [ID игрока] [Уровень] [Пароль]"); // если человек вводит /makeadmin без id и лвл, то отправляем сообщение
new player = strval(tmp); // честно говоря, я не знаю, зачем это делать, но в виде tmp в сообщениях, например, использовать не дает <img rel="usm" src="http://forum-pawno.ru/smiles/Juokas.gif" border="0" align="absmiddle" alt=":D" />
tmp = strtok(cmdtext, idx); // делаем 2 пробел
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF , "Используйте /makeadmin [ID игрока] [Уровень] [Пароль]");
new adminl = strval(tmp);
tmp = strtok(cmdtext, idx); // делаем 2 пробел
if(!strlen(tmp) || strlen(tmp) != 4) return SendClientMessage(playerid, 0xFFFFFFFF , "Используйте /makeadmin [ID игрока] [Уровень] [Пароль (цифрами, 4 символа)]");
new adminpass = strval(tmp);
if(!IsPlayerConnected(player)) return SendClientMessage(playerid,Red,"Игрок не онлайн!"); // если игрок, которого мы ввели после команды не онлайн ...
if(adminl > 5 || adminl < 0) return SendClientMessage(playerid,Red,"Нельзя больше 5 и меньше 0!"); // устанавливаем рамки уровней админки, в данном случае 5 уровней + 0лвл - игрок
Player[player][pAdmin] = adminl;// присваиваем информации об админ статусе игрока значение, которое ркон админ ввел ([lvl]), это наш массив, вместо pInfo мы вставляем одно из того, что прописано в enum
Player[player][pAdminPass] = adminpass;
new string[256]; // создадим массив для хранения сообщения игроку
format(string, sizeof(string), "Вы были назначены администратором %d уровня! Ваш пароль: %d.",adminl, adminpass); // для красоты уже, отправим игроку сообщение о том, что его назначили администратором, т.к. у нас присутствует %d, сначала пропишем format
SendClientMessage(player,0x00FF00FF,string);
return 1; // завершаем команду
}
Где в массиве объявляли pAdmin, допишите pAdminPass.
И создайте команду /alogin:
if(!strcmp(cmd, "/makeadmin", true)) // создаем команду
{
if(Player[playerid][pAdmin] == 0) return true;
if(GetPVarInt(playerid, "AdminLogin") == 1) return true;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClienMessage(playerid, 0xFF0000FF, "Используйте команду так: /alogin [pass]");
new pass = strval(tmp);
if(pass == Player[playerid][pAdmin])
{
SetPVarInt(playerid, "AdminLogin", 1);
SendClientMessage(playerid, 0xFF0000FF, "Вы успешно авторизовались как админинистратор");
}
else
{
SendClientMessage(playerid, 0xFF0000FF, "Пароль неправильный. Вы кикнуты в целях безопасности");
Kick(playerid);
}
return 1; // завершаем команду
}
И проверять так:
if(GetPVarInt(playerid, "AdminLogin") == 0) return SendClientMessage(playerid, 0xFF0000FF, "Вы еще не авторизованы как администратор");
Перейти к сообщению »