Danny_Marcelo
Компетентный
Здравствуйте. Помогите додумать систему количества попыток на ввод пароля. Сейчас она выглядит вот так:
Как вот это уменьшить и при этом не потерять функционал? Есть вариант с использованием pVar, но говорят их лучше не использовать, в итоге я в ступоре, как лучше сделать 3 попытки на ввод пароля, при этом при 1 попытки предупреждение, а после последней идёт уже бан по ип (систему бана пока не делал, просто кик поставил временно).
Код:
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;
}
