• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в 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/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

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

Vermilion

Специалист
Автор темы
29 Сен 2021
296
153
80
33
Приветствую.
Пытаюсь использовать кастомные изображения с помощью 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
871
1,158
5
Привет! Проверь, правильно ли указан путь к файлу textures.ytd и romb.dds в коде. Удостоверься, что путь к файлам указан корректно в соответствии с расположением файлов на сервере. Также убедись, что текстуры успешно загружены перед использованием функции drawSprite.
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Прежде чем использовать текстуру - ты должен убедиться, что она загрузилась.

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);
 
  • Like
Реакции: Deja-vu и Vermilion

Lavanda

Начинающий специалист
25 Авг 2021
173
30
65
Прежде чем использовать текстуру - ты должен убедиться, что она загрузилась.

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);
легенда
 
  • Like
Реакции: Deja-vu

Vermilion

Специалист
Автор темы
29 Сен 2021
296
153
80
33
В общем до сих пор борюсь с этой проблемой. .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 coder
19 Окт 2020
217
275
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, не пробовал?
 
  • Like
Реакции: Vermilion

Vermilion

Специалист
Автор темы
29 Сен 2021
296
153
80
33

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Сейчас попробую. Может быть лучше сделать загрузку текстур через dlc, что бы быть уверенным в рабочем варианте?
Разницы DLC или .ytd нет, что первое, что второе - нужно подгружать кодом перед использованием.
 
  • Like
Реакции: Vermilion

Vermilion

Специалист
Автор темы
29 Сен 2021
296
153
80
33
Нужно ли файл .ydt добавлять в dlclist?
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27

Vermilion

Специалист
Автор темы
29 Сен 2021
296
153
80
33
Подскажите, где можно почитать как использовать кастомные спрайты через .dlc
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,220
1,425
191
27
Ну, если ничего не менялось, то мне помнится, что вроде там ничего не нужно подгружать, там Id-based спрайты на карту, просто нужно Id использовать и всё.