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

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

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

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

Технические работы[2 Версия!]

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

Dark_Ilya

Изучающий
Пользователь
Регистрация
6 Фев 2012
Сообщения
532
Лучшие ответы
0
Репутация
115
Всем привет!Вот смотрел команды и мне очень понравилась тема http://pawno-info.ru/threads/110919-Технические-работы
Спасибо __oFFmaN :3 за идею
Я придумал немного другой способ:
Итак давайте начнём:
Ко всем new
PHP:
new bool:TexJob = false;
В public OnPlayerConnect(playerid)
PHP:
if(TexJob == true) KickAll();
//В public OnPlayerCommandText(playerid, cmdtext[])
PHP:
{
      if(strcmp(cmd, "/techjob", true) == 0)
      {
             if(PlayerInfo[playerid][pAdmin] <= 4) return SendClientMessage(playerid, COLOR_RED, "Нужно иметь более высокий уровень доступа!");//Меняем на своё если нужно
	     if(TexJob == false) return SendClientMessageToAll(COLOR_RED,"На сервере Тех Работы"),TexJob = true,KickAll(),SendRconCommand("hostname Технические работы");//Меняем на своё если нужно
	      else return SendClientMessageToAll(COLOR_RED,"Технические работы закончены"),TexJob = false,SendRconCommand("hostname Название сервера");//Меняем на своё если нужно
		}
	}
Ну и создаём сток(Куда-нибудь вниз мода)
PHP:
stock KickAll()//В свободное место
{
      for(new i = GetMaxPlayers() - 1; i != -1; --i)
      {
            if(!IsPlayerConnected(i)) continue;
	    if(PlayerInfo[i][pAdmin] < 1) Kick(i),SendClientMessageToAll(COLOR_RED,"Извените,но в данный момент на сервере происходят технические работы!");//Меняем на своё если нужно
      }
}

[HR][/HR]


Ну вот как я и обещал продолжение этой так называемой системки:
Пишем всё-то же самое но кроме самой команды и у нас получиться:
Ко всем new
PHP:
	new bool:TexJob = false;
	new needleveladm;
В public OnPlayerConnect(playerid)
PHP:
	if(TexJob == true) KickAll();
В public OnPlayerCommandText(playerid, cmdtext[])
PHP:
	if(strcmp(cmd, "/techjob", true) == 0)
	{
		if(PlayerInfo[playerid][pAdmin] <= 4) return SendClientMessage(playerid, COLOR_RED, "Нужно иметь более высокий уровень доступа!");//Меняем на своё если нужно
		format(string,sizeof(string),"Технические работы[ON]\nТехнические работы[OFF]\nПри Т/Р кикать всех кто меньше %d\nСменить Название сервера\nСменить название мода\nСделать рестарт",needleveladm);
		ShowPlayerDialog(playerid,5642,DIALOG_STYLE_LIST,"Админ-Панель",string,"Выбрать","Отмена");//5642 меняем если занято!!
		return true;
	}
Ищем switch(dialogid).Если нет,то создаём
У кого есть! switch(dialogid)
PHP:
	case 5642:
			{
				if(response)
				{
					if(listitem == 0)
					{
						if(TexJob == false) return SendClientMessageToAll(COLOR_RED,"На сервере Тех Работы"),TexJob = true,KickAll();//Меняем на своё если нужно
						else return SendClientMessage(playerid,COLOR_RED,"Технические работы уже включены");
					}
					if(listitem==1)
					{
						if(TexJob == true) return SendClientMessageToAll(COLOR_RED,"Технические работы прекращены!"),TexJob = false;//Меняем на своё если нужно
						else return SendClientMessage(playerid,COLOR_RED,"Технические работы итак выключены");
					}
					if(listitem==2)
					{
						ShowPlayerDialog(playerid,5321,DIALOG_STYLE_INPUT,"Админ-Панель","Введите наименьший уровень администратора,\nкоторого не будет кикать при технических работах","Ок","Отмена");
					}
					if(listitem==3)
					{
						ShowPlayerDialog(playerid,1530,DIALOG_STYLE_INPUT,"Админ-Панель","Новое хост-имя:","Ок","Отмена");
					}
					if(listitem==4)
					{
						ShowPlayerDialog(playerid,1531,DIALOG_STYLE_INPUT,"Админ-Панель","Новое имя мода:","Ок","Отмена");
					}
					if(listitem==5)
					{
						SendRconCommand("gmx");
					}
				}
				return true;
			}
			case 5321:
	{
		if(response)
		{
			new money = strval(inputtext);
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid,5321,DIALOG_STYLE_INPUT,"Админ-Панель","Введите наименьший уровень администратора,\nкоторого не будет кикать при технических работах","Ок","Отмена");
			if(money > PlayrInfo[playerid][pAdmin]) return ShowPlayerDialog(playerid,5321,DIALOG_STYLE_INPUT,"ОШИБКА","Введите наименьший уровень администратора,\nкоторого не будет кикать при технических работах","Ок","Отмена");
			needleveladm = money;
		}
		return 1;
	}
	case 1530:
	{
		if(response)
		{
			if(!strlen(inputtext))
			{
				SendClientMessage(playerid,0xFF00AA,"Пожалуйста, введите имя хоста");
				return true;
			}
			new control[256];
			format(control,256,"hostname %s",inputtext);
			SendRconCommand(control);
		}
	}
	case 1531:
	{
		if(response)
		{
			if(!strlen(inputtext))
			{
				SendClientMessage(playerid,0xFF00AA,"Пожалуйста введите имя мода");
				return true;
			}
			new control[256];
			format(control,256,"changemode %s",inputtext);
			SendRconCommand(control);
		}
	}
У кого нет!
PHP:
	switch(dialogid)//У кого нет switch(dialogid)
		{
			case 5642:
			{
				if(response)
				{
					if(listitem == 0)
					{
						if(TexJob == false) return SendClientMessageToAll(COLOR_RED,"На сервере Тех Работы"),TexJob = true,KickAll();//Меняем на своё если нужно
						else return SendClientMessage(playerid,COLOR_RED,"Технические работы уже включены");
					}
					if(listitem==1)
					{
						if(TexJob == true) return SendClientMessageToAll(COLOR_RED,"Технические работы прекращены!"),TexJob = false;//Меняем на своё если нужно
						else return SendClientMessage(playerid,COLOR_RED,"Технические работы итак выключены");
					}
					if(listitem==2)
					{
						ShowPlayerDialog(playerid,5321,DIALOG_STYLE_INPUT,"Админ-Панель","Введите наименьший уровень администратора,\nкоторого не будет кикать при технических работах","Ок","Отмена");
					}
					if(listitem==3)
					{
						ShowPlayerDialog(playerid,1530,DIALOG_STYLE_INPUT,"Админ-Панель","Новое хост-имя:","Ок","Отмена");
					}
					if(listitem==4)
					{
						ShowPlayerDialog(playerid,1531,DIALOG_STYLE_INPUT,"Админ-Панель","Новое имя мода:","Ок","Отмена");
					}
					if(listitem==5)
					{
						SendRconCommand("gmx");
					}
				}
				return true;
			}
			case 5321:
	{
		if(response)
		{
			new money = strval(inputtext);
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid,5321,DIALOG_STYLE_INPUT,"Админ-Панель","Введите наименьший уровень администратора,\nкоторого не будет кикать при технических работах","Ок","Отмена");
			if(money > PlayrInfo[playerid][pAdmin]) return ShowPlayerDialog(playerid,5321,DIALOG_STYLE_INPUT,"ОШИБКА","Введите наименьший уровень администратора,\nкоторого не будет кикать при технических работах","Ок","Отмена");
			needleveladm = money;
		}
		return 1;
	}
	case 1530:
	{
		if(response)
		{
			if(!strlen(inputtext))
			{
				SendClientMessage(playerid,0xFF00AA,"Пожалуйста, введите имя хоста");
				return true;
			}
			new control[256];
			format(control,256,"hostname %s",inputtext);
			SendRconCommand(control);
		}
	}
	case 1531:
	{
		if(response)
		{
			if(!strlen(inputtext))
			{
				SendClientMessage(playerid,0xFF00AA,"Пожалуйста введите имя мода");
				return true;
			}
			new control[256];
			format(control,256,"changemode %s",inputtext);
			SendRconCommand(control);
		}
	}
		}
Ну и создаём сток(Куда-нибудь вниз мода)
PHP:
	stock KickAll()//В свободное место
	{
		for(new i = GetMaxPlayers() - 1; i != -1; --i)
		{
				if(!IsPlayerConnected(i)) continue;
			if(PlayerInfo[i][pAdmin] < needleveladm) Kick(i),SendClientMessage(i,COLOR_RED,"Извените,но в данный момент на сервере происходят технические работы!");//Меняем на своё если нужно
		}
	}
P.S. сам я не проверял,но работать должно,на счёт всех ошибок пишите сюда!Этим вы поможете не только себе :bj:
Оптимизация присутствует по-моему полностью.Чего не скажешь о табуляции.Код был лесенкой,а вот тут каша.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу