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

Проблема Дублирование строк после каждого выполнения

dereksjq

Участник портала
17 Июн 2023
64
10
20
Написал команду создания авто со взятием названия из базы данных, все вроде-бы хорошо, но после каждого спавна дублируются строки с названием авто.
image.png

Код:
mp.events.addCommand("veh", (player, args) => {
    if (args == null) {
        player.outputChatBox("/veh [Название Авто]");
    }
    var pos = player.position;
    pos.x += 5.0
    player.veh = mp.vehicles.new(args, pos);
    player.veh.dimension = player.dimension;
    player.putIntoVehicle(player.veh, 0);
    mp.events.call("getCarNameFromSQL", args);

    mp.events.add("getCarName", (carFullName) => {
        return player.outputChatBox("Вы заспавнили автомобиль: " + carFullName); });

});
Код:
mp.events.add("getCarNameFromSQL", (carName) => {
    connection.query(`SELECT * FROM cars WHERE carName = '${carName}' LIMIT 1`, function (error, results) {
        if (error) {
            return console.log("Error: " + error);
        } else {
            console.log(results);
            return mp.events.call("getCarName", results[0].fullName);
        }
    });
});

24-09-2023_164846.jpg
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
3,121
1,836
211
28
Всё дело в том, что ты создаёшь новый event каждый раз при использовании команды.
Соответственно, при первом вводе команды - у тебя будет 1 такой ивент, при втором вводе - уже два, и так далее.
Тебе нужно создать всего лишь 1 такой ивент, в дальнейшем ты можешь использовать его сколько угодно раз.

Нужно сделать вот так:

JavaScript:
mp.events.add("getCarName", (player, carFullName) =>
{
    if (!player) return;
   
    player.outputChatBox("Вы заспавнили автомобиль: " + carFullName);
});

mp.events.addCommand("veh", (player, args) =>
{
    if (args == null)
    {
        player.outputChatBox("/veh [Название Авто]");
        return;
    }
    var pos = player.position;
    pos.x += 5.0
    player.veh = mp.vehicles.new(args, pos);
    player.veh.dimension = player.dimension;
    player.putIntoVehicle(player.veh, 0);
    mp.events.call("getCarNameFromSQL", player, args);
});

Я не вижу смысла в данном варианте просто потому, что event не делает ничего полезного, он получает переменную и её же выводит. Если ты собираешься в будущем доделать это - ОК, но если нет - смысла с такого event'а никакого, просто впиши метод отправки сообщения (player.outputChatBox) в тот же метод команды "veh".
 
Реакции: dereksjq и kirillzver

dereksjq

Участник портала
17 Июн 2023
64
10
20
Да, спасибо вам двоим - я изначально думал, что отдельно ивент без аргумента player не сможет вывести сообщение в чат. Спасибо за помощь.
 
Реакции: kirillzver и XDeveluxe

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
3,121
1,836
211
28
Да, спасибо вам двоим - я изначально думал, что отдельно ивент без аргумента player не сможет вывести сообщение в чат. Спасибо за помощь.
А ты всё верно думал.
Я недоглядел.
Конечно же нужно передать player ещё раз аргументом.
Вот так:
JavaScript:
mp.events.add("getCarName", (player, carFullName) =>
{
    if (!player) return;
   
    player.outputChatBox("Вы заспавнили автомобиль: " + carFullName);
});
Ну и соответственно использовать вот так:
JavaScript:
mp.events.call("getCarNameFromSQL", player, args);
 
Реакции: dereksjq

Similar threads