| 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: 16786
 
 | 
			| 
 
				Все геройские и воговские 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: 16786
 
 |  | 
	| 14.09.2022 12:14 |  | 
	
		| Raistlin   
   
   Posts: 1344
 
 |  | 
	| 14.09.2022 17:21 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 13.10.2022 08:40 |  | 
	
		| daemon_n   
   
   Posts: 4366
 
 |  | 
	| 13.10.2022 09:06 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 13.10.2022 09:31 |  |