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

Не показывает G-Auth.

Статус
В этой теме нельзя размещать новые ответы.

ivanfedoseev59

Нуль
Регистрация
22 Дек 2019
Сообщения
4
Лучшие ответы
0
Репутация
0
Всем доброго времени суток, дорогие скриптеры. У меня возникла некая проблема с кодом.

Я поставил в 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);
					}
САМА УСТАНОВКА G-AUTH
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);
	        }
		}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу