XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (01.02.2021 18:42)Raistlin Wrote:  Собственно, я даже догадался, в чем заключается проблема, но решить я ее не могу. 
Копируй ассемблерный код на берсерк, если не получается написать его самостоятельно.
  (01.02.2021 18:42)Raistlin Wrote:     "lea edx, [eax-1]" означает, что в edx запишется адрес из eax, а затем будет забрана единица, или же, что в edx запишется значение по адресу, хранящемся в eax, со смещением в -1? А может это будет значение по адресу eax, уменьшенное на 1? Подскажите пожалуйста, а то непонятно, как данная команда работает. 
mov edx, eax 
dec edx
			  
			
			
			
		 |  
	 
 | 
	| 01.02.2021 21:03 | 
	
		
	 | 
	
		
		XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (03.02.2021 01:45)Raistlin Wrote:  Подскажите пожалуйста, где содержится указатель на def объекта? В структуре _MapItem_ я что-то данное поле не вижу... 
MapItem.H3Vector<H3ObjectDraw> objectDrawing - a vector of DEFs to draw on this tile.
 
Если нужна загрузка, то уже здесь:
 
H3ObjectDetails.setup.
 
Само имя дефа для загрузки - в H3ObjectAttributes.defName.
 
Точнее лучше спрашивать у Кавалериста (он хорошо в этом разбирается).
			  
			
			
			
				
(This post was last modified: 03.02.2021 02:01 by XEPOMAHT.)
 
			 
		 |  
	 
 | 
	| 03.02.2021 01:51 | 
	
		
	 | 
	
		
		Raistlin 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1344 
	
		
	 | 
	
		
 | 
	| 03.02.2021 14:01 | 
	
		
	 | 
	
		
		Raistlin 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1344 
	
		
	 | 
	
		
			
			 
			
				Номер объекта на карте - это ведь последнее поле структуры _MapItem_? Или надо где-то еще смотреть? 
Code: 
 _MapItem_           struc ; (sizeof=0x26, mappedto_32)      ; XREF: .rdata:BuildDepends8/o 
00000000 SetUp               dd ?                                    ; XREF: Hero_Show+B6/r 
00000000                                                             ; Hero_Show+C8/w 
00000004 Land                db ?                                    ; XREF: TryToDigGrail:loc_0040EDF7/r 
00000004                                                             ; Cast_SummonBoat+8C/r ... 
00000005 LType               db ? 
00000006 River               db ? 
00000007 RType               db ? 
00000008 Road                db ? 
00000009 RdType              db ? 
0000000A _u1                 dw ? 
0000000C Mirror              db ?                                    ; XREF: AdvMgr_MauseMoove+3D3/r 
0000000C                                                             ; Hero_Show+A9/r 
0000000D Attrib              db ?                                    ; XREF: Hero_Show+BE/w 
0000000E _Bits               dw ? 
00000010 _u2                 dw ? 
00000012 Draw                dd ?                                    ; struct offset (_ODraw_) 
00000016 DrawEnd             dd ?                                    ; struct offset (_ODraw_) 
0000001A DrawEnd2            dd ?                                    ; struct offset (_ODraw_) 
0000001E Type                dd ?                                    ; XREF: AdvMgr_MauseMoove+219/r 
0000001E                                                             ; AdvMgr_MauseMoove+2A6/r ... 
00000022 SubType             dw ?                                    ; XREF: AdvMgr_DwellingVisit+24/r 
00000024 DrawNum             dw ?                                    ; XREF: AdvMap_DeleteObjectOnMap+D/r 
00000026 _MapItem_           ends
  
 
Судя по исходникам ERM, _MapItem_ тут как-то используется, но логика мне не совсем понятна. Помогите пожалуйста разобраться   
Code: 
 int  v; 
... 
_MapItem_ *mip=GetMapItem2(MixPos); 
_CMGarden_ *stp=(_CMGarden_ *)mip; 
... 
case 'N': // N# установить номер (5) 
v=stp->Number;  
Apply(&v,4,Mp,0);  
stp->Number=(Word)v;  
break; 
... 
// первые 4 байта для магического сада - настройка в 4C 
struct _CMGarden_{ // type 0x37  
  unsigned  Number  :  5; 
  unsigned _u1      :  1; 
  unsigned  ResType :  4; // всегда = 5 
  unsigned  HasRes  :  1; // =1 - есть ресурс 
  unsigned _u2      : 21; 
};
  
			 
			
			
  
Создал новый глобальный мод: WoG Ultra Edition
			
		 |  
	 
 | 
	| 05.02.2021 15:20 | 
	
		
	 | 
	
		
		XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (05.02.2021 16:42)Raistlin Wrote:  если номер объекта хранится в последнем поле, то почему тогда его нужно считывать из первого байта? 
В последнем - номер объекта, который моддерам не нужен, это не игровые данные (это для рендера). Внимательнее изучайте структуры (или используйте русские - я пользуюсь русскими).
 
В первом - сетап или по-нашему - ключевое слово, где находятся сами игровые настройки объекта (разработчики пожмотились на них, увы, поэтому там всё жестко лимитировано, но формат вполне изменяем, например в MoP 2.19 некоторые ключевые слова изменены, чтобы хранить в них больше информации).
			  
			
			
			
		 |  
	 
 | 
	| 05.02.2021 17:11 | 
	
		
	 | 
	
		
		XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (05.02.2021 17:17)Raistlin Wrote:  Русские структуры? А где их можно найти, если не секрет? 
В исходниках MoP. Например мапитем:
 
Code: 
 struct MapItem 
      контрольное_слово dd ?    ;0 
      тип_почвы db ?        ;4 
      подтип_почвы db ?        ;5 
      тип_реки db ?        ;6 
      подтип_реки db ?        ;7 
      тип_дороги db ?        ;8 
      подтип_дороги db ?    ;9 
      db ?            ;A 
      db ?            ;B 
      Зеркало db ?        ;C 
      маска_доступа db ?    ;D бит 1 - проходимость, 2 - water edge see 0x4FEA32, 10h - вход 
      db 16 dup (?); H3Vector<H3ObjectDraw> objectDrawing - a vector of DEFs to draw on this tile 
      тип_объекта dd ?        ;1E 
      подтип_объекта dw ?    ;22 = _AdvMgr_.monsterCountBattle 
      номер_отрисовки dw ?    ;24 = _AdvMgr_.monsterTypeBattle 
ends 
 
;Зеркало: 
;tileH      0x01 -    tileV    0x02 
;riverH        0x04 -    riverH    0x08 
;roadH        0x10 -    roadV    0x20 
;can dig    0x40 
;animated    0x80 (river, water or lava terrain)
  
			 
			
			
			
		 |  
	 
 | 
	| 05.02.2021 17:26 | 
	
		
	 | 
	
		
		Raistlin 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 1344 
	
		
	 | 
	
		
 | 
	| 05.02.2021 18:53 | 
	
		
	 |