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

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

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

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

АнтиСлив (/acpanel)

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

Nestyreff

Новичок
Создавал систему для администраторов, подойдёт для НубоРП и для РП серверов.

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

В enum PlayerInfo или как он у вас там называется:
Код:
enum PlayerInfo // просто написал такой, но вы меняйте на свой
{
  pSlivWarn, (Запятая нужная, только если в середине, если в конце списка, то запятую убирайте)
}
В public OnGamemodeInit:
Код:
new AC = 1;
в OnPlayerJoin или OnPlayerConnect
Код:
   SetPVarString(playerid, "name", GetPlayerName(playerid, name, MAX_PLAYER_NAME));
В конец мода:
Код:
stock AntiSliv(playerid)
{
	if(AC == 1)
	{
           GetPVarString(playerid, "name", name, sizeof(name));
	   switch(PlayerInfo[playerid][pSlivWarn])
           {
	    case 10:
	    {
	        SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
	    }
	    case 20:
	    {
	        SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
	    }
	    case 25:
	    {
	        SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
	    }
	    case 27:
	    {
	        SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность");
	    }
		case 30:
		{
		    SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] Вы были кикнуты по подозрению в сливе!");
			NewKick(playerid);
			new stof[255];
			format(stof, sizeof(stof), "[АнтиСлив] Администратор %s подозревается в сливе и был кикнут!", name);
			AdminChat(COLOR_RED, stof);//Заменяйте на свой сток или смотрим внизу
		}
		if(PlayerInfo[playerid][pAdmin] >= 5)
		{
		    if(PlayerInfo[playerid][pSlivWarn] >= 50)
		    {
				OnPlayerCommandText(playerid,"/restart"); // Можно убрать
				SendClientMessage(playerid, COLOR_RED, "[АнтиСлив] На вашем аккаунте замечена подозрительная активность и был запущен рестарт!");
				Kick(playerid);
		    }
		}
           }
	}
}

Далее ко всем командам:
Код:
        if(!strcmp(cmd, "/offac",true))
	{
	    if(pData[playerid][pAdmin] > 1) return 1; // Заменяем 1 на значение уровня администратора который может отключить и выше
		if(AC == 1)
		{
		        AC = 0;
                        GetPVarString(playerid, "name", nick, sizeof(name));
			new stof[255]; 
			format(stof, sizeof(stof), "Система "АнтиСлив" была выключена администратором %s", nick); 
			AdminChat(COLOR_RED, stof); 
		}
		else
		{
		    AC = 1;
		}
	}
        if(!strcmp(cmd, "/clearac", true))
	{
		if(pData[playerid][pAdmin] >= 1) // заменяем 1 на значение уровня администратора, который будет иметь возможность и выше
		{
		    new i = MAX_PLAYERS;
		    pData[i][pSlivWarn] = 0;
		    SendClientMessage(playerid, COLOR_BLUE, "[АнтиСлив] Вы очистили Варнинги!");
		}
		return 1;
	}  
        if(!strcmp(cmd, "/acpanel", true))
	{
	    if(pData[playerid][pAdmin] >= 1) return 1;
		if(AC == 1)
		{
		    ShowPlayerDialog(playerid, dAcPanel, DIALOG_STYLE_LIST, "Автоконтроллер | {00FF00}Включен", "{FFFFFF}[1] Информация\n[2]{FF0000} Выключить\n{FFFFFF}[3] Очистить Варнинги\n[4] Список подозреваемых", "Далее", "Отмена");
		}
		else
		{
		    ShowPlayerDialog(playerid, dAcPanel, DIALOG_STYLE_LIST, "АвтоКонтроллер | {FF0000}Выключен", "{FFFFFF}[1] Информация\n[2]{00FF00} Включить\n{FFFFFF}[3] Очистить Варнинги\n[4] Список подозреваемых", "Далее", "Отмена");
		}
	}

Далее ко всем enum или в любой точке мода:
Код:
enum Dialog
{
 dAcPanel,
 dAcPanelOff
}
В public OnDialogResponse
Код:
       if(dialogid == dAcPanel)
      {
                if(!response) return 1;
	        switch(listitem)
	        {
	            case 0:
	            {
					SendClientMessage(playerid, 0xFFFF00FF, "------------ Система АвтоКонтроллера --------");
					SendClientMessage(playerid, 0xFFFF00FF, "----- AntiSliv 0.6(BETA) | by Nestyreff   ---");
					SendClientMessage(playerid, 0xFFFF00FF, "------------ Система АвтоКонтроллера --------");
					
	            }
	            case 1:
	            {
					if(AC == 0)
					{
					    AC = 1;
						SendClientMessage(playerid, COLOR_GREEN, "Вы включили систему АвтоКонтроллера");
						AdminChat(0xFFFF00FF, "Система АвтоКонтроллера включена"); // Админ Чат либо убираем, либо смотрим внизу
					}
					if(AC == 1)
					{
					    ShowPlayerDialog(playerid, dAcPanelOff, DIALOG_STYLE_MSGBOX, "Подтверждение", "Вы точно хотите отключить систему АвтоКонтроллера?", "Да", "Нет");
					}
	            }
	            case 2:
	            {
					new i = MAX_PLAYERS;
					SendClientMessage(playerid, COLOR_RED, "Вы очистили варнинги!");
					if(pData[i][pSlivWarn] >= 1) return SendClientMessage(i, 0xFFFF00FF, "Администратор очистил Вам Варнинги!");
					pData[i][pSlivWarn] = 0;
	            }
	            case 3:
	            {
					SendClientMessage(playerid,COLOR_GREEN,"Подозреваемые онлайн:");
                                        GetPVarString(playerid, "name", nick, sizeof(name));
					foreach(new i:Player)
					{
						if(!IsPlayerConnected(i) || !pData[i][pSlivWarn]) continue;
						new mes[64];
						if(pData[i][pSlivWarn]) format(mes,sizeof(mes),"{FFFFFF}%s[%d] (%d) | Warning: %d",nick,i,PlayerInfo[i][pAdmin], PlayerInfo[i][pSlivWarn]); 
			   			SendClientMessage(playerid,0xFFFF00FF,mes);
					}
	            }
	            
	        }
      }
      if(dialogid == dAcPanelOff)
      {
        if(!response) return SendClientMessage(playerid, 0xFFFF00FF, "Вы отказались");
        if(response)
        {
		AC = 0;
		SendClientMessage(playerid, COLOR_RED, "Вы отключили систему АвтоКонтроллера");
        }
      }

Теперь, добавляем вот это:
Код:
   PlayerInfo[playerid][pSlivWarn]++;
   AntiSliv(playerid);
Ко всем команды, за которые будут даваться предупреждения. Можно добавить просто AntiSliv(); , но тогда будет просто проверка, варнинги даваться не будут.


Если хотите, чтобы Варнинги сами очищались, то добавьте в PayDay:
Код:
       new i = MAX_PLAYERS;
       PlayerInfo[playerid][pSlivWarn] = 0;
ВАЖНО!:
Связь со . Помогу если что.
Также если, у вас нет AdminChat, то добавьте в конец мода:
Код:
stock AdminChat(color,mes[])
{
	for(new i;i<MAX_PLAYERS;i++)
	{
		if(!IsPlayerConnected(i) || !PlayerInfo[i][pAdmin]) continue;
		SendClientMessage(i,color,mes);
	}
}
При этом Вам всё равно придёться менять PlayerInfo на свой.

P.S.:

Делал скрипт для своего сервера, но решил, что в нём нет ничего сложного, но в нём нуждаются люди и я решил
выложить Его тут, это мой первый паблик-скрипт, оценивайте не строго)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу