Доступ к готовым решениям

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

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

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

/tex | Технические работы на сервере

FanGuy

Компетентный
Всем привет. Видел как то похожую команду на форуме, но мне она вообще не зашла, слишком банально, просто кик всех, кто не админ и постановка rcon - пароля :confused:, а написано все как-то сложно, особенно для новичка. Предлагаю свой вариант. Суть: Вы устанавливаете права для команды, человек с правами ее вводит, название сервера изменяется на название с приставкой '| Технические работы' и после этого, всех кто не администратор -- кикает, НО ПАРОЛЬ RCON НЕ ставится, а вместо этого для обычных игроков вход на сервер блокируется.
В начало мода:
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;
}
Ко всем CMD:
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;
}
В OnGameModeInit:
C++:
    TechJobs = false;
Туда, где у Вас происходит начало авторизации игрока, т.е где у Вас аккаунт игрока уже загружен (но ни в коем случае не в ОнПлеерКоннект!!!!!!!!!):
C++:
    CheckServerTech(playerid);
Кто-то скажет, что говнокод, не оптимизировано.. ладно..
 
Последнее редактирование:
Сверху Снизу