• Из-за обновления 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
У меня имеется CEF-интерфейс регистрации, которые отображается на "ура" ( в положительном смысле ).
В этом ЦЕФ-интерфейсе имеется кнопка, при нажатии на которую срабатывает функция из подключенного .js файла.
Если же убрать mp.events.callRemote из функции на клиентской части и заменить на alert(), то все хорошо - а с вызовом серверной части не работает ничего.
Серверную часть проллогировал - выводов никаких нет.

HTML:
                        <a onclick="ButtonClicked();" class="buttonClass">
                            <img src="./assests/button.svg" alt="buttonAuth" id="buttonAuth" draggable="false">
                        </a>

JavaScript:
let login;
let password;

function ButtonClicked() {
    let login = document.getElementById("loginInput").value
    let password = document.getElementById("passwordInput").value

    if (!login || !password) {
        return;
    }
    // mp.invoke('focus', false)
    // document.getElementsByTagName('body')[0].style.display = 'none';
    mp.events.callRemote("getUserData", login, password, document.getElementsByTagName('body')[0], mp)
}

JavaScript:
mp.events.add("getUserData", (login, password, document, mp) => {
    console.log(login, password, document, mp)
    mysql.GetData("accounts", "Nick", login, function (hasLogin) {
        if (!hasLogin) {
            console.log(`${login} hasn't in base!`)
            return;
        } else {
            mysql.GetData("accounts", "Password", password, function (hasPassword) {
                if (!hasPassword) {
                    console.log(`${password} hasn't in base!`)
                    mp.players.local.kick()
                    return;
                } else {
                    mp.invoke('focus', false)
                    document.style.display = 'none';
                }
            })
        }
    })
})

Дополню от себя, что функция mysql.GetData работает хорошо, ее переписывать не надо.
JavaScript:
module.exports = {
    GetData: function(table, column, value, callback) {
        connection.query(`SELECT * FROM ${table} WHERE ${column} = '${value}'`, function (error, results) {
            if (error) {
                console.log("[GetData] ERROR | " + error);
                return;
            }
            callback(results[0]);
        })
    },

    InsertData: function (table, variables, value, callback) {
        const query = `INSERT INTO ${table} (${variables}) VALUES (${value})`;
        connection.query(query, function (errors) {
            if (error) {
                console.log("[InsertData] ERROR | " + errors);
                return;
            }
            callback(errors);
        })
    },
[CENTER]};
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
3,002
1,736
211
28
На CEF части нет вызова Server-Side.

CEF может вызывать только Client-Side (mp.trigger), для этого на нём должен быть создан event (mp.events.add), а с Client-Side уже можно вызвать Server-Side (mp.events.callRemote)
 
Реакции: Inoi и DeAAmoN

dereksjq

Участник портала
17 Июн 2023
64
10
20
Все-равно не совсем понимаю, но вроде-бы должно сработать?
JavaScript:
    function ButtonClicked() {
        let login = document.getElementById("loginInput").value
        let password = document.getElementById("passwordInput").value

        if (!login || !password) {
            return;
        }
        // mp.invoke('focus', false)
        // document.getElementsByTagName('body')[0].style.display = 'none';
        //mp.events.callRemote("getUserData", login, password, document.getElementsByTagName('body')[0], mp)
        mp.trigger("getUserData", login, password, document.getElementsByTagName('body')[0], mp)
    }

Сразу извиняюсь за мою тупость - я недавно в разработке Rage MP, изучаю все на практике.
Логгирование так же не срабатывает, если вызывать по mp.trigger
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
3,002
1,736
211
28
Все-равно не совсем понимаю, но вроде-бы должно сработать?
JavaScript:
    function ButtonClicked() {
        let login = document.getElementById("loginInput").value
        let password = document.getElementById("passwordInput").value

        if (!login || !password) {
            return;
        }
        // mp.invoke('focus', false)
        // document.getElementsByTagName('body')[0].style.display = 'none';
        //mp.events.callRemote("getUserData", login, password, document.getElementsByTagName('body')[0], mp)
        mp.trigger("getUserData", login, password, document.getElementsByTagName('body')[0], mp)
    }

Сразу извиняюсь за мою тупость - я недавно в разработке Rage MP, изучаю все на практике.
Логгирование так же не срабатывает, если вызывать по mp.trigger
На клиенте у тебя должен быть вот такой ивент:
JavaScript:
mp.events.add("getUserData", login, password, data, mp)
{
    mp.events.callRemote("getUserData", login, password, data, mp)
}

Правда, что у тебя в document.getElementsByTagName('body')[0] и mp - я не знаю.
 
Реакции: dereksjq

dereksjq

Участник портала
17 Июн 2023
64
10
20
А есть какой то способ вызвать ивент из packages в client_resources? Возможно плохо искал в браузере, но только callRemote? Но он на моей практике только между client resources и работал.
Обычный - call не срабатывает.
mp.trigger? Ну он тоже сработал у меня на практике только, когда ивент в client resources
 

youngBeaver

Покинул форум.
BackEnd developer
24 Янв 2023
1,202
469
171
А есть какой то способ вызвать ивент из packages в client_resources? Возможно плохо искал в браузере, но только callRemote? Но он на моей практике только между client resources и работал.
Обычный - call не срабатывает.
mp.trigger? Ну он тоже сработал у меня на практике только, когда ивент в client resources
player.call - из серверной части на клиентскую. Ивента в самом рейдже для вызова с сервера на цеф не существует.
Либо ты самостоятельно создашь обработчик события, либо rage-rpc в помощь
 

dereksjq

Участник портала
17 Июн 2023
64
10
20
player.call - из серверной части на клиентскую. Ивента в самом рейдже для вызова с сервера на цеф не существует.
Либо ты самостоятельно создашь обработчик события, либо rage-rpc в помощь
Да, rage-rcp это то, что мне нужно. Спасибо, буду изучать.
 
Реакции: youngBeaver

m0v1l3

Начинающий специалист
29 Сен 2020
529
67
95
С Rage-Rpc на C# можно ли работать? Просто знаю что на клиентсайде можно, а вот на серверсайде с js или c# - не знаю
 

youngBeaver

Покинул форум.
BackEnd developer
24 Янв 2023
1,202
469
171
С Rage-Rpc на C# можно ли работать? Просто знаю что на клиентсайде можно, а вот на серверсайде с js или c# - не знаю
Я немного знаю C# и на сколько я помню там есть библиотека javascriptdotnet, которая позволит выполнить js в среде .net. Но более опытные на этом языке разработчики смогут сказать больше.
 

Similar threads