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

Вопрос Как работать с CEF в ragemp 1.1 на C#?

LANAK

Новый участник
8 Окт 2021
23
0
39
Здравствуйте, я ознакамливаюсь с разработкой сервера на C#, запустил всё работает, но хочу подключить веб, но не могу найти информации как это сделать под C# в ragemp 1.1
Подскажите пожалуйста, как это делается.
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
759
276
128
Я так понимаю нужна библиотека rage-sharp.dll, но я не могу её найти, в папке с ragemp его нет, как и в самом server-files.
1650804966100.png
 
Реакции: XDeveluxe и LANAK

LANAK

Новый участник
8 Окт 2021
23
0
39
Выдает ошибку: Object reference not set to an instance of an object.

C#:
RAGE.Ui.HtmlWindow CEF;

        public void createBrowser(bool toggle, string way)
        {
            CEF = new RAGE.Ui.HtmlWindow(way); // Creating of browser ( way = "package://cs_packages/test.html" )
            CEF.Active = toggle;
        }

        public void urlBrowser(string url)
        {
            CEF.Url = url; // Changing url of browser
        }

        [Command("test", "Открываем браузер")]
        private void Test(Player player)
        {
            createBrowser(true, "package://cs_packages/test.html");
        }

Вопрос, какая должна быть иерархия у сервера, чтобы это работало?

Мод у меня компилируется в папку C:\RAGEMP\server-files\dotnet\resources\testmode
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
759
276
128
Выдает ошибку: Object reference not set to an instance of an object.
C#:
RAGE.Ui.HtmlWindow CEF;

        public void createBrowser(bool toggle, string way)
        {
            CEF = new RAGE.Ui.HtmlWindow(way); // Creating of browser ( way = "package://cs_packages/test.html" )
            CEF.Active = toggle;
        }

        public void urlBrowser(string url)
        {
            CEF.Url = url; // Changing url of browser
        }

        [Command("test", "Открываем браузер")]
        private void Test(Player player)
        {
            createBrowser(true, "package://cs_packages/test.html");
        }

Вопрос, какая должна быть иерархия у сервера, чтобы это работало?

Мод у меня компилируется в папку C:\RAGEMP\server-files\dotnet\resources\testmode
RAGE.Ui.HtmlWindow выполняется на клиенте
 
Реакции: LANAK

LANAK

Новый участник
8 Окт 2021
23
0
39
А как правильно разделить клиент и сервер, чтобы это работало?
И возможно ли подключить например тот же React, когда сервер использует C#?
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
759
276
128
А как правильно разделить клиент и сервер, чтобы это работало?
И возможно ли подключить например тот же React, когда сервер использует C#?
Клиент и сервер разрабатывается отдельно друг от друга, сервер может быть на c# а клиент на жс, и на оборот, или и то и то на одном языке, rage-sharpN.dll это библиотека c# для клиента, клиентские .cs файлы закидуются на клиент как и жс, почитай доку
 

LANAK

Новый участник
8 Окт 2021
23
0
39
А можно пример пожалуйста, как например обратиться от сервера к клиенту, например через команду написать на клиенте сообщение в чат или открыть браузер.
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
759
276
128
А можно пример пожалуйста, как например обратиться от сервера к клиенту, например через команду написать на клиенте сообщение в чат или открыть браузер.
Если чат стандартный то самый простой способ отправить сообщение через команду это на сервере подписаться на событие команд
C#:
        [GTANetworkAPI.Command("msg")]
        public void cmd_msg(GTANetworkAPI.Player player, string msg)
        {
            player.SendChatMessage(msg);
        }
Но что бы открыть браузер или выполнить какую то другую команду сервера на клиенте тебе нужны ивенты вот как они создаются на клиенте, а вызываются из сервера через TriggerEvent
C#:
[GTANetworkAPI.Command("msg")]
        public void cmd_msg(GTANetworkAPI.Player player, string msg)
        {
            player.TriggerEvent("youEventName", "param1", 777, 0.2);
        }
 
Реакции: LANAK

LANAK

Новый участник
8 Окт 2021
23
0
39
Я сделал страницу тестовую, сделал отображение курсора, но курсор не взаимодействует с элементами, делал тестовый drag & drop.
Но со стандартными элементами input, кнопками, полем для ввода работает, в чем проблема и как это исправить?
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
759
276
128
Я сделал страницу тестовую, сделал отображение курсора, но курсор не взаимодействует с элементами, делал тестовый drag & drop.
Но со стандартными элементами input, кнопками, полем для ввода работает, в чем проблема и как это исправить?
Без поняти, слышал там какие то проблемы есть с drag & drop но это не точно. Я браузером вообще не пользуюсь
 

LANAK

Новый участник
8 Окт 2021
23
0
39
Можно ещё пример отправки данных с CEF на клиент с параметрами, как отправлять я вроде понимаю, а вот как на клиентской стороне C# принимать, пока не ясно, есть догадки, но хотелось бы увидеть как правильно.
 

DaVilka

Старожил
BackEnd developer
16 Сен 2020
759
276
128
Просто тригер создаешь на клиенте через RAGE.Events.Add и с cef вызываешь его через mp.trigger
C#:
RAGE.Events.Add("myCefTrigger", cefTrigger);

C#:
        private void cefTrigger(object[] args)
        {
            int arg1 = (int)args[0];
            string arg2 = (string)args[1];
            float arg3 = (float)args[2];
            bool arg4 = (bool)args[3];
            
        }
JavaScript:
mp.trigger('myCefTrigger', 777, "Hello World", 0.5, false);
 
Реакции: SLAYER и LANAK