KlasterK

Установка пароля на сервер [dc_cmd + sscanf2]

1 post in this topic

Вы можете поставить пароль на ваш сервер, не входя в RCon и чтобы уже играющие игроки тоже не могли продолжить играть.

Если у вас возникли вопросы, пишите.

Спойлер

// В место глобальных переменных
new slock_password[32] = "";

// В ваш player enum
enum PlayerInfo
{
    ...
    pServerLockLogged = 0,
    ...
}

// В место с константами или в ваш dialog enum
#define DIALOG_SLOCK_INPUT Введите число
// ИЛИ
enum Dialogs
{
    ...
    DIALOG_SLOCK_INPUT,
    ...
}

// В место с командами
CMD:lockserver(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1"Вы не RCon админ!"); // Замените на вашу проверку админа
    if(params[0] == '\0'return SendClientMessage(playerid, -1"Вы не указали пароль!")     // Замените цвет
    slock_password = params;
    for(new i = 0; i < MAX_PLAYERS; i++)
        if(IsPlayerConnected(playerid) && !IsPlayerAdmin(playerid)) // Замените IsPlayerAdmin на вашу проверку админа
            ShowPlayerDialog(playerid, DIALOG_SLOCK_INPUT, DIALOG_STYLE_INPUT, "Авторизация""Администратор установил пароль на сервер.\nВведите пароль чтобы продолжить играть.""Войти""Выйти");
}

public OnPlayerConnect(playerid)
{
    if(s_password[0] != '\0' && !PlayerInfo[playerid][pServerLockLogged]) // Если у вас enum(замените имя на своё)
    if(s_password[0] != '\0' && !GetPVarInt(playerid, "slock_logged")     // Если у вас PVar
        ShowPlayerDialog(playerid, DIALOG_SLOCK_INPUT, DIALOG_STYLE_INPUT, "Авторизация""Администратор установил пароль на сервер.\nВведите пароль чтобы продолжить авторизацию/регистрацию.""Войти""Выйти");
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    else if(dialogid == DIALOG_SLOCK_INPUT) // Если у вас if-elseif
    case DIALOG_SLOCK_INPUT:                // Если у вас switch
    {
        if(!response || inputtext[0] == '\0' || !strcmp(inputtext, slock_password)) // Если игрок нажал Esc, ничего не написал или неправильный пароль
            Kick(playerid); // Можно заменить, если у вас есть красивый кик на TextDraw или GameText
        else
        {
            SetPVarInt(playerid, "slock_logged"1);     // Если у вас PVar
            PlayerInfo[playerid][pServerLockLogged] = 1// Если у вас enum(замените имя на своё)
            if(!PlayerInfo[playerid][pLogged])           // Замените на свою проверку на авторизованность
                OnPlayerConnect(playerid);
        }
    }
}

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content