Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 03.12.2017 18:06 | 
	
		
	 | 
	
		
		MOP 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1468 
	
		
	 | 
	
		
			
			 
			
				Дьякон вроде это делал в своей MONSTRDLL.dll. По крайней мере, в исходниках были указания на это. Мне же не удалось ни разобраться в его коде, ни заставить программу работать, хотя она и создана под ЭРУ. 
      // вставляем код вызова процедуры подгрузки портретов       void* p_ProcForDef = (void*)0x55D102;       TLoadDef.jmp = 0xE9;       offset = (int)&InsertCodeDef - 0x55D102 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForDef, &TLoadDef, sizeof(LOADDEF));              // вставляем код перехвата Hook47BE90       void* p_ProcForHook47BE90 = (void*)0x47BE90;       TLoadDef.jmp = 0xE9;       offset = (int)&Hook47BE90 - 0x47BE90 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForHook47BE90, &TLoadDef, sizeof(LOADDEF));              // вставляем код перехвата Hook47C300       void* p_ProcForHook47C300 = (void*)0x47C300;       TLoadDef.jmp = 0xE9;       offset = (int)&Hook47C300 - 0x47C300 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForHook47C300, &TLoadDef, sizeof(LOADDEF));               // вставляем код перехвата Hook47C9C0       void* p_ProcForHook47C9C0 = (void*)0x47C9C0;       TLoadDef.jmp = 0xE9;       offset = (int)&Hook47C9C0 - 0x47C9C0 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForHook47C9C0, &TLoadDef, sizeof(LOADDEF));              // вставляем код перехвата Hook47CE10       void* p_ProcForHook47CE10 = (void*)0x47CE10;       TLoadDef.jmp = 0xE9;       offset = (int)&Hook47CE10 - 0x47CE10 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForHook47CE10, &TLoadDef, sizeof(LOADDEF));              // вставляем код перехвата Hook47D250       void* p_ProcForHook47D250 = (void*)0x47D250;       TLoadDef.jmp = 0xE9;       offset = (int)&Hook47D250 - 0x47D250 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForHook47D250, &TLoadDef, sizeof(LOADDEF));              // вставляем код перехвата Hook47D660       void* p_ProcForHook47D660 = (void*)0x47D660;       TLoadDef.jmp = 0xE9;       offset = (int)&Hook47D660 - 0x47D660 - 5;       memcpy(&TLoadDef.Adr[0], &offset, sizeof(int));       memcpy(p_ProcForHook47D660, &TLoadDef, sizeof(LOADDEF)); 
       return TRUE; 
}  
			 
			
			
  
Circle of destruction, hammer comes crushing 
Powerhouse of energy 
Whipping up a fury, dominating flurry 
We create the battery
			
				
(This post was last modified: 04.12.2017 18:57 by MOP.)
 
			 
		 |  
	 
 | 
	| 04.12.2017 18:51 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 04.12.2017 19:03 | 
	
		
	 | 
	
		
		MOP 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1468 
	
		
	 | 
	
		
			
			 
			
			
			
  
Circle of destruction, hammer comes crushing 
Powerhouse of energy 
Whipping up a fury, dominating flurry 
We create the battery
			
		 |  
	 
 | 
	| 04.12.2017 19:09 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 04.12.2017 23:06 | 
	
		
	 | 
	
		
		feanor 
 
 
		
		
		
			
			
			 
			
Posts: 624 
	
		
	 | 
	
		
			
			 
			
				Quote: Удручает пока сложность замены отдельных кадров в def-ах на лету, пока этот вопрос не решил.  
Так можно поставить хук на отрисовку кадров дефа, и рисовать вместо него pcx. (я пробовал, работает) 
Единственно, с курсором артефактов какие-то тонкости будут.
			  
			
			
			
		 |  
	 
 | 
	| 05.12.2017 12:41 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 05.12.2017 17:19 | 
	
		
	 | 
	
		
		feanor 
 
 
		
		
		
			
			
			 
			
Posts: 624 
	
		
	 | 
	
		
			
			 
			
				Набор, но все они в итоге сводятся к максимум DefCadre_Draw[...] . 
При этом разбирать-то их даже особо не надо, сплайс, замена на отрисовку pcx8.  
И потратить чуть-чуть памяти на предварительную загрузку pcx-ов. 
Единственная проблема - с DefCadre мы можем получить только имя кадра (somename.pcx), для адекватного по быстродействию поиска имени дефа и номеров группы и кадра надо чуть-чуть подумать.
			 
			
			
			
				
(This post was last modified: 05.12.2017 19:54 by feanor.)
 
			 
		 |  
	 
 | 
	| 05.12.2017 19:53 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 05.12.2017 20:39 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 07.12.2017 21:55 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 08.12.2017 03:41 | 
	
		
	 |