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,354
806
181
34
Приветствую.
Пытаюсь использовать кастомные изображения с помощью drawSprite
В папке client_packages\game_resources\raw\
скинул файл textures.ytd в котором находится изображение romb.dds


Функция с помощью которой загружаю текстуры в рендере
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,394
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
легенда
 
Реакции: 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
Есть же 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 или .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 использовать и всё.