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

Вопрос Передача события

nazikshow.

Новый участник
18 Янв 2025
6
2
8
ребят всем привет, только начал разрабатывать сервер на C#, и я бы хотел в цефе вызвать событие через c#, например вывести текст ошибки, как я могу это сделать?
если быть короче - как передать событие с c# -> js
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,255
233
5
Привет! Для передачи события с C# на JS в цепочке веб-разработки можно воспользоваться технологией SignalR. SignalR позволяет организовать двустороннюю связь между сервером C# и клиентским JavaScript. Таким образом, вы сможете вызывать события на сервере и обрабатывать их на клиентской стороне. Более подробную информацию по работе с SignalR вы можете найти в документации Microsoft.
 

MADARAdev

Старожил
media
FrontEnd developer
30 Дек 2020
734
280
141
28
ребят всем привет, только начал разрабатывать сервер на C#, и я бы хотел в цефе вызвать событие через c#, например вывести текст ошибки, как я могу это сделать?
если быть короче - как передать событие с c# -> js
Привет! Чтобы нативно вызвать эвент сервера на cef стороне, тебе нужно создать клиентский эвент

Т.е. по цепочке cef -> client -> server

Чтобы вызвать эвент клиента на cef:



Если используешь библиотеку rage-rpc, можно напрямую вызвать серверный эвент в cef

Чтобы вызывать эвент сервера на cef (rage-rpc):

rpc.callServer("EventName")
 
Реакции: Harland David Sanders

nazikshow.

Новый участник
18 Янв 2025
6
2
8
Привет! Чтобы нативно вызвать эвент сервера на cef стороне, тебе нужно создать клиентский эвент

Т.е. по цепочке cef -> client -> server

Чтобы вызвать эвент клиента на cef:




Если используешь библиотеку rage-rpc, можно напрямую вызвать серверный эвент в cef
а если я хочу воспользоваться функцией ExecuteJs, как мне написать запрос чтобы он вызывал метод? вот как написано у меня сейчас
C#:
openedWindow.ExecuteJs("document.dispatchEvent(new Event('enableRegisterButton'))");

openedWindow.ExecuteJs("document.dispatchEvent(new CustomEvent('set_error_text', { detail: 'Такой аккаунт уже существует.' }))");
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
а если я хочу воспользоваться функцией ExecuteJs, как мне написать запрос чтобы он вызывал метод? вот как написано у меня сейчас
C#:
openedWindow.ExecuteJs("document.dispatchEvent(new Event('enableRegisterButton'))");

openedWindow.ExecuteJs("document.dispatchEvent(new CustomEvent('set_error_text', { detail: 'Такой аккаунт уже существует.' }))");
Во-первых, я так понимаю у тебя C# клиент.
ExecuteJs вызывает конкретный код, как если бы ты его просто вписал в консоль браузера, типа ExecuteJs("console.log(bla bla bla);");

Для вызова RAGEMP Event'ов нужно использовать openedWindow.Call("названиеИвента", аргументы);
Важное уточнение, что это вызывает только те ивенты, которые зарегистрированы в CEF'е как window.mp.events.add("названиеИвента", обработчик);
 
Реакции: MADARAdev

MADARAdev

Старожил
media
FrontEnd developer
30 Дек 2020
734
280
141
28
а если я хочу воспользоваться функцией ExecuteJs, как мне написать запрос чтобы он вызывал метод? вот как написано у меня сейчас
C#:
openedWindow.ExecuteJs("document.dispatchEvent(new Event('enableRegisterButton'))");

openedWindow.ExecuteJs("document.dispatchEvent(new CustomEvent('set_error_text', { detail: 'Такой аккаунт уже существует.' }))");
Судя по коду я так понимаю что ты хочешь еще наоборот, с сервера триггерить какие либо cef events.

Для этого ты по той же схеме должен создать event на клиенте и в cef, далее вызвать на сервере клиентский events ,
и на клиенте вызывать cef событие

На клиентской стороне события cef вызываются вот так:
mp.events.call("EventName")
 

nazikshow.

Новый участник
18 Янв 2025
6
2
8
извините, может чего не понимаю, но вот мой код js
C#:
mounted() {
            document.addEventListener("set_error_text", (event) => {
                this.error.text = event.detail; // Устанавливаем текст ошибки из C#
              });
            document.addEventListener("enableAuthButton", this.enableAuthButton);
            document.addEventListener("enableRegisterButton", this.enableRegisterButton);

        },
        beforeUnmount() {
          // Удаляем обработчик при уничтожении компонента
          document.removeEventListener("set_error_text", (event) => {
            this.error.text = event.detail;
          });
          document.removeEventListener("enableAuthButton", this.enableAuthButton);
          document.removeEventListener("enableRegisterButton", this.enableAuthButton);
        },
methods: {
enableAuthButton() {
                const button = document.querySelector('.js-btn-auth');
                if (button) button.disabled = false;
            },
            enableRegisterButton() {
                const button = document.querySelector('.btn.purple');
                if (button) button.disabled = false;
            },
}
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
извините, может чего не понимаю, но вот мой код js
C#:
            document.addEventListener("set_error_text", (event)
Это не RAGEMP event. Чтобы добавить RAGEMP event нужно использовать
JavaScript:
window.mp.events.add("set_error_text", (text) =>
{
    // Делаешь что хочешь с текстом, который ты получил
});
 
Реакции: MADARAdev и nazikshow.

MADARAdev

Старожил
media
FrontEnd developer
30 Дек 2020
734
280
141
28
извините, может чего не понимаю, но вот мой код js
C#:
mounted() {
            document.addEventListener("set_error_text", (event) => {
                this.error.text = event.detail; // Устанавливаем текст ошибки из C#
              });
            document.addEventListener("enableAuthButton", this.enableAuthButton);
            document.addEventListener("enableRegisterButton", this.enableRegisterButton);

}
Не используй document.addEventListener для связи Rage MP API

Создаешь события в cef так:

mp.events.add('"EventName", () => {
// Todo
})
 

nazikshow.

Новый участник
18 Янв 2025
6
2
8
Не используй document.addEventListener для связи Rage MP API

Создаешь события в cef так:
если я всё правильно понял, мне нужно написать так:
JavaScript:
mounted() {
        //
        if (window.mp && window.mp.events) {
            window.mp.events.add("set_error_text", (text) => {
                this.error.text = text;
                this.isProcessing = false; // Разблокируем кнопку после ошибки
            });
        }
просто я с ютуба переписываю
 

MADARAdev

Старожил
media
FrontEnd developer
30 Дек 2020
734
280
141
28
если я всё правильно понял, мне нужно написать так:
JavaScript:
mounted() {
        //
        if (window.mp && window.mp.events) {
            window.mp.events.add("set_error_text", (text) => {
                this.error.text = text;
                this.isProcessing = false; // Разблокируем кнопку после ошибки
            });
        }
просто я с ютуба переписываю
Да! Теперь верно