| Berserker   
   
   Posts: 16786
 
 |  | 
	| 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: 16786
 
 |  | 
	| 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: 16786
 
 |  | 
	| 04.12.2017 23:06 |  | 
	
		| feanor   
 Posts: 624
 
 | 
			| 
 
				Quote: Удручает пока сложность замены отдельных кадров в def-ах на лету, пока этот вопрос не решил.  
Так можно поставить хук на отрисовку кадров дефа, и рисовать вместо него pcx. (я пробовал, работает) 
Единственно, с курсором артефактов какие-то тонкости будут.
			 |  | 
	| 05.12.2017 12:41 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 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: 16786
 
 |  | 
	| 05.12.2017 20:39 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 07.12.2017 21:55 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 08.12.2017 03:41 |  |