• Из-за обновления 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

Статус
В этой теме нельзя размещать новые ответы.

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Приветствую всех, интересен вопрос как отправлять информацию из сервера которая уже имеет формат JSON,
Как я понимаю идёт что то типо такого
Server => Client => CEF
Или я что то путаю? вот допустим я сделал такую хрень

Как правильно мне обновить информацию на CEFE



Server
C#:
var playerData = new PlayerData
            {
                playerName = "Player1",
                playerScore = 100
            };
            // Сериализуем объект в JSON строку
            string jsonData = JsonSerializer.Serialize(playerData);
            NAPI.Util.ConsoleOutput($"{jsonData},{playerData}");
            player.TriggerEvent("updatePlayerData", jsonData);

Client

JavaScript:
mp.events.add("updatePlayerData", function(jsonData) {
    console.log("Received player data from server:", jsonData);

    try {
        // Парсим строку JSON в объект
        let playerData = JSON.parse(jsonData);

        // Передаем данные в CEF
       
        browser.call('updatePlayerDataInCEF',playerData)
    } catch (error) {
        console.error("Ошибка при парсинге JSON:", error);
    }
});


JS - CEF-ки

Код:
function updatePlayerDataInCEF(data) {
    document.getElementById("playerName").innerText = data.playerName;
    document.getElementById("playerScore").innerText = data.playerScore;
   
}
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
1,875
208
5
Да, вы правильно понимаете последовательность работы. По вашему коду, информация в формате JSON передается от сервера к клиенту, и затем обновляется в CEF (интерфейсе). Для обновления информации в CEF, используется функция updatePlayerDataInCEF, которая принимает объект данных JSON и обновляет соответствующие элементы на странице. Ваш код выглядит правильным для передачи и обновления информации в CEF с использованием формата JSON.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,552
1,437
211
27
Сервер и клиент может общаться общими объектами (такими как player, например, потому что они по entityId строятся), всё остальное - ты отправляешь между друг другом только в json'е. И с клиента на CEF ты так же должен отправлять JSON. Ты делаешь JSON.parse в том случае, если тебе на клиенте нужно что-то попутно с этой информацией сделать, но дальше ПРОДОЛЖАЕШЬ отправлять JSON.

А вот регистрация ивента на CEF'е у тебя неверная. Должен быть mp.events.add.
К тому же обновлять информацию страницы с помощью getElementById как-то странно, но я не FrontEnd разработчик, поэтому по этой части не помогу.
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Сервер и клиент может общаться общими объектами (такими как player, например, потому что они по entityId строятся), всё остальное - ты отправляешь между друг другом только в json'е. И с клиента на CEF ты так же должен отправлять JSON. Ты делаешь JSON.parse в том случае, если тебе на клиенте нужно что-то попутно с этой информацией сделать, но дальше ПРОДОЛЖАЕШЬ отправлять JSON.

А вот регистрация ивента на CEF'е у тебя неверная. Должен быть mp.events.add.
К тому же обновлять информацию страницы с помощью getElementById как-то странно, но я не FrontEnd разработчик, поэтому по этой части не помогу.
Вот так?
На CEFe

Код:
mp.events.add('updatePlayerDataInCEF', (jsonData) => {
    document.getElementById("playerName").innerText = data.playerName;
    document.getElementById("playerScore").innerText = data.playerScore;
});
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,552
1,437
211
27
Вот так?
На CEFe

Код:
mp.events.add('updatePlayerDataInCEF', (jsonData) => {
    document.getElementById("playerName").innerText = data.playerName;
    document.getElementById("playerScore").innerText = data.playerScore;
});
Ну почти.
После этого ты забыл, что тебе нужно распарсить этот самый jsonData в объект и уже с ним работать.
А то ты инициализацию метода сделал, а внутренности оставил как было. Ну и на клиенте сделать пересылку не объекта, а json'а.
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Ну почти.
После этого ты забыл, что тебе нужно распарсить этот самый jsonData в объект и уже с ним работать.
А то ты инициализацию метода сделал, а внутренности оставил как было. Ну и на клиенте сделать пересылку не объекта, а json'а.
Я просто новичёк пока сложно понять что ты щас сказал :D
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,552
1,437
211
27
Я просто новичёк пока сложно понять что ты щас сказал :D
На сервере ты создал JSON строку с помощью JsonSerializer.Serialize(playerData), отправил её на клиент и на клиенте принял как аргумент jsonData, далее его распарсил (сделал JSON.parse) и отправил объект. Если тебе не нужно на клиенте ничего делать с данной информацией, которую прислал сервер, то не нужно парсить и просто передавай дальше этот же jsonData в браузер, а уже на браузере сделай JSON.parse, чтобы из строки текста получить объект, к которому далее ты можешь обращаться через точку (data.playerName).
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
На сервере ты создал JSON строку с помощью JsonSerializer.Serialize(playerData), отправил её на клиент и на клиенте принял как аргумент jsonData, далее его распарсил (сделал JSON.parse) и отправил объект. Если тебе не нужно на клиенте ничего делать с данной информацией, которую прислал сервер, то не нужно парсить и просто передавай дальше этот же jsonData в браузер, а уже на браузере сделай JSON.parse, чтобы из строки текста получить объект, к которому далее ты можешь обращаться через точку (data.playerName).
А получается я убираю из клиентсвой части парсировку
и добавляю в cef
data = JSON.parse(jsonData);
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Зашёл подключил функция работает, но как отправить это всё на CEF?

причём работает не при

Код:
mp.events.add('updatePlayerDataInCEF', (jsonData) => {
    data = JSON.parse(jsonData);
    document.getElementById("playerName").innerText = data.playerName;
    document.getElementById("playerScore").innerText = data.playerScore;
});

Работает на дебаге только

Код:
function updatePlayerDataInCEF(data) {
    document.getElementById("playerName").innerText = data.playerName;
    document.getElementById("playerScore").innerText = data.playerScore;
    
}

Но как с клиента вызвать правильно чтоб изменения были в CEF?


Код:
mp.events.add('CEF:CLIENT::PLAYER_BACK_CURSOR', (jsonData) =>
{
    mp.gui.chat.push("Received player data: " + jsonData);
    notifyHud = mp.browsers.new('package://web/wes/index.html');
    mp.gui.execute(`updatePlayerDataInCEF(${JSON.stringify(jsonData)});`);

});
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,552
1,437
211
27
причём работает не при

Код:
mp.events.add('updatePlayerDataInCEF', (jsonData) => {
    data = JSON.parse(jsonData);
    document.getElementById("playerName").innerText = data.playerName;
    document.getElementById("playerScore").innerText = data.playerScore;
});
Что такое data в контексте?
Это несуществующая ячейка в памяти, в которую ты пытаешься распарсить строку, инициализируй его как-нибудь для начала, например с помощью const или let.
const data = JSON.parse(jsonData);

А вообще - это базовое программирование, тут ошибки даже не связаны с самим RAGEMP.
Для начала тебе стоит просто поизучать язык программирования в целом, потому что иначе ты на каждом шагу будешь вот так спотыкаться.
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Что такое data в контексте?
Это несуществующая ячейка в памяти, в которую ты пытаешься распарсить строку, инициализируй его как-нибудь для начала, например с помощью const или let.
const data = JSON.parse(jsonData);

А вообще - это базовое программирование, тут ошибки даже не связаны с самим RAGEMP.
Для начала тебе стоит просто поизучать язык программирования в целом, потому что иначе ты на каждом шагу будешь вот так спотыкаться.
А как то можно посмотреть что в неё приходит? или вообще как то отрабатывается что то или нет?
 

Vermilion

Высший разум
high coder
29 Сен 2021
1,044
602
181
34
Зачем изначально учиться на допотопных функциях? Смотри в сторону rpc
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,552
1,437
211
27
А как то можно посмотреть что в неё приходит? или вообще как то отрабатывается что то или нет?
Не могу понять твоего вопроса.
В него (event) приходит то, что ты в него отправляешь, всё должно быть логично.
Что обрабатывается? Не понимаю.

Зачем изначально учиться на допотопных функциях? Смотри в сторону rpc
Так RPC это всё то же самое, просто в обёртке.
Чтобы научиться пользоваться чем-то хорошим, для начало было бы хорошо научиться пользоваться чем-то базовым.
 

Vermilion

Высший разум
high coder
29 Сен 2021
1,044
602
181
34
Не могу понять твоего вопроса.
В него (event) приходит то, что ты в него отправляешь, всё должно быть логично.
Что обрабатывается? Не понимаю.


Так RPC это всё то же самое, просто в обёртке.
Чтобы научиться пользоваться чем-то хорошим, для начало было бы хорошо научиться пользоваться чем-то базовым.
Да, я знаю что эта либа под капотом имеет rage api, я веду к тому, что новичку будет проще освоиться и писать более "чистый" код, нежели городить кучу функций в которых сам можешь запутаться.
Отправить данные с сервера на клиент, получить на клиенте и отправить в CEF, в CEF получить и отправить на клиент, на клиенте получить и отправить на сервер

А с rpc можно уменьшить эту цепочку
Сервер - CEF - Сервер
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
high coder
30 Авг 2021
2,552
1,437
211
27
Да, я знаю что эта либа под капотом имеет rage api, я веду к тому, что новичку будет проще освоиться и писать более "чистый" код, нежели городить кучу функций в которых сам можешь запутаться.
Отправить данные с сервера на клиент, получить на клиенте и отправить в CEF, в CEF получить и отправить на клиент, на клиенте получить и отправить на сервер

А с rpc можно уменьшить эту цепочку
Сервер - CEF - Сервер
Ты прав, просто дело в том, что он пока не понимает базовых элементов, это видно по вопросам.
Такие вещи для него будут как "медвежья услуга", где он просто перескочит момент обучения и потом из-за этого встанет в ступор.
Ну, это лишь моё мнение.
 
Реакции: Inoi

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Зачем изначально учиться на допотопных функциях? Смотри в сторону rpc
Да, я знаю что эта либа под капотом имеет rage api, я веду к тому, что новичку будет проще освоиться и писать более "чистый" код, нежели городить кучу функций в которых сам можешь запутаться.
Отправить данные с сервера на клиент, получить на клиенте и отправить в CEF, в CEF получить и отправить на клиент, на клиенте получить и отправить на сервер

А с rpc можно уменьшить эту цепочку
Сервер - CEF - Сервер


Так тут говориться про кнопку, по кнопки проблем вообще нету.
Я не могу понять почему не могу отправить данные в CEF
 

Belcheezy#

Новый участник
19 Мар 2023
23
0
36
Ты прав, просто дело в том, что он пока не понимает базовых элементов, это видно по вопросам.
Такие вещи для него будут как "медвежья услуга", где он просто перескочит момент обучения и потом из-за этого встанет в ступор.
Ну, это лишь моё мнение.
Я уже в ступоре, так как код вроде верный, а ничего не происходит, по поводу из CEF по кнопкам тыкать и отправлять Триггеры это ясно как делать, но как мне вернуть информацию с сервера в CEF это пока вообще не понятно. почему не принимает возвратное значения.
 
Статус
В этой теме нельзя размещать новые ответы.