| Berserker   
   
   Posts: 16785
 
 | 
			| 
 
				 (30.03.2015 23:17)igrik Wrote:  
Обновляет весь диалог и при любом разрешении экрана (с HD и без него). В том числе и артыPS: не без помощи Berserker'a
 
Игрик, я верно твою функцию преобразовал?
 
Code:
 MOV ECX, [$6A3D90]PUSH 0
 MOV EAX, $5AF4E0
 CALL EAX
 
 MOV ECX, [$6A3D90]
 PUSH 1
 MOV EAX, $5AF4E0
 CALL EAX
 
 MOV ECX, [$6A3D90]
 MOV EAX, $5B1200
 CALL EAX
 
 MOV ECX, [$6A3D90]
 MOV ECX, [ECX + 56]
 MOV EAX, [ECX]
 MOV EAX, [EAX + 20]
 PUSH $0000FFFF
 PUSH $FFFF0001
 PUSH 0
 CALL EAX
 
 MOV ECX, [$6992D0]
 PUSH DWORD [$40144F] // 600
 PUSH DWORD [$401448] // 800
 PUSH 0
 PUSH 0
 MOV EAX, $603190
 CALL EAX
 
 Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
 Поддержать проект
 
 |  | 
	| 25.04.2015 01:01 |  | 
	
		| igrik   
   Posts: 2821
 
 | 
			| 
 
				ток увидел сообщение   
Я не знаю, Берс. Я в этом не шарю
 ; 0 - Голова; 1 - Плечи
 ; 2 - Шея
 ; 3 - Правая рука
 ; 4 - Левая рука
 ; 5 - Торс
 ; 6 - Левое кольцо / Правое кольцо [замки = 0...2]
 ; 7 - Ноги
 ; 8 - Разное 5...1 [замки = 0...5]
 ; 9 - Баллиста
 ;10 - Тележка с боеприпасами
 ;11 - Палатка первой помощи
 ;12 - Катапульта (фигушки, я всегда с вами)
 ;13 - Книга Заклинаий
thx gamecreator
			
 game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
 
				
(This post was last modified: 27.05.2015 16:45 by igrik.)
 |  | 
	| 27.05.2015 13:44 |  | 
	
		| gamecreator   
   Posts: 7107
 
 |  | 
	| 15.08.2015 18:53 |  | 
	
		| gamecreator   
   Posts: 7107
 
 |  | 
	| 25.08.2015 01:40 |  | 
	
		| feanor   
 Posts: 624
 
 | 
			| 
 
				
Code:
 NOALIGN struct _BattleStack_ : public _Struct_ // размер 0x548{
 _byte_ already_attack;    // +0 ?
 _byte_ field_01;        // +1 ?
 _byte_ field_02;        // +2 ?
 _byte_ field_03;        // +3 ?
 _byte_ field_04[4];        // +4 ?
 
 _int32_ all_stacks_count; // +8  //полное число стеков у игрока
 
 _byte_ field_0C[4];        // +12 0x0C
 _dword_ field_10;        // +16 0x10  //=-1 после атаки и/или ответа(????)
 _byte_ field_14[8];        // +20 0x14  ?
 
 _int32_ aim_to_move_or_shoot; // 28 +0x1C  //позиция на поле боя (куда бежать/стрелять)
 _byte_ fireshield;        // +32 0x20 // огненный щит
 
 _byte_ field_21[7];        // +33 0x21  ?
 
 _int32_ clone_index;    // +40 0x28 //номер стэка клона этого
 
 _byte_ field_2C[4];        // +44 0x2C  ?
 _dword_ field_30;        // +48 0x30  ?
 
 _int32_ creature_id;                // +52 0x34 // тип монстра
 _int32_ hex_ix;            // +56 0x38  //позиция на поле боя
 _int32_ def_group_ix;    // +60 0x3C
 _int32_ def_frame_ix;    // +64 0x40
 
 _dword_ second_hex_is_right;        // +68 0x44 //(=1) сдвиг в сторону второй занятой клетки для монстра с двумя клетками
 _dword_ field_48;        // +72 0x48 ?
 
 _int32_ count_current;    // +76 0x4C // число монстров
 _int32_ count_before_attack; // +80 +0x50 // число монстров до удара по ним в тек. атаку
 
 _dword_ field_54;        // +84 0x54 ?
 
 _int32_ lost_hp;        // +88 0x58 потери здоровья последнего монстра
 _int32_ army_slot_ix;    // +92 0x5C номер слота of _Army_ (0...6), -1 - будет удален после битвы
 _int32_ count_at_start;    // +96 0x60 число монстров в начале битвы
 
 _dword_ field_64;        // +100 0x64 ?
 
 _dword_ anim_value;        // +104 0x68 = cranim.f[15] при инициализации
 _int32_ full_hp;        // +108 0x6C полное здоровье (исп. как база для лечения)
 
 _bool32_ field_70;        // +112 0x70 ?
 
 //////////////////////////////////////////////////////////////////////////////////
 _CreatureInfo_ creature;
 //////////////////////////////////////////////////////////////////////////////////
 //_int_ town;        //+116 0x74
 //_int_ level;        //+120 0x78
 //_char_* sound_name;        //+124 0x7C
 //_char_* def_name;        //+128 0x80
 //_int_ flags;        //+132 0x84
 //_char_* name_single;        //+136 0x88
 //_char_* name_plural;        //+140 0x8C
 //_char_* specification_description;        //+144 0x90
 //_int_ cost_wood;        //+148 0x94
 //_int_ cost_mercury;        //+152 0x98
 //_int_ cost_ore;        //+156 0x9C
 //_int_ cost_sulfur;        //+160 0xA0
 //_int_ cost_crystal;        //+164 0xA4
 //_int_ cost_jems;        //+168 0xA8
 //_int_ cost_gold;        //+172 0xAC
 //_int_ fight_value;        //+176 0xB0
 //_int_ AI_value;        //+180 0xB4
 //_int_ growth;        //+184 0xB8
 //_int_ horde_growth;        //+188 0xBC
 //_int_ hit_points;        //+192 0xC0
 //_int_ speed;        //+196 0xC4
 //_int_ attack;        //+200 0xC8
 //_int_ defence;        //+204 0xCC
 //_int_ damage_min;        //+208 0xD0
 //_int_ damage_max;        //+212 0xD4
 //_int_ shots;        //+216 0xD8
 //_int_ spells_count;        //+220 0xDC
 //_int_ advmap_low;        //+224 0xE0
 //_int_ advmap_high;        //+228 0xE4
 ///////////////////////////////////////////////////////////////////////////////
 
 _byte_ field_E8;        // +232 0xE8  ?
 
 _bool8_ is_1_killed;    // +233 0xE9   =1, если умирал хоть один
 _bool8_ is_killed;        // +234 0xEA   =1, если был убит весь стэк
 
 _byte_ field_EB;        // +235 0xEB  ?
 
 _int32_ current_creatures_spell_id; // +236 0xEC  номер заклинания существа в тек раунде 0x50 Acid breath
 
 _int32_ field_F0;        // +240 0xF0  _byte_=1 перед атакой на него 441434
 
 _int32_ side;            // +244 0xF4  0 - attacker, 1 - defender
 
 _dword_ index_on_side;                // +248 F8 dd = номер стэка у стороны на поле боя
 _dword_ field_FC;        // +252 FC dd = ? что-то с магией
 _dword_ field_100;        // +256 100 dd 43DEA4
 _dword_ field_104;        // +260 104 dd 43DEAD
 _dword_ field_108;        // +264 108 dd
 _dword_ field_10C;        // +268 10C dd
 
 _CreatureAnim_ cr_anim;    // +272 0x110
 _Def_* def;                // +356 0x164 def монстра, загрузка: 43DA8E
 _Def_* def_shot;        // +360 0x168 def выстрела, загрузка: 43DA8E
 _dword_ field_16C;        // +364 0x16С ?
 _Wav_* wav_move;        // +368 0x170 звук перемещения (move), загрузка: 43DA8E
 _Wav_* wav_attack;        // +372 0x174 звук атаки (attk/wnce/shot), загрузка: 43DA8E
 _Wav_* wav_wnce;        // +376 0x178 звук 'колдует' (wnce), загрузка: 43DA8E
 _Wav_* wav_shot;        // +380 0x17C звук выстрела (shot), загрузка: 43DA8E
 _Wav_* wav_kill;        // +384 0x180 звук смерти (kill), загрузка: 43DA8E
 _Wav_* wav_defend;        // +388 0x184 звук обороны (wnce/dfnd), загрузка: 43DA8E
 _Wav_* wav_ext1;        // +392 0x188 звук дополнительный 1 (ext1), загрузка: 43DA8E
 _Wav_* wav_ext2;        // +396 0x18С звук дополнительный 2 (ext2), загрузка: 43DA8E
 
 _dword_ field_190;        // +400 0x190 ?
 
 _int32_ active_spells_count; // +404 0x194 dd = количество уже наложенных заклинаний
 _int32_ active_spell_duration[81]; // +408 0x198  есть заклинание (длительность) или нет
 _int32_ active_spells_power[81]; // +732 0x2DC (сила действия заклинания)
 
 _byte_ field_420[52];    // +1056 0x420 ?
 
 _int32_ retaliations;    // +1108 0x454 // 441B17 (кол-во ответов на атаку 0= не отв. на атаку)// настройка для грифонов 46D6A0
 _int32_ bless_value;    // +1112 0x458 Bless добавка к Max. Damage
 _int32_ curse_value;    // +1116 0x45C Curse убавка к Min. Damage
 _int32_ field_460;        // +1120 0x460 ?
 _int32_ bloodlast_value;// +1124 0x464 Bloodlast добавка к Атаке с бонусами
 _int32_ precision_value;// +1128 0x468 Precision добавка к Атаке с бонусами
 
 _byte_ field_46C[32];    // +1132 0x46C ?
 
 _int32_ king_type;        // +1164 0x48C dd KING_123 тип (1=KING_1,2=KING_2,3=KING_3) //   исп для расчета Slayer. Бонус 8 к Атаке: 0x4421D2
 _int32_ field_490;        // +1168 0x490 dd номер атакера по порядку??? уже атаковал??? (сбрасывается после первого удара)
 _int32_ counerstrike_retaliations; // +1172 0x494 dd кол. доп. ответов на атаку, добавленных Counerstrike заклом
 
 _byte_ field_498[40];    // +1176 0x498 ?
 
 _bool8_ blinded;            // +1216 0x4C0 db Blinded - снизить защиту (сбросить после?) при атаке на него (уст. перед ударом)
 _bool8_ paralized;            // +1217 0x4C1 db Paralized - снизить защиту (сбросить после?) при атаке на него (уст. перед ударом)
 _bool8_ forgetfulness;        // +1218 0x4C2 dd Forgetfulness - уровень (>2 - не может стрелять)
 
 _byte_ field_4C3[25];        // +1219 0x4C3 ?
 
 _int32_ defend_bonus;        // +1244 0x4DC dd = величина бонуса при выборе защиты
 _int32_ faerie_dragon_spell;// +1248 0x4E0 dd заклинание для сказ дракона
 
 _byte_ field_4E4[100];
 
 // +4EC dd 44152A
 // +4F1 db 43DF88
 
 // +514 dd
 // +518 dd -> dd first \ adjusted stacks pointers
 // +51C dd -> dd last  /
 
 // +524 dd
 // +528 dd -> dd first \ adjusted to wich stacks pointers
 // +52C dd -> dd last  /
 
 };
 
				
(This post was last modified: 26.08.2015 01:09 by feanor.)
 |  | 
	| 26.08.2015 01:08 |  | 
	
		| igrik   
   Posts: 2821
 
 |  | 
	| 10.09.2015 18:17 |  | 
	
		| igrik   
   Posts: 2821
 
 | 
			| 
 
				да, ты сам можешь динамически изменять координаты, НО перед вызовом диалога. Как обновлять/перерисовывать диалог на лету я так и не разобрался  (17.07.2015 16:11)gamecreator Wrote:  Ну и не забыть перерисовать диалог:hdlg->0x7299FD(-1
 
!!SN:E7510525/1/-1; вызывает у меня вылет, тут видимо я не так что-то понял
upd: Algor,  если будут вопросы или нужна помощь по этой функции, обращайся. Например можно ее дописать, чтобы прилеплять диалог к правому/ левому/нижнему/верхнему бокам экрана
			
 game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
 
				
(This post was last modified: 11.09.2015 10:23 by igrik.)
 |  | 
	| 10.09.2015 18:41 |  | 
	
		| Bes   
   Posts: 5451
 
 | 
			| 
 
				igrik, может тут есть что-то для обновления?
 |  | 
	| 10.09.2015 19:30 |  | 
	
		| igrik   
   Posts: 2821
 
 |  | 
	| 10.09.2015 19:40 |  | 
	
		| Bes   
   Posts: 5451
 
 | 
			| 
 
				igrik, а обновлять такой смещённый диалог через DL:S уже не помогает? 
ведь это и есть обновление, если грубо    |  | 
	| 10.09.2015 19:47 |  |