FanGuy
Компетентный
Всем привет. Видел как то похожую команду на форуме, но мне она вообще не зашла, слишком банально, просто кик всех, кто не админ и постановка rcon - пароля
, а написано все как-то сложно, особенно для новичка. Предлагаю свой вариант. Суть: Вы устанавливаете права для команды, человек с правами ее вводит, название сервера изменяется на название с приставкой '| Технические работы' и после этого, всех кто не администратор -- кикает, НО ПАРОЛЬ RCON НЕ ставится, а вместо этого для обычных игроков вход на сервер блокируется.
В начало мода:
Ко всем стокам:
Ко всем CMD:
В OnGameModeInit:
Туда, где у Вас происходит начало авторизации игрока, т.е где у Вас аккаунт игрока уже загружен (но ни в коем случае не в ОнПлеерКоннект!!!!!!!!!):
Кто-то скажет, что говнокод, не оптимизировано.. ладно..
В начало мода:
C++:
new bool:TechJobs;
#define ServerIsClosed TechJobs == true
C++:
stock CheckServerTech(playerid)
{
if(ServerIsClosed)
{
if(!PI[playerid][pAdmin]) // ТУТ ВАША ПРОВЕРКА НА АДМИНА!
{
SendClientMessage(playerid, -1, !"{FA8072}Уважаемые игроки!{FFFFE0} На сервере проводятся технические работы!");
SendClientMessage(playerid, -1, !"{FA8072}Как только они закончатся Вы сможете зайти на сервер!");
Kick(playerid); // Юзаем стандартный кик, если у Вас есть свой стоковский - ставьте его (по желанию)
}
}
return 1;
}
C++:
CMD:tex(playerid)
{
// == ТУТ СТАВИМ ПРОВЕРКУ НА АДМИНА, КОТОРЫЙ МОЖЕТ ИСПОЛЬЗОВАТЬ ЭТУ КМД ==
if(!ServerIsClosed)
{
SendRconCommand("hostname Arizona RP | Технические работы"); // название своего сервера
TechJobs = true;
SendClientMessage(playerid, -1, !"{FFFFE0}Вы включили тех. работы на сервере!");
foreach(Player, i)
{
if(PI[i][pAdmin]) continue; // ТАК ЖЕ ПРОВЕРКА НА АДМИНА, СТАВИМ СВОЮ!
SendClientMessage(i, -1, !"{FA8072}Уважаемые игроки!{FFFFE0} На сервере будут проводиться технические работы.");
SendClientMessage(i, -1, !"{FA8072}Вы будете кикнуты до окончания их!");
Kick(i);
}
}
else
{
SendClientMessage(playerid, -1, !"{FA8072}Вы отключили тех. работы на сервере!");
TechJobs = false;
SendRconCommand("hostname Arizona RP | Pawno Info"); // после hostname '' -- там уже Ваше название, можете, если у вас есть таймер на смену названия, поставить его (тогда и не забудьте изменить в первом случае =)
}
return 1;
}
C++:
TechJobs = false;
C++:
CheckServerTech(playerid);
Последнее редактирование:
