Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 05.01.2025 22:55 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
			
			 
			
				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: 16788 
	
		
	 | 
	
		
			
			 
			
				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 | 
	
		
	 |