XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (06.09.2022 04:50)wessonsm Wrote:  Геройская random (0x50C7C0) его будет использовать или нет? 
Если ЭРА ставит туда свой перехват прямо в самое начало, подменяя всю функцию целиком, значит наверняка использует. По крайней мере Тифон вызывает 50C7C0 довольно часто и в него, надеюсь, тоже идёт получение случайных чисел из берсеркерского генератора в era.dll.
  (06.09.2022 04:55)daemon_n Wrote:  
Code: 
 int _y = Era::y[22]; 
Era::ExecErmCommand("VRy22:R0/[min_val]/[max_val];"); 
int rand_value =  Era::y[22]; 
Era::y[22] = _y;
  
  
Вообще не смешно, а грустно видеть подобный код. ExecErmCommand в плагинах - зло.
			  
			
			
			
				
(This post was last modified: 06.09.2022 06:17 by XEPOMAHT.)
 
			 
		 |  
	 
 | 
	| 06.09.2022 06:08 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
			
			 
			
				Все геройские и воговские rand(), random() используют движок Эры. 
Code: 
 (* Replace Heroes PRNG with custom switchable PRNGs *) 
ApiJack.StdSplice(Ptr($61841F), @Hook_SRand, ApiJack.CONV_CDECL, 1); 
ApiJack.StdSplice(Ptr($61842C), @Hook_Rand, ApiJack.CONV_STDCALL, 0); 
ApiJack.StdSplice(Ptr($50C7B0), @Hook_Tracking_SRand, ApiJack.CONV_THISCALL, 1); 
ApiJack.StdSplice(Ptr($50C7C0), @Hook_RandomRange, ApiJack.CONV_FASTCALL, 2);
  
Не забывай только, что rand() ограничен 0..65535 и я это ограничение соблюдаю строго по канону С. А вот random(min, max) по адресу 50C7C0 не ограничен, его и использую, где можно. VR:R использует random(min, max) по адресу 50C7C0.
 
Code: 
 int Random(int ZLow,int ZHigh) 
{ 
  #include "templ.h" 
  __asm{ 
    mov    ecx,ZLow 
    mov    edx,ZHigh 
    mov    eax,0x50C7C0 
    call   eax 
    mov    IDummy,eax 
  } 
  RETURN(IDummy) 
}
  
			 
			
			
  
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов 
Поддержать проект 
			
		 |  
	 
 | 
	| 06.09.2022 06:18 | 
	
		
	 | 
	
		
		daemon_n 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 4366 
	
		
	 | 
	
		
 | 
	| 06.09.2022 06:46 | 
	
		
	 | 
	
		
		daemon_n 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 4366 
	
		
	 | 
	
		
 | 
	| 14.09.2022 09:51 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 14.09.2022 12:14 | 
	
		
	 | 
	
		
		Raistlin 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1344 
	
		
	 | 
	
		
 | 
	| 14.09.2022 17:21 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 13.10.2022 08:40 | 
	
		
	 | 
	
		
		daemon_n 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 4366 
	
		
	 | 
	
		
 | 
	| 13.10.2022 09:06 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16788 
	
		
	 | 
	
		
 | 
	| 13.10.2022 09:31 | 
	
		
	 |