• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Проблема Не работает логин

Holo4ka

Участник портала
Автор темы
4 Июн 2022
1
0
6
Здравствуйте. Пишу код для входу в аккаунт и столкнулся с проблемой - ввожу правильный пароль не пускает, ввожу не правильный пароль тоже не пускает. Не знаю где проблема. Буду очень благодарен, если кто-то сможет помочь.

RemoteEvent:
C#:
[RemoteEvent("authOnLogin")]
        private void authOnLogin(Player player, string login, string password)
        {
            if (!mysql.IsAccountExist(login))
            {
                NAPI.Util.ConsoleOutput("Account not found");
                return;
            }
            NAPI.Util.ConsoleOutput(mysql.IsValidPassword(login, password).ToString());
            if (!mysql.IsValidPassword(login, password))
            {
                NAPI.Util.ConsoleOutput("Invalid password");
                return;
            }

            Accounts account = new Accounts(login, player);
            account.Login(player, login, password, false);
            NAPI.ClientEvent.TriggerClientEvent(player, "closeLoginWindow");
            NAPI.ClientEvent.TriggerClientEvent(player, "freeze", false);        
        }

IsValidPassword:
C#:
public static bool IsValidPassword(string name, string inputPassword)
        {
            string temppass = "";
            MySqlCommand command = connection.CreateCommand();

            command.CommandText = "SELECT password FROM accounts WHERE name = @name LIMIT 1";
            command.Parameters.AddWithValue("@name", name);

            using (MySqlDataReader reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    reader.Read();
                    temppass = reader.GetString("password");
                }
            }
            bool isValid = BCrypt.CheckPassword(inputPassword, temppass);

            if (isValid) return true;
            else return false;
        }

Console:
1654464089417.png
 

xDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,120
1,351
191
27
Здравствуйте. Пишу код для входу в аккаунт и столкнулся с проблемой - ввожу правильный пароль не пускает, ввожу не правильный пароль тоже не пускает. Не знаю где проблема. Буду очень благодарен, если кто-то сможет помочь.

RemoteEvent:
C#:
[RemoteEvent("authOnLogin")]
        private void authOnLogin(Player player, string login, string password)
        {
            if (!mysql.IsAccountExist(login))
            {
                NAPI.Util.ConsoleOutput("Account not found");
                return;
            }
            NAPI.Util.ConsoleOutput(mysql.IsValidPassword(login, password).ToString());
            if (!mysql.IsValidPassword(login, password))
            {
                NAPI.Util.ConsoleOutput("Invalid password");
                return;
            }

            Accounts account = new Accounts(login, player);
            account.Login(player, login, password, false);
            NAPI.ClientEvent.TriggerClientEvent(player, "closeLoginWindow");
            NAPI.ClientEvent.TriggerClientEvent(player, "freeze", false);       
        }

IsValidPassword:
C#:
public static bool IsValidPassword(string name, string inputPassword)
        {
            string temppass = "";
            MySqlCommand command = connection.CreateCommand();

            command.CommandText = "SELECT password FROM accounts WHERE name = @name LIMIT 1";
            command.Parameters.AddWithValue("@name", name);

            using (MySqlDataReader reader = command.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    reader.Read();
                    temppass = reader.GetString("password");
                }
            }
            bool isValid = BCrypt.CheckPassword(inputPassword, temppass);

            if (isValid) return true;
            else return false;
        }

Console:
Посмотреть вложение 4319
А что за метод у BCrypt, который называется CheckPassword?
Я, например, пользовался методом Verify
C#:
public static bool Verify(string text, string hash, bool enhancedEntropy = false, HashType hashType = HashType.SHA384);

Пример:
C#:
if(!BCrypt.Net.BCrypt.Verify("то, что ввёл игрок", "то, что записано в аккаунте")) return;

При этом хэширование пароля происходит с помощью этого метода:
C#:
BCrypt.Net.BCrypt.HashPassword("исходный пароль"); // вернёт Hash, который можно проверять через Verify