| Berserker   
   
   Posts: 16786
 
 |  | 
	| 05.01.2025 22:55 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				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 |  | 
	
		| Guru105   
 Posts: 835
 
 | 
			| 
 
				Да, надо будет пару вечеров посидеть еще над этим плагином. Меня самого не вполне устраивает текущий вариант.
			 |  | 
	| 15.01.2025 22:34 |  | 
	
		| Guru105   
 Posts: 835
 
 | 
			| 
 
				 (05.01.2025 02:14)Berserker Wrote:  А не было возможности сделать так, чтобы композитные png не были нужны вообще для главного меню?
 
Сделал. 
Оптимизировал хуки, немного причесал исходник. 
Композитные png не требуются в главном меню (но не в других диалогах). 
Если в json имеются ключи вида "era:{png_backs:{***}}" для кнопок главного меню, 
их требуется удалить для корректной работы плагина.
 
По совету Берсеркера скомпилировал с ключом /MT, чтобы не было зависимостей от внешних библиотек. 
Это привело к увеличению размера плагина в 4 раза - с 14,5 кБ до 58 кБ    
Ссылки остались те же:
Мод
Плагин  (15.01.2025 17:13)Berserker Wrote:  Только ты перехватил отрисовку любых кнопок в игре ведь? 
Только в главном меню. 
Хук стоит сплайс, но если кнопка находится не в главном меню, просто вызывается замещенная функция без изменений.
			 
				
(This post was last modified: 20.01.2025 22:24 by Guru105.)
 |  | 
	| 20.01.2025 20:52 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Quote:Это привело к увеличению размера плагина в 4 раза - с 14,5 кБ до 58 кБ 
Это превышает свободное место на моей 3-дюймовой дискете )))
 
Отличное обновление, спасибо! Такое можно по умолчанию в сборках использовать. Только можешь описать все фишки плагина (прототип readme?).
 Quote:Вот теперь тебя люблю я,Вот тебя тебя хвалю я
 Потому что даже Берсу
 Твой плагин да угодил ))) © Плагдодыр
 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 20.01.2025 22:34 |  | 
	
		| Guru105   
 Posts: 835
 
 | 
			| 
 
				Berserker, я придумал как сделать, чтобы png кадры дефов кнопок главного меню заранее кэшировались в памяти, такой маленький трюк.Еще перед созданием диалога последовательно рисую их в экранный буффер функцией 0x47B820_Def_DrawSimple, это провоцирует помещение их в кэш.
 На экране их не видно, потому что нет перерисовки экрана, но в кэш они попадают.
 Субъективно тормозов стало меньше.
 
 Теперь вопрос  как бы измерить, насколько уменьшились тормоза?
 Субъективным ощущениям доверять не стоит.
 Первое, что приходит в голову замерять время отрисовки кнопки при клике на нее функцией GetTime(), до и после.
 Если кадр нажатой кнопки есть в кэше, время будет меньше.
 Скоро наверное выложу обновленный плагин и результаты тестов.
 |  | 
	| 29.01.2025 23:27 |  | 
	
		| Bes   
   Posts: 5453
 
 | 
			| 
 
				wessonsm, можно нагрузить процессор сторонней задачей, и следом открывать игру, замеряя время...Думаю с нагрузкой "наглядность" станет осязаема даже таймером
 
 
 |  | 
	| 30.01.2025 00:23 |  |