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

Вопрос Дименшен

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

Eminem_1106

Новый участник
18 Июн 2023
19
2
47
Здравствуйте такой вопрос как прописать в худ чтобы отображалось в каком я нахожусь измерении, через рендер я смог это реализовать а как сделать это в худе ?
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,256
233
5
Здравствуйте! Для отображения информации о текущем измерении в HUD (интерфейсе), вам необходимо создать соответствующий элемент (например, текстовое поле) и обновлять его значение с помощью скрипта или мода. Как именно реализовать это зависит от используемых вами инструментов для создания HUD'а.
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34
Написать обработчик событий, который при изменении виртуального мира будет отправлять данные в CEF клиента

Пример как это можно сделать. На стороне сервера создаем команду которая будет сохранять виртуальный мир в данные игрока
JavaScript:
mp.events.addCommand("syncdimension", (player) => {
    player.setVariable("dimension", player.dimension);
});

На стороне клиента создаем обработчик событий который будет срабатывать при изменении данных
JavaScript:
mp.events.addDataHandler({
    "dimension":(entity, value, oldValue)=> {
        if(entity.type==='player'){
            // Здесь отправляем данные игроку в CEF
        }
    }
})

Теперь при команде /syncdimension в CEF игрока будет отображаться его виртуальный мир
 

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,541
490
187
21
На стороне клиента создаем обработчик событий который будет срабатывать при изменении данных
JavaScript:
mp.events.addDataHandler({
"dimension":(entity, value, oldValue)=> {
if(entity.type==='player'){
// Здесь отправляем данные игроку в CEF
}
}
})
Ну или всё в рендер закинуть)))
 

kirillzver

Гуру
BackEnd developer
2 Ноя 2020
190
117
104
Написать обработчик событий, который при изменении виртуального мира будет отправлять данные в CEF клиента

Пример как это можно сделать. На стороне сервера создаем команду которая будет сохранять виртуальный мир в данные игрока
JavaScript:
mp.events.addCommand("syncdimension", (player) => {
    player.setVariable("dimension", player.dimension);
});

На стороне клиента создаем обработчик событий который будет срабатывать при изменении данных
JavaScript:
mp.events.addDataHandler({
    "dimension":(entity, value, oldValue)=> {
        if(entity.type==='player'){
            // Здесь отправляем данные игроку в CEF
        }
    }
})

Теперь при команде /syncdimension в CEF игрока будет отображаться его виртуальный мир
Ну что-то, как будто бы, не лучшая идея синхронизировать измерение со всеми игроками с помощью setVariable, если задача стоит только в том, чтобы отстучать об изменении параметра dimension одному игроку. Для этого больше подошло бы setOwnVariable (который отстучит только игроку, которому установлено), но в этом также по сути нет смысла, потому что ты никакие новые данные не передаешь (его же можно взять с уже существующего на клиенте свойства у игрока dimension), поэтому, самым логичным вариантом является вызов эвента через player.call.
Прям для самых продвинутых, можно переназначить сэттэр свойства dimension у прототипа игрока, добавив вызов эвента об изменении этого свойства. Тем самым избавившись от необходимости при каждом изменении дименшина дописывать строку с вызовом эвента, что отстучит об этом самом изменении
 
Реакции: Justin_Games

Eminem_1106

Новый участник
18 Июн 2023
19
2
47
Написать обработчик событий, который при изменении виртуального мира будет отправлять данные в CEF клиента

Пример как это можно сделать. На стороне сервера создаем команду которая будет сохранять виртуальный мир в данные игрока
JavaScript:
mp.events.addCommand("syncdimension", (player) => {
    player.setVariable("dimension", player.dimension);
});

На стороне клиента создаем обработчик событий который будет срабатывать при изменении данных
JavaScript:
mp.events.addDataHandler({
    "dimension":(entity, value, oldValue)=> {
        if(entity.type==='player'){
            // Здесь отправляем данные игроку в CEF
        }
    }
})

Теперь при команде /syncdimension в CEF игрока будет отображаться его виртуальный мир
А как это в cef прописать
 

Eminem_1106

Новый участник
18 Июн 2023
19
2
47
Условно я сделал худ у меня там написано dimension: 0 нужно чтобы он показывал в каком я мире когда я ввожу команду которая меняет мне измерения
 

FireFeed

⚡️Frontend Developer
Команда форума
Moderator
17 Дек 2020
200
66
127
20
Реакции: Vermilion

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
На стороне клиента создаем обработчик событий который будет срабатывать при изменении данных
JavaScript:
mp.events.addDataHandler({
    "dimension":(entity, value, oldValue)=> {
        if(entity.type==='player'){
            // Здесь отправляем данные игроку в CEF
        }
    }
})
Ты забыл сделать проверку на локального игрока
if (entity === mp.players.local)
В противном случае ты будешь обновлять CEF у каждого клиента при изменении dimension у кого-то другого.
 
Реакции: ivancrossme и Vermilion

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34
Условно я сделал худ у меня там написано dimension: 0 нужно чтобы он показывал в каком я мире когда я ввожу команду которая меняет мне измерения
Значит в команду которая меняет тебе измерение после установки измерения добавляешь
JavaScript:
player.setVariable("dimension", player.dimension);

И как уже написали выше, триггеришь CEF с значением измерения

В твоем случае это должно выглядеть как то так:
Client-side:
JavaScript:
mp.events.addDataHandler({
    "dimension":(entity, value, oldValue)=> {
        if(entity.type==='player'){
            browser.call("updatePlayerDimension", value);
        }
    }
})

CEF
JavaScript:
mp.events.add("updatePlayerDimension", (value) => {
   // тут уже устанавливаешь значение value в браузере
});

Ну что-то, как будто бы, не лучшая идея синхронизировать измерение со всеми игроками с помощью setVariable, если задача стоит только в том, чтобы отстучать об изменении параметра dimension одному игроку. Для этого больше подошло бы setOwnVariable (который отстучит только игроку, которому установлено), но в этом также по сути нет смысла, потому что ты никакие новые данные не передаешь (его же можно взять с уже существующего на клиенте свойства у игрока dimension), поэтому, самым логичным вариантом является вызов эвента через player.call.
Прям для самых продвинутых, можно переназначить сэттэр свойства dimension у прототипа игрока, добавив вызов эвента об изменении этого свойства. Тем самым избавившись от необходимости при каждом изменении дименшина дописывать строку с вызовом эвента, что отстучит об этом самом изменении
На счет прототипа согласен, сам пользуюсь

Ну или всё в рендер закинуть)))
Не советую использовать рендер без надобности, уже отвечал на этот вопрос
 
Последнее редактирование:
Реакции: XDeveluxe

Eminem_1106

Новый участник
18 Июн 2023
19
2
47
Значит в команду которая меняет тебе измерение после установки измерения добавляешь
JavaScript:
player.setVariable("dimension", player.dimension);

И как уже написали выше, триггеришь CEF с значением измерения

В твоем случае это должно выглядеть как то так:
Client-side:
JavaScript:
mp.events.addDataHandler({
    "dimension":(entity, value, oldValue)=> {
        if(entity.type==='player'){
            browser.call("updatePlayerDimension", value);
        }
    }
})

CEF
JavaScript:
mp.events.add("updatePlayerDimension", (value) => {
   // тут уже устанавливаешь значение value в браузере
});


На счет прототипа согласен, сам пользуюсь


Не советую использовать рендер без надобности, уже отвечал на этот вопрос
Непомогло ничего не происходит
 
  • RoflanEbalo
Реакции: kirillzver

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34
Непомогло ничего не происходит
Screenshot_2.png
 
  • RoflanEbalo
Реакции: XDeveluxe и Inoi

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34

Eminem_1106

Новый участник
18 Июн 2023
19
2
47
HTML:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
    <link rel="stylesheet" href="styles.css"> 
    <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@800&italic=true&display=swap" rel="stylesheet">
    <script src="hud.js"></script>
</head>
<body>
    <div id="admin-mod">
        <h1>test</h1>
        <p id="dimension">Dimension: 0</p>
    </div>

</body>

<body>
    <img src="" alt="Логотип" class="responsive-image">
</body>

</html>
JavaScript:
browser = mp.browsers.new("package://hud/hud.html");

mp.events.add("updatePlayerDimension", (value) => {
    const dimensionElement = document.getElementById("dimension");
    if (dimensionElement) {
        dimensionElement.textContent = `Dimension: ${value}`;
    }
});
 

Eminem_1106

Новый участник
18 Июн 2023
19
2
47
JavaScript:
mp.events.addCommand("dim", (player, _, dimension) => {
    if (!dimension || isNaN(dimension)) {
        player.outputChatBox("Введите корректный номер измерения.");
        return;
    }
    
    player.dimension = parseInt(dimension);
    player.setVariable("dimension", player.dimension);
});
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,290
762
181
34
Ну вот тебе и ответ. Ты не правильно тригеришь CEF. Информации по этому вполне достаточно, так что поиск в помощь
 

enotit

Гений
High developer
BackEnd developer
13 Ноя 2020
1,541
490
187
21
Реакции: Vermilion

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,780
1,580
211
28
JavaScript:
browser = mp.browsers.new("package://hud/hud.html");

mp.events.add("updatePlayerDimension", (value) => {
    const dimensionElement = document.getElementById("dimension");
    if (dimensionElement) {
        dimensionElement.textContent = `Dimension: ${value}`;
    }
});
Прости, что?
Ты на клиенте пытаешься получить getElementById, который работает только в web'е?
 
  • Sad
Реакции: derrsak
Статус
В этой теме нельзя размещать новые ответы.