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

Вопрос Кастомные текстуры спрайтов

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,354
806
181
34
Приветствую.
Пытаюсь использовать кастомные изображения с помощью drawSprite
В папке client_packages\game_resources\raw\
скинул файл textures.ytd в котором находится изображение romb.dds
Screenshot_1.png


Функция с помощью которой загружаю текстуры в рендере
JavaScript:
if (!mp.game.graphics.hasStreamedTextureDictLoaded("textures")) {
          mp.game.graphics.requestStreamedTextureDict("textures", true);
        return false;
}

mp.game.graphics.drawSprite("textures", "romb", 0.5, 0.5, 0.025, 0.025, 0, 255, 255, 255, 255);
В чем может быть проблема?
 
Последнее редактирование:

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,393
237
100
Привет! Проверь, правильно ли указан путь к файлу textures.ytd и romb.dds в коде. Удостоверься, что путь к файлам указан корректно в соответствии с расположением файлов на сервере. Также убедись, что текстуры успешно загружены перед использованием функции drawSprite.
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,909
1,666
211
28
Прежде чем использовать текстуру - ты должен убедиться, что она загрузилась.

JavaScript:
function LoadStreamedTextureDictionary(dictionary)
{
    if (mp.game.graphics.hasStreamedTextureDictLoaded(dictionary)) return true;

    let tries = 0;
    mp.game.graphics.requestStreamedTextureDict(dictionary, true);
    while (!mp.game.graphics.hasStreamedTextureDictLoaded(dictionary))
    {
        if (++tries > 500) return false;

        mp.game.wait(1);
    }
    return true;
}

В начале файла с event'ом render'а:
JavaScript:
LoadStreamedTextureDictionary("textures");

Ну и уже в самом render'е:
JavaScript:
mp.game.graphics.drawSprite("textures", "romb", 0.5, 0.5, 0.015, 0.025, 0, 255, 255, 255, 255);
 
Реакции: m0v1l3 и Vermilion

Lavanda

Активный участник
25 Авг 2021
228
27
85
Прежде чем использовать текстуру - ты должен убедиться, что она загрузилась.

JavaScript:
function LoadStreamedTextureDictionary(dictionary)
{
    if (mp.game.graphics.hasStreamedTextureDictLoaded(dictionary)) return true;

    let tries = 0;
    mp.game.graphics.requestStreamedTextureDict(dictionary, true);
    while (!mp.game.graphics.hasStreamedTextureDictLoaded(dictionary))
    {
        if (++tries > 500) return false;

        mp.game.wait(1);
    }
    return true;
}

В начале файла с event'ом render'а:
JavaScript:
LoadStreamedTextureDictionary("textures");

Ну и уже в самом render'е:
JavaScript:
mp.game.graphics.drawSprite("textures", "romb", 0.5, 0.5, 0.015, 0.025, 0, 255, 255, 255, 255);
легенда
 
Реакции: m0v1l3

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,354
806
181
34
В общем до сих пор борюсь с этой проблемой. .ydt загружается через раз и ведет себя не стабильно. Не могу понять в чем проблема.
mp.game.wait(1); - останавливает выполнение других скриптов и может привести к крашам и прочим багам. После 500 мс если библиотека не загружена, она останавливает попытки загрузки. Хочу попробовать использование асинхронной функции.
JavaScript:
public async loadTextureDictionary(textureDict: string): Promise<boolean> {
        if (mp.game.graphics.hasStreamedTextureDictLoaded(textureDict)) {
            return true;
        }
        mp.game.graphics.requestStreamedTextureDict(textureDict, true);
        const waitForLoad = (): Promise<boolean> => {
            return new Promise((resolve) => {
                const checkLoad = () => {
                    if (mp.game.graphics.hasStreamedTextureDictLoaded(textureDict)) {
                        resolve(true);
                    } else {
                        setTimeout(checkLoad, 100);
                    }
                };
                setTimeout(checkLoad, 100);
            });
        };
    
        return await waitForLoad();
    }
 

JJIGolem

Старожил
High developer
BackEnd developer
19 Окт 2020
239
289
142
В общем до сих пор борюсь с этой проблемой. .ydt загружается через раз и ведет себя не стабильно. Не могу понять в чем проблема.
mp.game.wait(1); - останавливает выполнение других скриптов и может привести к крашам и прочим багам. После 500 мс если библиотека не загружена, она останавливает попытки загрузки. Хочу попробовать использование асинхронной функции.
JavaScript:
public async loadTextureDictionary(textureDict: string): Promise<boolean> {
        if (mp.game.graphics.hasStreamedTextureDictLoaded(textureDict)) {
            return true;
        }
        mp.game.graphics.requestStreamedTextureDict(textureDict, true);
        const waitForLoad = (): Promise<boolean> => {
            return new Promise((resolve) => {
                const checkLoad = () => {
                    if (mp.game.graphics.hasStreamedTextureDictLoaded(textureDict)) {
                        resolve(true);
                    } else {
                        setTimeout(checkLoad, 100);
                    }
                };
                setTimeout(checkLoad, 100);
            });
        };
   
        return await waitForLoad();
    }
Есть же waitAsync, не пробовал?
 
Реакции: Vermilion

Vermilion

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

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,909
1,666
211
28
Сейчас попробую. Может быть лучше сделать загрузку текстур через dlc, что бы быть уверенным в рабочем варианте?
Разницы DLC или .ytd нет, что первое, что второе - нужно подгружать кодом перед использованием.
 
Реакции: Vermilion

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,354
806
181
34
Нужно ли файл .ydt добавлять в dlclist?
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,909
1,666
211
28

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,354
806
181
34
Подскажите, где можно почитать как использовать кастомные спрайты через .dlc
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,909
1,666
211
28

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
2,909
1,666
211
28
Ну, если ничего не менялось, то мне помнится, что вроде там ничего не нужно подгружать, там Id-based спрайты на карту, просто нужно Id использовать и всё.