- Регистрация
- 6 Фев 2012
- Сообщения
- 532
- Лучшие ответы
- 0
- Репутация
- 115
Всем привет!Вот смотрел команды и мне очень понравилась тема http://pawno-info.ru/threads/110919-Технические-работы
Спасибо __oFFmaN :3 за идею
Я придумал немного другой способ:
Итак давайте начнём:
Ко всем new
В public OnPlayerConnect(playerid)
//В public OnPlayerCommandText(playerid, cmdtext[])
Ну и создаём сток(Куда-нибудь вниз мода)
[HR][/HR]
Ну вот как я и обещал продолжение этой так называемой системки:
Пишем всё-то же самое но кроме самой команды и у нас получиться:
Ко всем new
В public OnPlayerConnect(playerid)
В public OnPlayerCommandText(playerid, cmdtext[])
Ищем switch(dialogid).Если нет,то создаём
У кого есть! switch(dialogid)
У кого нет!
Ну и создаём сток(Куда-нибудь вниз мода)
P.S. сам я не проверял,но работать должно,на счёт всех ошибок пишите сюда!Этим вы поможете не только себе :bj:
Оптимизация присутствует по-моему полностью.Чего не скажешь о табуляции.Код был лесенкой,а вот тут каша.
Спасибо __oFFmaN :3 за идею
Я придумал немного другой способ:
Итак давайте начнём:
Ко всем new
PHP:
new bool:TexJob = false;
PHP:
if(TexJob == true) KickAll();
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;
PHP:
if(TexJob == true) KickAll();
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)
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,"Извените,но в данный момент на сервере происходят технические работы!");//Меняем на своё если нужно
}
}
Оптимизация присутствует по-моему полностью.Чего не скажешь о табуляции.Код был лесенкой,а вот тут каша.
Последнее редактирование: