ivanfedoseev59
Нуль
- Регистрация
- 22 Дек 2019
- Сообщения
- 4
- Лучшие ответы
- 0
- Репутация
- 0
Всем доброго времени суток, дорогие скриптеры. У меня возникла некая проблема с кодом.
Я поставил в DLG_LOGIN проверку на G-Auth, проверка состоит в том, что:
• Если символов меньше 16, то игрок просто спавнится.
• Если символов == 16, то идет проверка на всю эту ниже написанную шапку:
• Если стоит настройка GAuthSet == 1 (ПРОВЕРКА GAUTH ВСЕГДА), то выводит окно проверки на код.
• Если стоит настройка GAuthSet == 0 (ПРОВЕРКА НА IP), то проверяется IPшник и спавнится игрок.
Я проверял в БД - стоит настройка == 1, но игрок просто спавнится. Есть предположение, что я накосячил в самой установке GAuth'а, но я ее попросту не вижу.
Прошу помощи, так как уже ничего не понимаю. Заранее благодарю за всю помощь в данной теме. Целую ;*
Ниже прилагаю свой код:
САМ DLG_LOGIN.
САМА УСТАНОВКА G-AUTH
САМА ПРОВЕРКА НА КОД:
Я поставил в DLG_LOGIN проверку на G-Auth, проверка состоит в том, что:
• Если символов меньше 16, то игрок просто спавнится.
• Если символов == 16, то идет проверка на всю эту ниже написанную шапку:
• Если стоит настройка GAuthSet == 1 (ПРОВЕРКА GAUTH ВСЕГДА), то выводит окно проверки на код.
• Если стоит настройка GAuthSet == 0 (ПРОВЕРКА НА IP), то проверяется IPшник и спавнится игрок.
Я проверял в БД - стоит настройка == 1, но игрок просто спавнится. Есть предположение, что я накосячил в самой установке GAuth'а, но я ее попросту не вижу.
Прошу помощи, так как уже ничего не понимаю. Заранее благодарю за всю помощь в данной теме. Целую ;*
Ниже прилагаю свой код:
САМ DLG_LOGIN.
HTML:
if(!strcmp(inputtext, player_info[playerid][Password], false))
{
if(strlen(player_info[playerid][GAuth]) == 16)
{
if(player_info[playerid][GAuthSet] == 1) ShowPlayerDialog(playerid, DLG_LOGINGAUTH, DIALOG_STYLE_INPUT, "{e49a05}Àâòîðèçàöèÿ {FFFFFF}• Google Authenticator", "{FFFFFF}Ââåäèòå êîä èç ïðèëîæåíèÿ Google Authenticator (èëè ðàñøèðåíèÿ) â ïîëå íèæå\nÑîâåòóåì ïåðåïðîâåðèòü ñèíõðîíèçàöèþ ñî âðåìåíåì, àáû ìîãó áûòü íåïîëàäêè ïðè âõîäå", "Äàëåå", "Îòìåíà");
if(player_info[playerid][GAuthSet] == 0)
{
new nowip[16], oldip[16];
GetPlayerIp(playerid, nowip, sizeof(nowip));
GetPlayerSubnet(playerid, nowip, sizeof(nowip));
strmid(oldip, player_info[playerid][LastIp], 0, 16, 16);
GetPlayerSubnet(playerid, oldip, sizeof(oldip));
if(strcmp(nowip, oldip, true) == 0)
{
static const fmt_query[] = "SELECT * FROM `accounts` WHERE `name` = '%s' AND `password` = '%s'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+32)];
mysql_format(dbHandle, query, sizeof(query), fmt_query, player_info[playerid][Name], player_info[playerid][Password]);
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
}
}
}
else if(strlen(player_info[playerid][GAuth]) < 16)
{
static const fmt_query[] = "SELECT * FROM `accounts` WHERE `name` = '%s' AND `password` = '%s'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+32)];
format(query, sizeof(query), fmt_query, player_info[playerid][Name], player_info[playerid][Password]);
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
}
HTML:
if(player_info[playerid][GAuthSet] == 0)
{
player_info[playerid][GAuthSet] = 1;
SendClientMessage(playerid, COLOR_WHITE, !"Ваш G-Authenticator теперь будет запрашиваться при каждом входе");
}
else if(player_info[playerid][GAuthSet] == 1)
{
player_info[playerid][GAuthSet] = 0;
SendClientMessage(playerid, COLOR_WHITE, !"Ваш G-Authenticator теперь будет запрашиваться при каждой смене IP адреса");
}
static const fmt_query[] = "UPDATE `accounts` SET `gauthset` = '%d' WHERE `id` = '%d'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+1)+(-2+8)];
mysql_format(dbHandle, query, sizeof(query), fmt_query, player_info[playerid][GAuthSet], player_info[playerid][ID]);
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
new dialog[120];
format(dialog, sizeof(dialog),
"Установить Google Authenticator\n\
Спрашивать G-Auth %s\n\
Удалить Google Authenticator",
(player_info[playerid][GAuthSet] == 0) ? ("{32CD32}[При смене IP]") : ("{0089ff}[Всегда]"));
ShowPlayerDialog(playerid, DLG_GAUTHCONTROL, DIALOG_STYLE_LIST, !"{e49a05}• Управление G-Authenticator", dialog, !"Выбрать", !"Закрыть");
HTML:
case DLG_LOGINGAUTH:
{
new getcode = GoogleAuthenticatorCode(player_info[playerid][GAuth], gettime());
if(strval(inputtext) == getcode)
{
static const fmt_query[] = "SELECT * FROM `accounts` WHERE `name` = '%s' AND `password` = '%s'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)+(-2+32)];
mysql_format(dbHandle, query, sizeof(query), fmt_query, player_info[playerid][Name], player_info[playerid][Password]);
mysql_tquery(dbHandle, query, "PlayerLogin", "i", playerid);
SendClientMessage(playerid, COLOR_YELLOW, "Вы успешно автризовались.");
}
else
{
SendClientMessage(playerid, COLOR_RED, "Код не совпадает с тем, который необходим. Проверьте синхронизацию со временем!");
Kick(playerid);
}
}