• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Как правильно сделать количество попыток на ввод пароля

Danny_Marcelo

Компетентный
Здравствуйте. Помогите додумать систему количества попыток на ввод пароля. Сейчас она выглядит вот так:

Код:
forward PlayerLogin(playerid);
public PlayerLogin(playerid)
{
    new string[155],
        rows,
        fields;
    cache_get_data(rows, fields);
    if(rows)
    {
        cache_get_field_content(0, "Password", PlayerInfo[playerid][pPassword], dbHandle, 15);
        PlayerInfo[playerid][pIDacc] = cache_get_field_content_int(0, "IDacc");
        PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level");
        PlayerInfo[playerid][pSex] = cache_get_field_content_int(0, "Sex");
        PlayerInfo[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
        PlayerInfo[playerid][pMoney] = cache_get_field_content_int(0, "Money");
        PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0, "Admin");
        LoginCheck{playerid} = true;
        SpawnPlayer(playerid);
        
    }
    else
    {
        switch(WrongPassword[playerid])
        {
            case 0:
            {
                format(string, sizeof(string),
                "{FFFFFF}Добро пожаловать на сервер Freedom RolePlay\n\
                Ваш ник зарегистрирован\n\n\
                Логин: {66CC33}%s\n\
                {FF3300}Неверный пароль! Осталось попыток: 3", PlayerInfo[playerid][pName]);
                ShowPlayerDialog(playerid, 3, DIALOG_STYLE_PASSWORD,
                !"{66CCFF}Авторизация", string, !"Войти", !"Отмена");
                WrongPassword[playerid] = 1;
            }
            case 1:
            {
                format(string, sizeof(string),
                "{FFFFFF}Добро пожаловать на сервер Freedom RolePlay\n\
                Ваш ник зарегистрирован\n\n\
                Логин: {66CC33}%s\n\
                {FF3300}Неверный пароль! Осталось попыток: 2", PlayerInfo[playerid][pName]);
                ShowPlayerDialog(playerid, 3, DIALOG_STYLE_PASSWORD,
                !"{66CCFF}Авторизация", string, !"Войти", !"Отмена");
                WrongPassword[playerid] = 2;
            }
            case 2:
            {
                format(string, sizeof(string),
                "{FFFFFF}Добро пожаловать на сервер Freedom RolePlay\n\
                Ваш ник зарегистрирован\n\n\
                Логин: {66CC33}%s\n\
                {FF3300}Неверный пароль! Осталось попыток: 1", PlayerInfo[playerid][pName]);
                ShowPlayerDialog(playerid, 3, DIALOG_STYLE_PASSWORD,
                !"{66CCFF}Авторизация", string, !"Войти", !"Отмена");
                WrongPassword[playerid] = 3;
                SendClientMessage(playerid, COLOR_ORANGE, "При неправильном вводе пароля Вы будете забанены");
            }
            case 3:
            {
                ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, !"{FF9933}Лимит попыток авторизации",
                !"{FFFFFF}Вы ввели неправильно пароль 3 раза подряд.\n\
                Ваш IP адрес временно заблокирован",
                !"Закрыть", !"");
                KickEx(playerid);
            }
        }
    }
    return 1;
}
Как вот это уменьшить и при этом не потерять функционал? Есть вариант с использованием pVar, но говорят их лучше не использовать, в итоге я в ступоре, как лучше сделать 3 попытки на ввод пароля, при этом при 1 попытки предупреждение, а после последней идёт уже бан по ип (систему бана пока не делал, просто кик поставил временно).
 
Сверху Снизу