• Из-за обновления 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) последний раз были обновлены:

Проблема onClick | Выдаёт ошибку

Veles

Активный участник
Автор темы
15 Янв 2022
26
4
43
Прописал код по уроку с ютуба сервер работает на JS + CEF
Подключил CEF всё работает замечательно всё выводит,
но выдаёт ошибку при регистрации

Сюда же вкину вырезку кода

JavaScript:
function loginfunc()
{
    const login = document.getElementById('log-login').value;
    const pass = document.getElementById('log-pass').value;
    resetError();

    if(!login || login.length < 6){
        return showError('Введите Логин');
    }

    if(!pass || pass.length < 8){
        return showError('Введите пароль');
    }

    mp.trigger('onRegister', JSON.stringify({login, pass}))
}

function regfunc()
{
    const login = document.getElementById('reg-login').value;
    const pass = document.getElementById('reg-pass').value;
    const spass = document.getElementById('reg-spass').value;
    const mail = document.getElementById('reg-mail').value;

    resetError();

    if(!login || login.length < 6){
        return showError('Введите логин');
    }

    if(!pass || pass.length < 8){
        return showError('Введите пароль');
    }

    if(!spass || spass.length < 8){
        return showError('Повторите пароль');
    }

    if(!mail || mail.length < 8){
        return showError('Введите почтовый ящик');
    }

    if(!(spass === pass))
    {
        return showError('Пароли не совпадают');
    }
    
    console.log(JSON.stringify({mail, login, pass, spass}));

    mp.trigger('onRegister', JSON.stringify({mail, login, pass, spass}))
}

function resetError()
{
    const errorb = document.getElementById('error');
    errorb.innerText = '';
    errorb.style.display = 'none';
}

function resetError(message)
{
    const errorb = document.getElementById('error');
    errorb.innerText = 'Ошибка';
    errorb.style.display = 'block';
}


Подключение к Базе


JavaScript:
var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    database: '1'
});

connection.connect(function (err) {
    if(err) {
        console.err('Подключение к базе данных неудачное. Ошибка:' + err.stack);
        return;
    }
    console.log('Успешное подключение, номер подключения ' + connection.threadId);
});

mp.events.add('onPlayerRegister', (player, data) =>{
    data = JSON.parse(data);
    dbHandle.connect.query('SELECT `id` FROM `accounts` WHERE `name` = ? LIMIT 1', [data.login], function(error, results){
        if(results.length > 0) return player.call('showAuthError', ['Имя для данного аккаунта уже зарегестрировано'])
        dbHandle.connection.query('INSERT INTO `accounts` SET `name` = ?, `pass` = ?, `email` = ?', [data.login, data.pass, data.mail], function(error, results){
            player.call('hideRegLoginDialog');
            player.outputChatBox('Вы успешно зарегистрировали аккаунт, добро пожаловать на 1');
        })
    })
});

mp.events.add('serverShutdown', async () =>
{
    connection.end();
});

exports.connection = connection;

(Значения своей базы убрал)
 

Inoi

/dev/null
VIP
15 Окт 2020
2,372
1,413
208
34
не очень шарю в жаваскрипт, но вроде всё же написано в ошибке, разве нет?
ты для подключения используешь переменную dbHandle, которая нигде не определена

ну типа либо тогда уж
Код:
var dbHandle= mysql.createConnection({
и
dbHandle.connect(
и
dbHandle.query(' соответственно
либо
Код:
connection.query('

в твоём варианте правильный эвент мне кажется должен выглядеть так:

JavaScript:
mp.events.add('onPlayerRegister', (player, data) =>{
    data = JSON.parse(data);
    connection.query('SELECT `id` FROM `accounts` WHERE `name` = ? LIMIT 1', [data.login], function(error, results){
        if(results.length > 0) return player.call('showAuthError', ['Имя для данного аккаунта уже зарегестрировано'])
        connection.query('INSERT INTO `accounts` SET `name` = ?, `pass` = ?, `email` = ?', [data.login, data.pass, data.mail], function(error, results){
            player.call('hideRegLoginDialog');
            player.outputChatBox('Вы успешно зарегистрировали аккаунт, добро пожаловать на 1');
        })
    })
});

в первом блоке две функции resetError
 
Последнее редактирование:
  • Like
Реакции: FireFeed

Veles

Активный участник
Автор темы
15 Янв 2022
26
4
43
Забавно, он опять пишет что я прошёл регистрацию, но записи в БД нет
 

akudinov28

Гуру
24 Фев 2021
263
119
105
Забавно, он опять пишет что я прошёл регистрацию, но записи в БД нет
Судя по коду выше, в коллбеке инсерта в базу у тебя нет проверки на успешность этого инсерта. Поэтому, даже если там ошибка, у тебя все равно срабатывает player.call.
 

Veles

Активный участник
Автор темы
15 Янв 2022
26
4
43
Судя по коду выше, в коллбеке инсерта в базу у тебя нет проверки на успешность этого инсерта. Поэтому, даже если там ошибка, у тебя все равно срабатывает player.call.
И где эту проверку сделать? Просто вроде как я не дурак, но давно с кодами не работал
 

Anders_Nowin

Начинающий специалист
27 Ноя 2020
42
3
45
Функция resetError() определяется дважды, но с разными параметрами, это и приводит к ошибке при попытке вызова функции. Чтобы устранить эту проблему, можешь переименовать одну из функций так, чтобы у них были уникальные имена.
например:
JavaScript:
function resetErrorText()
{
    const errorb = document.getElementById('error');
    errorb.innerText = '';
    errorb.style.display = 'none';
}

function resetError()
{
    const errorb = document.getElementById('error');
    errorb.innerText = 'Ошибка';
    errorb.style.display = 'block';
}
 

Inoi

/dev/null
VIP
15 Окт 2020
2,372
1,413
208
34
И где эту проверку сделать? Просто вроде как я не дурак, но давно с кодами не работал
ну типа
Код:
connection.query('INSERT INTO `accounts` SET `name` = ?, `pass` = ?, `email` = ?', [data.login, data.pass, data.mail], function(error, results){
            if (error) {
                console.error('Error executing INSERT query:', error);
                return player.call('showAuthError', ['Произошла ошибка при выполнении запроса']);
            }
 

vpn

Начинающий специалист
29 Май 2022
129
64
65
Забавно, он опять пишет что я прошёл регистрацию, но записи в БД нет
Значит у тебя возникла ошибка, не зря же тут есть входящая переменная
JavaScript:
connection.query('blabla', [bla.bla], function(error!!!!,results){

Сделай console.log(error) этих запросов и у тебя получится решить данную проблему
 

Veles

Активный участник
Автор темы
15 Янв 2022
26
4
43
ну типа
Код:
connection.query('INSERT INTO `accounts` SET `name` = ?, `pass` = ?, `email` = ?', [data.login, data.pass, data.mail], function(error, results){
            if (error) {
                console.error('Error executing INSERT query:', error);
                return player.call('showAuthError', ['Произошла ошибка при выполнении запроса']);
            }
Код:
Error executing INSERT query: Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect integer value: '[email protected]' for column 'email' at row 1
    at Query.Sequence._packetToError (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
    at Query.ErrorPacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\sequences\Query.js:79:18)
    at Protocol._parsePacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\Connection.js:88:28)
    at Socket.<anonymous> (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\Connection.js:526:10)
    at Socket.emit (events.js:314:20)
    at addChunk (_stream_readable.js:307:12)
    --------------------
    at Protocol._enqueue (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Protocol.js:144:48)
    at Connection.query (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\Connection.js:198:25)
    at Query.<anonymous> (C:\Users\GAMING\Desktop\server-files\packages\mymode\dbconnect.js:22:20)
    at Query.<anonymous> (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\Connection.js:526:10)
    at Query._callback (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\Connection.js:488:16)
    at Query.Sequence.end (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\sequences\Sequence.js:83:24)
    at Query._handleFinalResultPacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\sequences\Query.js:149:8)
    at Query.EofPacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\sequences\Query.js:133:8)
    at Protocol._parsePacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (C:\Users\GAMING\Desktop\server-files\node_modules\mysql\lib\protocol\Parser.js:433:10) {
  code: 'ER_TRUNCATED_WRONG_VALUE_FOR_FIELD',
  errno: 1366,
  sqlMessage: "Incorrect integer value: '[email protected]' for column 'email' at row 1",
  sqlState: 'HY000',
  index: 0,
  sql: "INSERT INTO `accounts` SET `name` = 'adminchik', `pass` = 'adminadmin', `email` = '[email protected]'"
}

Я честно хуй знает так как подобную херню впервые увидел.
 

Veles

Активный участник
Автор темы
15 Янв 2022
26
4
43
Значит у тебя возникла ошибка, не зря же тут есть входящая переменная
JavaScript:
connection.query('blabla', [bla.bla], function(error!!!!,results){

Сделай console.log(error) этих запросов и у тебя получится решить данную проблему
Если бы я шарил куда эту херню вписать.

Или там нужно вкинуть console.log в connection.query.

Желательно показать на примере где она у тебя прописана
 

Inoi

/dev/null
VIP
15 Окт 2020
2,372
1,413
208
34