Форум Pawn.Wiki - Воплоти мечту в реальность!: не появляется диалог авторизации - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Pawn ]
не появляется диалог авторизации

#1
Пользователь офлайн   фыркафпычк 

  • Местный
  • Вставить ник
  • Раскрыть информацию
переделывал авторизацию и не заработала рега, хотя я вроде все правильно сделал

case D_LOG:
		{
			if(!response)
			{
				ShowPlayerDialog(playerid, D_INVALID, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Отказ от авторизации.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", "");
				return Kick(playerid);
			}
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы не можете продолжить авторизацию не введя пароль!\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
			for(new i = strlen(inputtext)-1; i != -1; i--)
			{
				switch(inputtext[i])
				{
					case '0'..'9', 'а'..'я', 'a'..'z', 'А'..'Я', 'A'..'Z': continue;
					default: return ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Введённый пароль содержит запрещённые символы!\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
				}
			}
			if(!strcmp(PI[playerid][pPassword], inputtext))
			{
				new query_string[49+MAX_PLAYER_NAME];
				format(query_string, sizeof(query_string), "SELECT * FROM `players` WHERE `name` = '%s'", PI[playerid][pName]);
				mysql_tquery(DBconnectID, query_string, "UploadPlayerAccount","i", playerid);
			}
               }
       }
       return 1;
}
forward UploadPlayerAccount(playerid);
public UploadPlayerAccount(playerid)
{
    cache_get_value_name_int(0, "id", PI[playerid][pID]);
	cache_get_value_name_int(0, "money", PI[playerid][pMoney]);
	cache_get_value_name_int(0, "admin", PI[playerid][pAdmin]);
    SendClientMessage(playerid, 0xFFFFFF00, "Вы успешно авторизировались!");
    SpawnPlayer(playerid);
    return 1;
}
forward FindPlayerInTable(playerid);
public FindPlayerInTable(playerid)
{
    new rows;
    cache_get_row_count(rows);
    if(!rows)
    {
        ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Регистрация нового пользователя", "Введите пароль для регистрации нового аккаунта:", "Регистрация", "Выход");
    }
    else
    {
        ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "Введите пароль от аккаунта для того, чтоб продолжить игру:", "Вход", "Выход");
        cache_get_value_name(0, "password", PI[playerid][pPassword], 30);
    }
    return 1;
}

Сообщение отредактировал фыркафпычк: 15 апреля 2025 - 22:25

0

#2
Пользователь офлайн   U P D O W N 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияфыркафпычк (15 апреля 2025 - 22:24) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

покажи вызов FindPlayerInTable
Поможет наврядли , но попробуй так:

public FindPlayerInTable(playerid)
{
    new rows;
    cache_get_row_count(rows);
    if(rows)
    {
        // диалог авторизации
    }
    else
    {
        // диалог регистрации
    }
    return 1;
}

Сообщение отредактировал U P D O W N: 15 апреля 2025 - 22:29

0

#3
Пользователь офлайн   фыркафпычк 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияU P D O W N (15 апреля 2025 - 22:27) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

format(query, 75, "SELECT * FROM `players` WHERE `name` = '%s'", PI[playerid][pName]);
	mysql_tquery(DBconnectID, query, "FindPlayerInTable", "i", playerid);

0

#4
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Так а что именно не работает? И что пишет в логах сервера/mysql? Какая структура таблицы?
0

#5
Пользователь офлайн   фыркафпычк 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (15 апреля 2025 - 22:47) писал:

Так а что именно не работает? И что пишет в логах сервера/mysql? Какая структура таблицы?

попытки ввода пороля сразу же заканчиваются на сервер захожу сразу

UPD: [07:46:24] [ERROR] error #1064 while executing query "UPDATE `players` SET `name` = 'text_nick', `password` = '123123' `money` = '0' `admin` = '0' WHERE `id` = '0'": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '`money` = '0' `admin` = '0' WHERE `id` = '0'' at line 1

case D_LOG:
		{
			if(!response)
			{
				ShowPlayerDialog(playerid, D_INVALID, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Отказ от авторизации.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", "");
				return Kick(playerid);
			}
			if(!strlen(inputtext)) return ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы не можете продолжить авторизацию не введя пароль!\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
			for(new i = strlen(inputtext)-1; i != -1; i--)
             {
				switch(inputtext[i])
				{
					case '0'..'9', 'а'..'я', 'a'..'z', 'А'..'Я', 'A'..'Z': continue;
					default: return ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Введённый пароль содержит запрещённые символы!\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
				}
            }
			if(!strcmp(PI[playerid][pPassword], inputtext))
			{
				new query_string[49+MAX_PLAYER_NAME];
				format(query_string, sizeof(query_string), "SELECT * FROM `players` WHERE `player_name` = '%s'", PI[playerid][pName]);
				mysql_tquery(DBconnectID, query_string, "UploadPlayerAccount","i", playerid);
			}
			else
			{
				switch(GetPVarInt(playerid, "WrongPassword"))
				{
					case 0: ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталось 3 попытки.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
					case 1: ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталось 2 попытки.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
					case 2: ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталось 1 попытка.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
					case 3: ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", "{FF0000}Ошибка: {FFFFFF}Вы ввели неверный пароль! У Вас осталась последняя попытка, после чего Вас кикнет.\nВведите пароль от аккаунта для входа на сервер:", "Вход", "Выход");
					default:
					{
						ShowPlayerDialog(playerid, D_INVALID, DIALOG_STYLE_MSGBOX, "Оповещение", "{FFFFFF}Вы были кикнуты с сервера.\n{FF0000}Причина: Превышен лимит попыток на ввод пароля.\n{FFFFFF}Для выхода с сервера введите \"/q\" в чат", "Выход", "");
						return Kick(playerid);
					}
				}
				SetPVarInt(playerid, "WrongPassword", GetPVarInt(playerid, "WrongPassword")+1);
			}
		}
	}
	return 1;
}

Сообщение отредактировал фыркафпычк: 16 апреля 2025 - 07:56

0

#6
Пользователь офлайн   DeimoS 

  • Evil Scripter
  • Вставить ник
  • Раскрыть информацию
Если это свежая ошибка, то у тебя при сохранении аккаунта не хватает запятой после
`money` = '%d'


А касаемо проблемы: ну так, как минимум, стоит залогировать значение массивов перед
if(!strcmp(PI[playerid][pPassword], inputtext))

Сделав так
printf("PI[playerid][pPassword] = |%s|", PI[playerid][pPassword]);
printf("inputtext = |%s|", inputtext);
if(!strcmp(PI[playerid][pPassword], inputtext))


Ну это на случай, если проблема в том, что ты вводишь неверный пароль и всё равно заходишь.
1

#7
Пользователь офлайн   фыркафпычк 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (16 апреля 2025 - 08:08) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

когда я захожу на сервер то кикает и пишет не верный ввод пороля, даже пароль я не вводил, уже пишет не правильный пароль

Сообщение отредактировал фыркафпычк: 16 апреля 2025 - 10:05

0

#8
Пользователь офлайн   фыркафпычк 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияDeimoS (16 апреля 2025 - 08:08) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

спс, у меня оказалось работал скрипт с автопаролем
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика