Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Защита администратора. (new)

Статус
В этой теме нельзя размещать новые ответы.

*Anonymous*

Изучающий
Пользователь
Регистрация
29 Апр 2012
Сообщения
354
Лучшие ответы
0
Репутация
272
Здравствуйте дорогие форумчани. Решил представить Вам свою защиту администратора.
Для того чтобы сделать её Вам понадобидся:
Хотябы немного знаний pawno.
Прямые руки (как же без них).
Мод :D
Предуприждаю данная информация прнадлежит только мне. (Dmitry_Podtiopa).
Открываем мод:
Ищем:
PHP:
enum pInfo
Добавляем в конец:
PHP:
Float:pIpAdmin,
Float:pIpAdmin2,
Float:pIpAdmin3,
Float:pIpAdmin4,
Float:pIpNow,
Далее ищем:
PHP:
public OnPlayerLogin(playerid,password[])
Добавляем:
PHP:
iniGetFloat(File,"pIpAdmin",PlayerInfo[playerid][pIpAdmin]);
iniGetFloat(File,"pIpAdmin2",PlayerInfo[playerid][pIpAdmin2]);
iniGetFloat(File,"pIpAdmin3",PlayerInfo[playerid][pIpAdmin3]);
iniGetFloat(File,"pIpAdmin4",PlayerInfo[playerid][pIpAdmin4]);
iniGetFloat(File,"pIpNow",PlayerInfo[playerid][pIpNow]);
P.S(попроавите если не подходит под Ваш мод: iniGetFloat );
Далле в этом паблике ниже ищим:
PHP:
if(PlayerInfo[playerid][pReg] == 0)
И добавляем туда:
PHP:
new playersip[20];
new sendername[100];
new string[100];
GetPlayerIp(playerid,playersip,sizeof(playersip));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "nick/%s.ini",sendername);
new trata[20];
format(trata, sizeof(trata), "0.0.0.0");
new file = iniOpen(string);
if(file < 0) print("нету файла");
else
{
iniSet(File,"pIpAdmin",trata);
iniSet(File,"pIpAdmin2",trata);
iniSet(File,"pIpAdmin3",trata);
iniSet(File,"pIpAdmin4",trata);
iniClose(File);
}
Далее ищим:
PHP:
Вы вошли как Администратор
P.S(Текст приветсвия если входишь под админом (pAdmin > 0);
Вместо этого:
PHP:
if(PlayerInfo[playerid][pAdmin] > 0)
{
format(string2, sizeof(string2), "Вы вошли как Администратор");
SendClientMessage(playerid, COLOR_WHITE,string2);
}
P.S(У Вас будет по другому но суть поймёте);
Всё это заменяем на:
PHP:
if(PlayerInfo[playerid][pAdmin]>0)
{
if(PlayerInfo[playerid][pIpNow] == PlayerInfo[playerid][pIpAdmin] ||
PlayerInfo[playerid][pIpNow] == PlayerInfo[playerid][pIpAdmin2] ||
PlayerInfo[playerid][pIpNow] == PlayerInfo[playerid][pIpAdmin3] ||
PlayerInfo[playerid][pIpNow] == PlayerInfo[playerid][pIpAdmin4])
{
format(string2, sizeof(string2), "* Вы вошли как Администратор{00aadb} %d{FFFFFF} уровня!",PlayerInfo[playerid][pAdmin]);
SendClientMessage(playerid, COLOR_WHITE,string2);
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Пошла на*** ***а!");
SendClientMessage(playerid, COLOR_LIGHTRED, "Твой IP отлечается от админского , ****тяй!");
BanEx(playerid, " Ugon akka admina");
PlayerInfo[playerid][pBaned] = 1;
}
}
Далее ищем:
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
Гдето в нём(где угодно) вставляем:
PHP:
 if(strcmp(cmd, "/dip1", true) == 0||strcmp(cmd, "/dip1", true) == 0)
	{
		if(PlayerInfo[playerid][pAdmin] < 2011)
		{
			SendClientMessage(playerid,COLOR_RED,"* Вы не уполномочены использовать эту команду!");
			return 1;
		}
		new akk[256],ssss[256];
		akk = strtok(cmdtext, idx);
		if(!strlen(akk))
		{
			SendClientMessage(playerid,COLOR_GREY,"*Используйте: /dip1 [name_akkaunt][ip]");
			return 1;
		}
          new length = strlen(cmdtext);
				while ((idx < length) && (cmdtext[idx] <= ' '))
				{
					idx++;
				}
				new offset = idx;
				new result[256];
				while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
				{
					result[idx - offset] = cmdtext[idx];
					idx++;
				}
				result[idx - offset] = EOS;
				if(!strlen(result))
				{
					SendClientMessage(playerid, COLOR_RED, "*Используйте: /dip1 [name_akkaunt][ip] ");
					return 1;
				}
		format(string,sizeof(string),"nick/%s.ini",akk);
		if(!fexist(string))
		{
			SendClientMessage(playerid,COLOR_RED,"* Такого аккаунта не существует!");
			return 1;
		}
		
		else
		{
			new File = iniOpen(string);
			iniSet(File,"pIpAdmin",(result));
			iniClose(File);
			format(ssss,sizeof(ssss),"*AdminIP1 : %s",result);
			SendClientMessage(playerid,COLOR_LIGHTBLUE,ssss);
		}
		return 1;
	}
P.S(Так же можете сделать /dip2 /dip3 /dip4 (аналогично к /dip1));
Идём дальше.
ко всем forward
Добавляем:
PHP:
forward LoadAdmins(playerid);
В конце мода создаём public
PHP:
public LoadAdmins(playerid)
{
 new playersip[20];
			new sendername[100];
   new string[100];
		 	GetPlayerIp(playerid,playersip,sizeof(playersip));
     	    GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "nick/%s.ini",sendername);
   new file = iniOpen(string);
			if(file < 0) print("нету файла");
			else
			{
			iniSet(file,"pIpNow",playersip);
			iniClose(file);
			}
}
Потом ищем:
PHP:
if(dialogid==1)
В нём ищем чтото похожое:
PHP:
if(!strcmp((inputtext),pass,true))
            {
                OnPlayerLogin(playerid,(inputtext));
            }
Заменяем это на:
PHP:
if(!strcmp((inputtext),pass,true))
            {
                LoadAdmins(playerid); // load IP now by Podtiopa
                OnPlayerLogin(playerid,(inputtext));
            }
Даём админку /makeadmin и приписываем IP /dip .
Всё. Пользуйтесь на здоровье)
Главное это защита)
Данный материал пренадлежит мне. Dmitry_Podtiopa (*AnonymouS*)


Если динамический ИП нужно вписывать все 3 ипа которые меняються .
P.S(не тестировал но попробуйте: писать подсеть: ip.ip.*.* (пример) 125.47.*.* );
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу