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

Как отобразить улицы в кастомном худе

Soul_Everest

Новый участник
6 Апр 2022
19
1
63
Есть проблема, не могу отобразить улицы в кастомном худе. Есть код который отображает название улиц чисто в самой игре. но я хочу отобразить улицы худе в определенном.
Вот рабочий код который отображает в самой игре. но мне нужно как-то сделать этот код чтоб я мог отобразить его в худе и применить css

Код:
let player = mp.players.local;
let street = undefined;
let zone = undefined;




mp.events.add('render', () => {

    street = mp.game.pathfind.getStreetNameAtCoord(player.position.x, player.position.y, player.position.z, 0, 0);
    zone = mp.game.gxt.get(mp.game.zone.getNameOfZone(player.position.x, player.position.y, player.position.z));

    mp.game.ui.hideHudComponentThisFrame(6); // car name
    mp.game.ui.hideHudComponentThisFrame(8); // car class
    mp.game.ui.hideHudComponentThisFrame(7); // area name
    mp.game.ui.hideHudComponentThisFrame(9); // street name

    mp.game.graphics.drawText(`~w~${mp.game.ui.getStreetNameFromHashKey(street.streetName)}\n~s~${zone}`, [0.215, 0.925], {
        font: 4,
        color: [244, 210, 66, 255],
        scale: [0.5, 0.5],
        outline: true,
    });
});
месте
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Тебе нужно эти данные отправлять на твой CEF и там уже работать с ними, применять css и всё прочее. Клиент - код, браузер - визуал.
При чём в таком случае рендер не лучшая опция для использования, т.к. render работает каждый отдельный кадр игрока (если у игрока 60 фпс, то 60 раз в секунду сработает этот ивент).
 
Реакции: Harland David Sanders

Soul_Everest

Новый участник
6 Апр 2022
19
1
63
Тебе нужно эти данные отправлять на твой CEF и там уже работать с ними, применять css и всё прочее. Клиент - код, браузер - визуал.
При чём в таком случае рендер не лучшая опция для использования, т.к. render работает каждый отдельный кадр игрока (если у игрока 60 фпс, то 60 раз в секунду сработает этот ивент).
Подскажи как лучше это передать на Cef
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Подскажи как лучше это передать на Cef
Ну, например вот так
JavaScript:
browser.execute(`alert(\`It's a test.\`);`);
browser - переменная, которая хранит твою страницу с HUD'ом, в котором есть место для отображения улицы.
Внутри ` - всё, что ты хочешь передать.
На стороне страницы ты можешь создать ивент, который вызовешь этим кодом, передав в аргументы название улицы.
 

Soul_Everest

Новый участник
6 Апр 2022
19
1
63
Ну, например вот так
JavaScript:
browser.execute(`alert(\`It's a test.\`);`);
browser - переменная, которая хранит твою страницу с HUD'ом, в котором есть место для отображения улицы.
Внутри ` - всё, что ты хочешь передать.
На стороне страницы ты можешь создать ивент, который вызовешь этим кодом, передав в аргументы название улицы.
1659861182944.png
вот у меня есть второй код который не работает
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Посмотреть вложение 4651вот у меня есть второй код который не работает
Во-первых event render не принимает аргументов, поэтому откуда и зачем ты туда поставил (streetName) - мне неизвестно.
Во-вторых я тебе в первом же сообщении сказал, что использовать render для этих целей - плохая опция, потому что с таким кодом ты будешь отправлять данные на CEF 60 раз в секунду при 60 FPS - зачем? Таким образом будут лаги, зависания и всё прочее на слабых пк. Да и сильные не сильно в восторге будут. Если ты уж строго решил, что рендер - единственный ивент, который тебе нужен, то сделай, хотя бы, локальное хранение на клиенте этих улиц и сверяй с теми, что приходят из методов. Если не идентичны - тогда отправляй в браузер, если идентичны - не делай ничего.
В-третьих на скриншоте не видно, что переменная hud содержит в себе страницу с браузером.
В-четвёртых на странице в cef'е тебе нужно создать метод, который будет принимать в себя нужное кол-во аргументов и уже в нём устанавливать переменные, а не делать это из клиента.
 

Soul_Everest

Новый участник
6 Апр 2022
19
1
63
Во-первых event render не принимает аргументов, поэтому откуда и зачем ты туда поставил (streetName) - мне неизвестно.
Во-вторых я тебе в первом же сообщении сказал, что использовать render для этих целей - плохая опция, потому что с таким кодом ты будешь отправлять данные на CEF 60 раз в секунду при 60 FPS - зачем? Таким образом будут лаги, зависания и всё прочее на слабых пк. Да и сильные не сильно в восторге будут. Если ты уж строго решил, что рендер - единственный ивент, который тебе нужен, то сделай, хотя бы, локальное хранение на клиенте этих улиц и сверяй с теми, что приходят из методов. Если не идентичны - тогда отправляй в браузер, если идентичны - не делай ничего.
В-третьих на скриншоте не видно, что переменная hud содержит в себе страницу с браузером.
В-четвёртых на странице в cef'е тебе нужно создать метод, который будет принимать в себя нужное кол-во аргументов и уже в нём устанавливать переменные, а не делать это из клиента.
А что можно использовать вместо рендера?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
А что можно использовать вместо рендера?
На JS'е можно использовать setInterval - бесконечный таймер (до тех пор, пока ты не сделаешь clearInterval).
Используется так:

JavaScript:
function updateZone()
{
    // Твой код
}
var updateZoneInterval = setInterval(updateZone, 100); // 100 - время в милисекундах, то есть код будет срабатывать каждые 100мс = 10 раз в секунду.
В данном варианте updateZoneInterval будет хранить интервал, который, если будет вдруг нужно, можно очистить при помощи

JavaScript:
clearInterval(updateZoneInterval);
updateZoneInterval = null;

Опять же, если сравнивать ДАЖЕ такое обновление, где код будет отрабатывать 10 раз в секунду - это всё еще меньше в 6 раз, чем если у игрока 60 FPS.
Зона просто физически не может измениться 60 раз в секунду, это неправильная трата ресурсов, поэтому лучше всего подобрать какие-нибудь 500-1000мс и этого вполне хватит для такого кода.
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
Ну, например вот так
JavaScript:
browser.execute(`alert(\`It's a test.\`);`);
browser - переменная, которая хранит твою страницу с HUD'ом, в котором есть место для отображения улицы.
Внутри ` - всё, что ты хочешь передать.
На стороне страницы ты можешь создать ивент, который вызовешь этим кодом, передав в аргументы название улицы.
Если уж советуешь - советуй евенты. На экзекьютах что-то делать сейчас = полный кринж. Так же насчет рендера - никаких "супер ресурсов" там не тратится, это локальный евент с 0вой задержкой. Согласен, что лучше делать интервал в таких случаях и проверять, изменились ли вообще данные, но всё же аргументировать это сильной затратой ресурсов на слабых пк - глупо
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,770
1,585
211
28
Если уж советуешь - советуй евенты. На экзекьютах что-то делать сейчас = полный кринж. Так же насчет рендера - никаких "супер ресурсов" там не тратится, это локальный евент с 0вой задержкой. Согласен, что лучше делать интервал в таких случаях и проверять, изменились ли вообще данные, но всё же аргументировать это сильной затратой ресурсов на слабых пк - глупо
Глупо проверять данные 60 раз в секунду, которые физически ни при каких условиях не смогут измениться 60 раз в секунду.
Использование рендера для такого - неоптимальное использование ресурсов компьютера игрока и отрицать это так же глупо.
По поводу экзекьютов - даю ту информацию, что есть у меня, не более. Есть другая опция - расскажи, буду знать, заодно и автор узнает, я ж не против.
 
Реакции: dooj

dooj

Гуру
FrontEnd developer
24 Мар 2022
480
133
120
Лично я отправляю данные на CEF через call
JavaScript:
browser.call('EVENT:CLIENT:TO:CEF', (
    JSON.stringify(
        {data: {name: 'Doojer', age: 22}}
    )
))

Принимаю таким образом:

JavaScript:
mp.events.add('EVENT:CLIENT:TO:CEF', (data) => {
    data = JSON.parse(data)
    ... // Махинации
})
 
Реакции: XDeveluxe