This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема Проблема при прорисовке текстур веревок

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,352
802
181
34
Приветствую, после обновления RAGE возникла проблема с прорисовкой текстур веревок, кто то сталкивался?
Код, который до обновления был рабочий:
JavaScript:
public attachRopeEntityToEntity(player: PlayerMp, vehicle: VehicleMp) {
        // Загружаем текстуры веревок
        mp.game.invoke('0x9B9039DBF2D258C1')
       
        // Создаем веревку
        const rope = mp.game.invoke(
            '0xE832D760399EB220',
            player.position.x,
            player.position.y,
            player.position.z,
            0,
            0,
            0,
            15,
            4,
            5,
            0.1,
            0.5,
            false,
            false,
            true,
            1.0,
            false,
            0,
        )
       
        // Аттачим веревку между игроком и транспортом
        mp.game.rope.attachEntitiesToRope(
            rope,
            vehicle.handle,
            player.handle,
            vehicle.position.x,
            vehicle.position.y,
            vehicle.position.z,
            player.position.x,
            player.position.y,
            player.position.z,
            15,
            false,
            false,
        )
   
        // Физика веревок
        mp.game.invoke('0x710311ADF0E20730', rope)
}

Сама веревка создается и аттачится, физика работает, то есть игрок не может отойти от транспорта дальше чем длинна веревки, но текстуры не видно. В чем может быть проблема?
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,378
237
100
Здравствуйте! Возможно, проблема связана с обновлением RAGE, которое повлияло на прорисовку текстур веревок. Рекомендую обратиться к разработчикам RAGE или на форуме сообщества для получения подробной информации о том, как исправить данную проблему.
 
Реакции: fivepkost

Dmitry_V

Гений
23 Июн 2023
2,276
372
131
28
Хз, попробуй так, мб с прямой подгрузкой словаря заработает.
Код:
public attachRopeEntityToEntity(player: PlayerMp, vehicle: VehicleMp) {
    mp.game.streaming.requestStreamedTextureDict("ROPE", true);
    
    let interval = setInterval(() => {
        if (mp.game.graphics.hasStreamedTextureDictLoaded("ROPE")) {
            clearInterval(interval);
 

Swayze

Активный участник
BackEnd developer
6 Окт 2022
78
39
55
Таймаут в 200 милисекунд к аттачу поставь, должно работать
 

Vermilion

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

Swayze

Активный участник
BackEnd developer
6 Окт 2022
78
39
55
Я не уверен что нативка сработает так как нужно тебе, но попробуй мб загрузит текстуры.
"0x9B9039DBF2D258C1"

 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,352
802
181
34
Этот вариант тоже пробовал. Нативка возвращает true, как будто текстуры загружены, но их не видно

UPD: речь идет про эту нативку
Код:
0xF2D0E6A75CC05597
BOOL ROPE_ARE_TEXTURES_LOADED()
 

Swayze

Активный участник
BackEnd developer
6 Окт 2022
78
39
55
Идея конечно так себе у меня, но не пробовал подгрузку текстуры в рендер впихнуть для теста?
 

Vermilion

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

Robert_Easter

Участник портала
17 Июл 2024
103
13
28
Проверил, не работает
Код:
public attachRopeEntityToEntity(player: PlayerMp, vehicle: VehicleMp) {
    mp.game.invoke('0x9B9039DBF2D258C1');
    setTimeout(() => {
        mp.game.invoke('0x6CE36C35C1AC8163');
        setTimeout(() => {
            mp.game.invoke('0x9B9039DBF2D258C1');
            setTimeout(() => {
                mp.game.invoke('0x6CE36C35C1AC8163');
                setTimeout(() => {
                    mp.game.invoke('0x9B9039DBF2D258C1');
                    const rope = mp.game.invoke(
                        '0xE832D760399EB220',
                        player.position.x,
                        player.position.y,
                        player.position.z,
                        0,
                        0,
                        0,
                        15,
                        4,
                        5,
                        0.1,
                        0.5,
                        false,
                        false,
                        true,
                        1.0,
                        false,
                        0
                    );


                    mp.game.rope.attachEntitiesToRope(
                        rope,
                        vehicle.handle,
                        player.handle,
                        vehicle.position.x,
                        vehicle.position.y,
                        vehicle.position.z,
                        player.position.x,
                        player.position.y,
                        player.position.z,
                        15,
                        false,
                        false
                    );


                    mp.game.invoke('0x710311ADF0E20730', rope);
                }, 2000);
            }, 2000);
        }, 2000);
    }, 2000);
}
Я не знаю но иногда такие вещи могут выручать. Если не сработает скажи что нибудь другое найдём
 

youngBeaver

Покинул форум.
BackEnd developer
24 Янв 2023
1,173
463
171
0xE832D760399EB220 возвращает int, вероятнее всего мы можем инициализировать переменную result, как -1, после выполнения метода проверять изменяется ли переменная result. Если не изменяется, то выполняем метод сначала. Вероятнее всего с 2-3 раза отработает при цикле.