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

Проблема DB.Query is not defined

jrius

Участник портала
16 Авг 2024
4
0
16
  • Всем привет, я только начал свой путь в RAGE MP.
    Появилась проблема с вызовом функции DB.query в других модулях.

    1. Events.js (Где и находится само подключение)
  • JavaScript:
    let spawnPoints = require('./json-packet/spawn_points.json').SpawnPoints;
    
    mp.events.add('playerDeath', (player) => {
        player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length)]);
        player.health = 100;
    });
    
    
    mp.events.add('playerJoin', (player) => {
        
    
        player.call('showLoginDialog');
    });
    
    mp.events.add("playerQuit", (player) => {
        
    });
    
    
    const mysql = require('mysql');
    
    var DB = mysql.createConnection(
    {
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'main_server'
    });
    
    
    mp.events.add('packagesLoaded', () => {
    
       DB.connect(function(err){
           if(err) {
                console.error(`mysql connected failed.`);
                return;
           }
           console.log('mysql connected successfully.');
       });
    });
    
    
    
    mp.events.add('onRegisterAttempt', (player, data) => {
        data = JSON.parse(data);
    
        DB.query('SELECT id FROM `accounts` WHERE `social_id` = ?', [player.rgscId], function (error, results) {  // Проверяем уникальность логина
            if(results.length > 0) return player.call('showAuthError', ['Аккаунт с таким SocialID уже существует']); // Если такой логин уже есть, то возвращаем ошибку
    
            DB.query('INSERT INTO `accounts`(`social_id`, `login`, `password`) VALUES (?,?,?)', [player.rgscId, data.login, data.password], function (error, results) { // Добавляем аккаунт в базу данных
                
            });
    
            DB.query('SELECT `admin_lvl`, `cash` FROM `accounts` WHERE `social_id` = ?', [player.rgscId], function (error, results)
            {
                if(!results.length)
                {
                    player.kick(player);
                    return;
                }
    
                player.admin = results[0].admin_lvl;
                player.cash =  results[0].cash;
    
                player.call('hideLoginDialog');
                player.call('showPlayerHud', [player.cash, player.rgscId, player.id]);
            });
        
        });
    
    });
    
    
    
    mp.events.add('onLoginAttempt', (player, data) => {
        data = JSON.parse(data);
    
        DB.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function (error, results) {
            if(!results.length) return player.call('showAuthError', ['Введите правильный логин или пароль.']);
    
            if (results[0].password === data.password)
            {   
                player.admin = results[0].admin_lvl;
                player.cash =  results[0].cash;
    
                player.call('hideLoginDialog');
                player.call('showPlayerHud', [player.cash, player.rgscId, player.id]);
                return;
            }
            else player.call('showAuthError', ['Неверный Логин или Пароль']);
            
        });
    });

    папка с кмд (./command/index.js)


    JavaScript:
    const MAX_LVL_ADMIN = 5;
    
    mp.events.addCommand('makeadmin', (player, _, id, lvl) => {
        if (player.admin < MAX_LVL_ADMIN) return;
    
        if (id == undefined || lvl == undefined) return player.outputChatBox('/makeadmin [id] [lvl]'); 
        if (lvl < 0 || lvl > MAX_LVL_ADMIN) return player.outputChatBox('/makeadmin [id] [lvl]');
    
        let target = mp.players.at(id);
    
        if (target.id == player.id) return player.outputChatBox('/makeadmin [id] [lvl]'); 
    
        target.admin = lvl;
    
        if (lvl != 0)
        {   
            player.outputChatBox(`Вы успешно выдали админку игроку: ${target.name} (Выдан лвл: ${lvl})`);
            target.outputChatBox(`Вам выдали админ права: ${lvl} lvl (Выдал: ${player.name})`);
        }
        else
        {
            player.outputChatBox(`Вы успешно сняли администратор: ${target.name}`);
            target.outputChatBox(`Вы были сняты с поста администратора! Снял: ${player.name}`);
        }
        
        DB.query('UPDATE `accounts` SET `admin_lvl` = ? WHERE `social_id` = ?', [target.admin, target.rgscId]);
        return 1;
    });

    смотрел на данном форуме решение проблемы, но ничего не нашел, пытался создать отдельную функцию
    Код:
    function query(sql)
    {
        DB.query(`${sql}`);
    }

    но всё равно ничего не помогало, пакеты с mysql установлены, сервер полностью работает.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,758
1,302
5
It seems like the issue is that the DB object is not being recognized in the ./command/index.js file where you are attempting to use DB.query. One way to solve this would be to pass the DB object to the module where you have the command handling logic.

For example, you can modify your ./command/index.js file to accept the DB object as a parameter:

JavaScript:
module.exports = (DB) => {
    const MAX_LVL_ADMIN = 5;

    mp.events.addCommand('makeadmin', (player, _, id, lvl) => {
        if (player.admin < MAX_LVL_ADMIN) return;

        if (id == undefined || lvl == undefined) return player.outputChatBox('/makeadmin [id] [lvl]');
        if (lvl < 0 || lvl > MAX_LVL_ADMIN) return player.outputChatBox('/makeadmin [id] [lvl]');

        let target = mp.players.at(id);

        if (target.id == player.id) return player.outputChatBox('/makeadmin [id] [lvl]');

        target.admin = lvl;

        if (lvl != 0)
        {   
            player.outputChatBox(`Вы успешно выдали админку игроку: ${target.name} (Выдан лвл: ${lvl})`);
            target.outputChatBox(`Вам выдали админ права: ${lvl} lvl (Выдал: ${player.name})`);
        }
        else
        {
            player.outputChatBox(`Вы успешно сняли администратор: ${target.name}`);
            target.outputChatBox(`Вы были сняты с поста администратора! Снял: ${player.name}`);
        }

        DB.query('UPDATE `accounts` SET `admin_lvl` = ? WHERE `social_id` = ?', [target.admin, target.rgscId]);
        return 1;
    });
};

Then, in your Events.js file, where you're including the command handling logic, you can pass the DB object to the module:

JavaScript:
let spawnPoints = require('./json-packet/spawn_points.json').SpawnPoints;
const commandHandler = require('./command/index')(DB);

// Rest of your Events.js file

This way, the DB object will be accessible in the ./command/index.js file and you should be able to use DB.query within the command logic.
 

jrius

Участник портала
16 Авг 2024
4
0
16
Ошибка (дополняю) -
Screenshot_2.png
 

jrius

Участник портала
16 Авг 2024
4
0
16
It seems like the issue is that the DB object is not being recognized in the ./command/index.js file where you are attempting to use DB.query. One way to solve this would be to pass the DB object to the module where you have the command handling logic.

For example, you can modify your ./command/index.js file to accept the DB object as a parameter:

JavaScript:
module.exports = (DB) => {
    const MAX_LVL_ADMIN = 5;

    mp.events.addCommand('makeadmin', (player, _, id, lvl) => {
        if (player.admin < MAX_LVL_ADMIN) return;

        if (id == undefined || lvl == undefined) return player.outputChatBox('/makeadmin [id] [lvl]');
        if (lvl < 0 || lvl > MAX_LVL_ADMIN) return player.outputChatBox('/makeadmin [id] [lvl]');

        let target = mp.players.at(id);

        if (target.id == player.id) return player.outputChatBox('/makeadmin [id] [lvl]');

        target.admin = lvl;

        if (lvl != 0)
        {  
            player.outputChatBox(`Вы успешно выдали админку игроку: ${target.name} (Выдан лвл: ${lvl})`);
            target.outputChatBox(`Вам выдали админ права: ${lvl} lvl (Выдал: ${player.name})`);
        }
        else
        {
            player.outputChatBox(`Вы успешно сняли администратор: ${target.name}`);
            target.outputChatBox(`Вы были сняты с поста администратора! Снял: ${player.name}`);
        }

        DB.query('UPDATE `accounts` SET `admin_lvl` = ? WHERE `social_id` = ?', [target.admin, target.rgscId]);
        return 1;
    });
};

Then, in your Events.js file, where you're including the command handling logic, you can pass the DB object to the module:

JavaScript:
let spawnPoints = require('./json-packet/spawn_points.json').SpawnPoints;
const commandHandler = require('./command/index')(DB);

// Rest of your Events.js file

This way, the DB object will be accessible in the ./command/index.js file and you should be able to use DB.query within the command logic.
Screenshot_3.png



1. Events.js

Код:
let spawnPoints = require('./json-packet/spawn_points.json').SpawnPoints;
const commandHandler = require('../command/index.js')(DB);


mp.events.add('playerDeath', (player) => {
    player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length)]);
    player.health = 100;
});


mp.events.add('playerJoin', (player) => {
    

    player.call('showLoginDialog');
});

mp.events.add("playerQuit", (player) => {
    
});


const mysql = require('mysql');

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


mp.events.add('packagesLoaded', () => {

   DB.connect(function(err){
       if(err) {
            console.error(`mysql connected failed.`);
            return;
       }
       console.log('mysql connected successfully.');
   });
});



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

    DB.query('SELECT id FROM `accounts` WHERE `social_id` = ?', [player.rgscId], function (error, results) {  // Проверяем уникальность логина
        if(results.length > 0) return player.call('showAuthError', ['Аккаунт с таким SocialID уже существует']); // Если такой логин уже есть, то возвращаем ошибку

        DB.query('INSERT INTO `accounts`(`social_id`, `login`, `password`) VALUES (?,?,?)', [player.rgscId, data.login, data.password], function (error, results) { // Добавляем аккаунт в базу данных
            
        });

        DB.query('SELECT `admin_lvl`, `cash` FROM `accounts` WHERE `social_id` = ?', [player.rgscId], function (error, results)
        {
            if(!results.length)
            {
                player.kick(player);
                return;
            }

            player.admin = results[0].admin_lvl;
            player.cash =  results[0].cash;

            player.call('hideLoginDialog');
            player.call('showPlayerHud', [player.cash, player.rgscId, player.id]);
        });
    
    });

});



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

    DB.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function (error, results) {
        if(!results.length) return player.call('showAuthError', ['Введите правильный логин или пароль.']);

        if (results[0].password === data.password)
        {   
            player.admin = results[0].admin_lvl;
            player.cash =  results[0].cash;

            player.call('hideLoginDialog');
            player.call('showPlayerHud', [player.cash, player.rgscId, player.id]);
            return;
        }
        else player.call('showAuthError', ['Неверный Логин или Пароль']);
        
    });
});

2. command/index.js

Код:
mp.events.addCommand('veh', (player, _, id, veh, color1, color2) =>
{   
    if (player.admin < 2) return;

    if (id == undefined || veh == undefined) return player.outputChatBox('/veh [id] [model] [color1] [color2]');
    let target = mp.players.at(id);
    
    if (target == null) return player.notify('~ r~ID игрока не найден!');
    let pos = target.position;
    
    var adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));

    
    adminVeh.setNeonColor(255, 0, 0);
    adminVeh.neonEnable = true;

    adminVeh.setColor(parseInt(color1), parseInt(color2));
    target.putIntoVehicle(adminVeh, 0);
});

module.exports = (DB) => {
    const MAX_LVL_ADMIN = 5;

    mp.events.addCommand('makeadmin', (player, _, id, lvl) => {
        if (player.admin < MAX_LVL_ADMIN) return;

        if (id == undefined || lvl == undefined) return player.outputChatBox('/makeadmin [id] [lvl]');
        if (lvl < 0 || lvl > MAX_LVL_ADMIN) return player.outputChatBox('/makeadmin [id] [lvl]');

        let target = mp.players.at(id);

        if (target.id == player.id) return player.outputChatBox('/makeadmin [id] [lvl]');

        target.admin = lvl;

        if (lvl != 0)
        {   
            player.outputChatBox(`Вы успешно выдали админку игроку: ${target.name} (Выдан лвл: ${lvl})`);
            target.outputChatBox(`Вам выдали админ права: ${lvl} lvl (Выдал: ${player.name})`);
        }
        else
        {
            player.outputChatBox(`Вы успешно сняли администратор: ${target.name}`);
            target.outputChatBox(`Вы были сняты с поста администратора! Снял: ${player.name}`);
        }

        DB.query('UPDATE `accounts` SET `admin_lvl` = ? WHERE `social_id` = ?', [target.admin, target.rgscId]);
        return 1;
    });
};
 

jrius

Участник портала
16 Авг 2024
4
0
16
Пофиксил.

Исправленный код, кому нужен.

1. Events.js

Код:
let spawnPoints = require('./json-packet/spawn_points.json').SpawnPoints;



mp.events.add('playerDeath', (player) => {
    player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length)]);
    player.health = 100;
});


mp.events.add('playerJoin', (player) => {
    

    player.call('showLoginDialog');
});

mp.events.add("playerQuit", (player) => {
    
});


const mysql = require('mysql');

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


mp.events.add('packagesLoaded', () => {

   DB.connect(function(err){
       if(err) {
            console.error(`mysql connected failed.`);
            return;
       }
       console.log('mysql connected successfully.');
   });
});

require('../command/index.js')(DB);

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

    DB.query('SELECT id FROM `accounts` WHERE `social_id` = ?', [player.rgscId], function (error, results) {  // Проверяем уникальность логина
        if(results.length > 0) return player.call('showAuthError', ['Аккаунт с таким SocialID уже существует']); // Если такой логин уже есть, то возвращаем ошибку

        DB.query('INSERT INTO `accounts`(`social_id`, `login`, `password`) VALUES (?,?,?)', [player.rgscId, data.login, data.password], function (error, results) { // Добавляем аккаунт в базу данных
            
        });

        DB.query('SELECT `admin_lvl`, `cash` FROM `accounts` WHERE `social_id` = ?', [player.rgscId], function (error, results)
        {
            if(!results.length)
            {
                player.kick(player);
                return;
            }

            player.admin = results[0].admin_lvl;
            player.cash =  results[0].cash;

            player.call('hideLoginDialog');
            player.call('showPlayerHud', [player.cash, player.rgscId, player.id]);
        });
    
    });

});



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

    DB.query('SELECT * FROM accounts WHERE login = ? LIMIT 1', [data.login], function (error, results) {
        if(!results.length) return player.call('showAuthError', ['Введите правильный логин или пароль.']);

        if (results[0].password === data.password)
        {   
            player.admin = results[0].admin_lvl;
            player.cash =  results[0].cash;

            player.call('hideLoginDialog');
            player.call('showPlayerHud', [player.cash, player.rgscId, player.id]);
            return;
        }
        else player.call('showAuthError', ['Неверный Логин или Пароль']);
        
    });
});

2. commans/index.js

Код:
mp.events.addCommand('veh', (player, _, id, veh, color1, color2) =>
{   
    if (player.admin < 2) return;

    if (id == undefined || veh == undefined) return player.outputChatBox('/veh [id] [model] [color1] [color2]');
    let target = mp.players.at(id);
    
    if (target == null) return player.notify('~ r~ID игрока не найден!');
    let pos = target.position;
    
    var adminVeh = mp.vehicles.new(mp.joaat(veh), new mp.Vector3(pos.x + 2, pos.y, pos.z));

    
    adminVeh.setNeonColor(255, 0, 0);
    adminVeh.neonEnable = true;

    adminVeh.setColor(parseInt(color1), parseInt(color2));
    target.putIntoVehicle(adminVeh, 0);
});

module.exports = (DB) => {
    const MAX_LVL_ADMIN = 5;

    mp.events.addCommand('makeadmin', (player, _, id, lvl) => {
        if (player.admin < MAX_LVL_ADMIN) return;

        if (id == undefined || lvl == undefined) return player.outputChatBox('/makeadmin [id] [lvl]');
        if (lvl < 0 || lvl > MAX_LVL_ADMIN) return player.outputChatBox('/makeadmin [id] [lvl]');

        let target = mp.players.at(id);

        if (target.id == player.id) return player.outputChatBox('/makeadmin [id] [lvl]');

        target.admin = lvl;

        if (lvl != 0)
        {   
            player.outputChatBox(`Вы успешно выдали админку игроку: ${target.name} (Выдан лвл: ${lvl})`);
            target.outputChatBox(`Вам выдали админ права: ${lvl} lvl (Выдал: ${player.name})`);
        }
        else
        {
            player.outputChatBox(`Вы успешно сняли администратор: ${target.name}`);
            target.outputChatBox(`Вы были сняты с поста администратора! Снял: ${player.name}`);
        }

        DB.query('UPDATE `accounts` SET `admin_lvl` = ? WHERE `social_id` = ?', [target.admin, target.rgscId]);
        return 1;
    });
};