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

    Ошибка: Ваша версия Grand Theft Auto V не поддерживается 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/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


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

проблема с mysql

Stepan

Новый участник
12 Фев 2023
45
2
20
Screenshot_1.png
Screenshot_12.png
Screenshot_2.png

что делать если пишет db query is not a function
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,791
1,593
211
28
Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?

1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
Можешь на гит залить и дать юрл?
 

Stepan

Новый участник
12 Фев 2023
45
2
20

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?

1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
У него файл называется mysql.js, .. это относительный путь текущей директории.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,791
1,593
211
28
У него файл называется mysql.js, .. это относительный путь текущей директории.
Ну, я не уверен, что используются две точки.
Если ты знаешь - я не против, просто поинтересовался.
 

Stepan

Новый участник
12 Фев 2023
45
2
20
Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?

1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
две точки типо выход из папки(там это regauth)и поиск в предыдушем катологе(короче по packages)
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
могу на яндекс или гугл диск
ок
Посмотреть вложение 7999
Я в JS слабо разбираюсь, но разве так можно подключать файл?

1. Сам mysq.js должен что-то export'ить, чтобы DB принял это значение/переменную/класс и т.д.
2. Почему две точки?
И да, так можно импортировать, таким образом ты импортируешь все что есть в файле объектом и можешь обращаться к экспортируемым функциям/переменным и т.д. через точку
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,791
1,593
211
28
npm install mysql
Библиотека находится в папке node_modules, которая в свою очередь находится на одном уровне с packages.json
А мы точно уверены, что у него установлена она?
Я вот к этому и веду.
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
Реакции: XDeveluxe

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,791
1,593
211
28

kwert887

Активный участник
26 Фев 2021
253
42
85
Попробуй этот код
JavaScript:
const DB = require('../mysql.js');
const bcrypt = require('bcrypt');

mp.events.add('playerJoin', (player) => {
    player.call('showLoginDialog');
});

mp.events.add('onLoginAttempt', (player, data) => {
    data = JSON.parse(data); // преобразовуем данные из json в объект
    DB.getConnection(function(err, connection) { // получаем соединение с базой данных
        if (err) throw err;
        connection.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function(error, results) { // ищем аккаунт по логину
            connection.release(); // освобождаем соединение с базой данных
            if (error) throw error;
            if (results.length == 0) return player.call('showAuthError', ['Неверный Логин и/или Пароль']); // если аккаунт с таким логином не найден, то возвращаем на клиент текст ошибки

            const passwordHash = results[0].password; // если же аккаунт есть, то берем его хеш пароля
            bcrypt.compare(data.password, passwordHash, function(err, isMatched) { // сравниваем хэши паролей из базы данных и того что указал пользователь
                if (err) throw err;
                if (isMatched) return player.call('hideLoginDialog'); // если пароли не совпадают, значит пользователь авторизовался успешно
                player.call('showAuthError', ['Неверный Логин и/или Пароль']); // если же пароли не совпали, то опять таки возвращаем на клиент текст ошибки при помощи события showAuthError
            });
        });
    });
});

mp.events.add('onRegisterAttempt', (player, data) => {
    data = JSON.parse(data);

    DB.getConnection(function(err, connection) { // получаем соединение с базой данных
        if (err) throw err;
        connection.query('SELECT id FROM accounts WHERE login = ?', [data.login], function(error, results) { // Проверяем уникальность логина
            if (error) throw error;
            if (results.length > 0) {
                connection.release(); // освобождаем соединение с базой данных
                return player.call('showAuthError', ['Аккаунт с таким Логином уже существует']); // Если такой логин уже есть, то возвращаем ошибку
            }

            bcrypt.hash(data.password, saltRounds, function(err, passwordHash) { // Создаем хэш пароля
                if (err) throw err;
                connection.query('INSERT INTO accounts SET login = ?, password = ?', [data.login, passwordHash], function(error, results) { // Добавляем аккаунт в базу данных
                    connection.release(); // освобождаем соединение с базой данных
                    if (error) throw error;
                    player.call('hideLoginDialog'); // Скрываем окно авторизации
                });
            });
        });
    });
});
 

Stepan

Новый участник
12 Фев 2023
45
2
20
Попробуй этот код
JavaScript:
const DB = require('../mysql.js');
const bcrypt = require('bcrypt');

mp.events.add('playerJoin', (player) => {
    player.call('showLoginDialog');
});

mp.events.add('onLoginAttempt', (player, data) => {
    data = JSON.parse(data); // преобразовуем данные из json в объект
    DB.getConnection(function(err, connection) { // получаем соединение с базой данных
        if (err) throw err;
        connection.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function(error, results) { // ищем аккаунт по логину
            connection.release(); // освобождаем соединение с базой данных
            if (error) throw error;
            if (results.length == 0) return player.call('showAuthError', ['Неверный Логин и/или Пароль']); // если аккаунт с таким логином не найден, то возвращаем на клиент текст ошибки

            const passwordHash = results[0].password; // если же аккаунт есть, то берем его хеш пароля
            bcrypt.compare(data.password, passwordHash, function(err, isMatched) { // сравниваем хэши паролей из базы данных и того что указал пользователь
                if (err) throw err;
                if (isMatched) return player.call('hideLoginDialog'); // если пароли не совпадают, значит пользователь авторизовался успешно
                player.call('showAuthError', ['Неверный Логин и/или Пароль']); // если же пароли не совпали, то опять таки возвращаем на клиент текст ошибки при помощи события showAuthError
            });
        });
    });
});

mp.events.add('onRegisterAttempt', (player, data) => {
    data = JSON.parse(data);

    DB.getConnection(function(err, connection) { // получаем соединение с базой данных
        if (err) throw err;
        connection.query('SELECT id FROM accounts WHERE login = ?', [data.login], function(error, results) { // Проверяем уникальность логина
            if (error) throw error;
            if (results.length > 0) {
                connection.release(); // освобождаем соединение с базой данных
                return player.call('showAuthError', ['Аккаунт с таким Логином уже существует']); // Если такой логин уже есть, то возвращаем ошибку
            }

            bcrypt.hash(data.password, saltRounds, function(err, passwordHash) { // Создаем хэш пароля
                if (err) throw err;
                connection.query('INSERT INTO accounts SET login = ?, password = ?', [data.login, passwordHash], function(error, results) { // Добавляем аккаунт в базу данных
                    connection.release(); // освобождаем соединение с базой данных
                    if (error) throw error;
                    player.call('hideLoginDialog'); // Скрываем окно авторизации
                });
            });
        });
    });
});
выводит db get connection is not a function,а еще ошибка не надолго пропала,но в бд не добавлялась данные реги. Щас такая ошибка
 

MoonFusion

Старожил
BackEnd developer
14 Июн 2021
366
219
143
1684597861002.png

Все куда проще.


npm remove mysql
npm install mysql2
 
  • RoflanEbalo
Реакции: XDeveluxe и Inoi