Current time: 20.02.2025, 04:09 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Video menu for the launcher Ru - Eng
» HD видеозаставкв для меню.
Author Message
Berserker Offline
Administrators

Posts: 16721
Post: #31

Quote:Мне просто не очень нравится идея тащить в плагин библиотечные функции c++, которые и так есть в общих библиотеках.
Сама игра запускается и при отсутствии Visual C++ Redistributanble 2005, 2008, 2010, etc. Это удобно, в том числе на Линуксе.

Спасибо!


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
05.01.2025 22:55
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16721
Post: #32

wessonsm, я бы эти проверки как-то вынес в промежуточную функцию. Я так понимаю, нужно просто по условию вместо отрисовки видеокадра отрисовать pcx-фон. Возможно, какая-то сложность ускользает.

Code:
// Фикс раздвоения кнопок при нажатии
int __stdcall hook_ButtonDraw(LoHook* hook, HookContext* c) {
    if ( (IsVideoFullScreen())&&(PlayingCredits()) ) {
        VideoDrawCurrentFrame();
    }
    return EXEC_DEFAULT;    
}
Вот здесь вместо VideoDrawCurrentFrame(), если нет видео, вставить вызов отрисовки PCX задника. Только ты перехватил отрисовку любых кнопок в игре ведь?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
15.01.2025 17:13
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 814
Post: #33

Да, надо будет пару вечеров посидеть еще над этим плагином. Меня самого не вполне устраивает текущий вариант.
15.01.2025 22:34
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 814
Post: #34

(05.01.2025 02:14)Berserker Wrote:  А не было возможности сделать так, чтобы композитные png не были нужны вообще для главного меню?


Сделал.
Оптимизировал хуки, немного причесал исходник.
Композитные png не требуются в главном меню (но не в других диалогах).
Если в json имеются ключи вида "era:{png_backs:{***}}" для кнопок главного меню,
их требуется удалить для корректной работы плагина.

По совету Берсеркера скомпилировал с ключом /MT, чтобы не было зависимостей от внешних библиотек.
Это привело к увеличению размера плагина в 4 раза - с 14,5 кБ до 58 кБ Ab

Ссылки остались те же:
Мод
Плагин


(15.01.2025 17:13)Berserker Wrote:  Только ты перехватил отрисовку любых кнопок в игре ведь?

Только в главном меню.
Хук стоит сплайс, но если кнопка находится не в главном меню, просто вызывается замещенная функция без изменений.
(This post was last modified: 20.01.2025 22:24 by wessonsm.)
20.01.2025 20:52
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16721
Post: #35

Quote:Это привело к увеличению размера плагина в 4 раза - с 14,5 кБ до 58 кБ
Это превышает свободное место на моей 3-дюймовой дискете )))

Отличное обновление, спасибо! Такое можно по умолчанию в сборках использовать. Только можешь описать все фишки плагина (прототип readme?).

Quote:Вот теперь тебя люблю я,
Вот тебя тебя хвалю я
Потому что даже Берсу
Твой плагин да угодил ))) © Плагдодыр


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
20.01.2025 22:34
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 814
Post: #36

Berserker, я придумал как сделать, чтобы png кадры дефов кнопок главного меню заранее кэшировались в памяти, такой маленький трюк.
Еще перед созданием диалога последовательно рисую их в экранный буффер функцией 0x47B820_Def_DrawSimple, это провоцирует помещение их в кэш.
На экране их не видно, потому что нет перерисовки экрана, но в кэш они попадают.
Субъективно тормозов стало меньше.

Теперь вопрос как бы измерить, насколько уменьшились тормоза?
Субъективным ощущениям доверять не стоит.
Первое, что приходит в голову замерять время отрисовки кнопки при клике на нее функцией GetTime(), до и после.
Если кадр нажатой кнопки есть в кэше, время будет меньше.
Скоро наверное выложу обновленный плагин и результаты тестов.
29.01.2025 23:27
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5454
Post: #37

wessonsm, можно нагрузить процессор сторонней задачей, и следом открывать игру, замеряя время...
Думаю с нагрузкой "наглядность" станет осязаема даже таймером


Image: team-supermod.gif
30.01.2025 00:23
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16721
Post: #38

wessonsm, у меня была идея сделать отслеживание жизни def-ов и принудительно кэшировать кадры, но отложил. Там есть нюансы, что из возможности динамического перенаправления кадров дефов на произвольную png картинку, можно получить вечную блокировку (мёртвый груз в кэше) для ранее загруженных кадров.

Ты всё верно делаешь, правда, сама по себе отрисовка время забирает. А сравнить можно так: засекаешь через GetTime() время до и после вызова функции отрисовки изображения в первый раз, а затем во второй. Находишь разницу. Можно без хуков.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
30.01.2025 03:33
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2025 MyBB Group