| Raistlin   
   
   Posts: 1344
 
 |  | 
	| 24.01.2021 16:51 |  | 
	
		| Raistlin   
   
   Posts: 1344
 
 | 
			| 
 
				XEPOMAHT, как взять его потом, я и вправду знаю, но... К сожалению, я не знаю, как воспользоваться RedirectMemoryBlock в условиях ассемблера. Правда, у меня имеется иная идея: что, если на месте какой-то не используемой больше функции создать новую, которая будет попросту записывать в какой-то регистр адрес таблицы? Я тогда смогу вызвать ее где-то ещё, сохранив при этом предыдущее значение, хранящееся в регистре, куда-нибудь скопировать указатель, а затем восстановить данные в том регистре, куда я его сохранял.
			 
 Создал новый глобальный мод: WoG Ultra Edition
 
				
(This post was last modified: 13.02.2021 13:15 by Raistlin.)
 |  | 
	| 13.02.2021 13:13 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 | 
			| 
 
				Посмотреть в исходники Тифона 2.7z можно. Я тоже не знал, но нагуглил же. 
Code:
 section '.idata' data readabledata import
 ; Импортируемые процедуры
 library kernel32, 'kernel32.dll',\
 era, 'era.dll'
 
 import kernel32,\
 CreateFileA,'CreateFileA',\
 GetFileSize, 'GetFileSize',\
 VirtualAlloc, 'VirtualAlloc',\
 ReadFile, 'ReadFile',\
 CloseHandle, 'CloseHandle',\
 VirtualFree, 'VirtualFree',\
 WriteFile, 'WriteFile'
 
 import era,\
 RegisterHandler, 'RegisterHandler',\
 RedirectMemoryBlock, 'RedirectMemoryBlock'
 
Code:
 stdcall [RedirectMemoryBlock], 7D0C90h, 196 * sizeof._Creature_, MonTable
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 13.02.2021 16:56 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 13.02.2021 21:22 |  | 
	
		| Raistlin   
   
   Posts: 1344
 
 | 
			| 
 
				Все, теперь понял. Собственно, то, что это воговский адрес, я знаю, проблема была в том, что я пока не разобрался, как находить нужное в воговской секции кода.  
Еще раз спасибо за пример, это, правда, не совсем то, чего мне было нужно, но, кажется, я знаю, как мне быть. Я имел ввиду вот эту таблицу:
 
Code:
 MonTable2 rb 59000; вторичные абилкиCounterstrike_Table          = MonTable2
 AlwaysPositiveMorale_Table  = MonTable2+1000
 AlwaysPositiveLuck_Table    = MonTable2+2000
 Arrow_Table              = MonTable2+3000
 Ballistic_Table          = MonTable2+4000
 DeathBlow_Table          = MonTable2+5000
 DeathCloudAndFireBall_Table = MonTable2+6000
 Espionage_Table          = MonTable2+7000
 Fear_Table              = MonTable2+8000
 Fearless_Table          = MonTable2+9000
 NoWallPenalty_Table          = MonTable2+10000
 MagicAura_Table          = MonTable2+11000
 FireShield_Table          = MonTable2+12000
 StrikeAndReturn_Table       = MonTable2+13000
 SpellsCostLess_Table          = MonTable2+14000
 SpellsCostDump_Table          = MonTable2+15000
 Skeleton_Transformer_Table  = MonTable2+16000
 Upgrades_Table          = MonTable2+20000
 Properties1_Table          = MonTable2+24000
 Properties2_Table          = MonTable2+25000
 Properties3_Table          = MonTable2+26000
 Properties4_Table          = MonTable2+27000
 Properties5_Table          = MonTable2+28000
 Immun_Table              = MonTable2+29000
 GnomResistance_Table          = MonTable2+30000
 GolemResistance_Table       = MonTable2+31000
 Spells_Table              = MonTable2+32000
 Hate_Table              = MonTable2+33000
 JoustingBonus_Table          = MonTable2+34000
 ImmunToJoustingBonus_Table  = MonTable2+35000
 RegenerationHitPoints_Table = MonTable2+36000
 RegenerationChance_Table    = MonTable2+40000
 ThreeHeadedAttack_Table     = MonTable2+41000
 ManaDrain_Table          = MonTable2+42000
 MagicChannel_Table          = MonTable2+44000
 MagicMirror_Table          = MonTable2+45000
 Sharpshooters_Table          = MonTable2+46000
 ShootingAdjacent_Table      = MonTable2+47000
 ReduceTargetDefense_Table   = MonTable2+48000
 Rebirth_Table           = MonTable2+49000
 PackAttack_Table          = MonTable2+50000
 AttackAllMove1          = MonTable2+51000
 AttackAllMove2          = MonTable2+52000
 PreventiveCounterstrikeTable= MonTable2+53000
 RangeRetaliation_Table      = MonTable2+54000
 RayColor_Table          = MonTable2+55000
 Ban_Table              = MonTable2+56000;
 Stun_Table              = MonTable2+57000;
 ProtectFromShooting_Table   = MonTable2+58000;
Делать надо вот так?
 
Code:
 stdcall [RedirectMemoryBlock], (свободный адрес, за которым идет необходимое колличество пустого пространства), 59000, MonTable2
 Создал новый глобальный мод: WoG Ultra Edition
 |  | 
	| 13.02.2021 23:26 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 14.02.2021 04:29 |  | 
	
		| V_Maiko   
   Posts: 610
 
 | 
			| 
 
				Raistlin, What do you plan to do with MonTable2 in Typhon? Discover new addresses for UN:C?
			 
				
(This post was last modified: 14.02.2021 05:24 by V_Maiko.)
 |  | 
	| 14.02.2021 05:21 |  | 
	
		| Berserker   
   
   Posts: 16786
 
 |  | 
	| 14.02.2021 15:45 |  |