IPB

Здравствуйте, гость ( Вход | Регистрация )

23 страниц V  « < 18 19 20 21 22 > »   
Reply to this topicStart new topic
> Обсуждение инженерного анализа
feanor
сообщение 02 Sep 2017, 11:35
Сообщение #381

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




Цитата
То есть можно ли, например, отследить обращения к данному поле в объекте Герой (Магия Земли) ?
Hardware breakpoint в Olly.


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Ben
сообщение 02 Sep 2017, 12:55
Сообщение #382

Power Member
Сообщений: 198
Спасибо сказали: 134 раза




Цитата(feanor @ 02 Sep 2017, 11:35) *
Цитата
То есть можно ли, например, отследить обращения к данному поле в объекте Герой (Магия Земли) ?
Hardware breakpoint в Olly.


А можно пример для чайников со скриншотом именно для данной задачи ? rolleyes.gif

Подозреваю, впрочем, что это будет

0041C659 call Hero_GetSchoolLevelOfSpell

в процедуре 0041C610 Cast_AdventureMagic
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 02 Sep 2017, 13:53
Сообщение #383

Immortal
Сообщений: 589
Спасибо сказали: 891 раз




Я думаю где-то тут 0x43052A


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Ben
сообщение 02 Sep 2017, 18:29 (Сообщение отредактировал Ben - 02 Sep 2017, 18:31)
Сообщение #384

Power Member
Сообщений: 198
Спасибо сказали: 134 раза




Цитата(igrik @ 02 Sep 2017, 13:53) *
Я думаю где-то тут 0x43052A


Да вроде нет. На Си коде тут все банально:

Код
JumpHero((void *)pAdvManager, (_Hero_ *)v6, *(_DWORD *)v16, 0, 1, 0);
      v55 = GetTypeOfLandModifierUnderHero((_Hero_ *)v6);
      v56 = CalcSpellCost4Hero((char *)v6, 9, 0, v55);
      sub_004D9540((_Hero_ *)v6, v56);
      v57 = GetTypeOfLandModifierUnderHero((_Hero_ *)v6);
      v58 = *(_DWORD *)(v6 + 77) - (Hero_GetSchoolLevelOfSpell((_Hero_ *)v6, 9, v57) != 3 ? 300 : 200);
      *(_DWORD *)(v6 + 77) = v58;
      if ( (signed int)v58 < 0 )
        *(_DWORD *)(v6 + 77) = 0;


Просто проверяется, есть ли мувпойнты.
Но инфа полезная, спасибо. 300 и 200 тут тоже надо подправить. Нелегко делать корректно работающие моды.
Go to the top of the pageAdd Nick
 
+Quote Post
Ben
сообщение 02 Sep 2017, 19:15 (Сообщение отредактировал Ben - 02 Sep 2017, 19:56)
Сообщение #385

Power Member
Сообщений: 198
Спасибо сказали: 134 раза




Возможно, вообще мой код для Городского портала только для человека и работает.

Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 02 Sep 2017, 19:41
Сообщение #386

😸🧡✊✌️
Сообщений: 16 495
Спасибо сказали: 3401 раз




Цитата(Ben @ 02 Sep 2017, 19:15) *
Возможно, вообще мой код для Городского портала только для человека и работает.
Скорее всего. Компу же диалог выбора города не показывают.


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.
Go to the top of the pageAdd Nick
 
+Quote Post
AlexSpl
сообщение 02 Sep 2017, 23:46
Сообщение #387

Immortal
Сообщений: 798
Спасибо сказали: 555 раз




Посмотрите условный переход по адресу 56B3B4h. Далее, для порядка стоимость заклинания в MP нужно также изменить по адресам 56B5AAh и 430532h (LoHook, стоимость в eax).


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Ben
сообщение 14 Sep 2017, 16:57
Сообщение #388

Power Member
Сообщений: 198
Спасибо сказали: 134 раза




Выложил обновленный код и DLL в соответствующей теме.
AI теперь в курсе введенных изменений, применяет Городской портал для перемещения в нужный город, даже не имея навыка Магия Земли.
Большое спасибо AlexSpl !


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
igrik
сообщение 14 Sep 2017, 18:22 (Сообщение отредактировал igrik - 14 Sep 2017, 19:19)
Сообщение #389

Immortal
Сообщений: 589
Спасибо сказали: 891 раз




to Ben:
Цитата
Ну вот, уже не первый раз встречаюсь с тем, что в ERM много полезной информации.
Но заставить себя изучать ERM не могу
Мне проще писать плагины на C++, чем вникнуть в ERM.

В ERM вникать не нужно. Для сода/хоты он НЕприменим. Только для вога или эры.
Но справку юзать однозначно стоит. Там масса информации, которую можно применять и для сода/хоты: Арты, объекты, герои, номера зданий, гексы поля боя и т.п. Они одни для всех версий героев 3.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Ben
сообщение 28 Sep 2017, 10:31 (Сообщение отредактировал Ben - 28 Sep 2017, 18:36)
Сообщение #390

Power Member
Сообщений: 198
Спасибо сказали: 134 раза




Альтернативный вариант плагина (http://forum.df2.ru/index.php?s=&showtopic=30848&view=findpost&p=744199)
(тогда в подсказке по навыку можно будет написать почти то же самое что и в оригинале -
что навык дает дополнительные 5/10/20% опыта за каждый уровень, достигнутый героем)

Код
    #include "..\..\include\homm3.h"

        Patcher* _P;
        PatcherInstance* _PI;

        static _bool_ plugin_On = 0;

    
       int __stdcall changeLearningPower(LoHook* h, HookContext* c)
       {
          char learningSkill = *(char*)(c->ecx + 0xDE);
          _word_ heroLevel = *(int*)(c->ecx + 0x55);

          if(learningSkill == 1)
           *(float*)(c->ebp - 4) = (float)(heroLevel * 0.05);
          if(learningSkill == 2)
           *(float*)(c->ebp - 4) = (float)(heroLevel * 0.10);
          if(learningSkill == 3)
           *(float*)(c->ebp - 4) = (float)(heroLevel * 0.20);

          return EXEC_DEFAULT;
       }

        BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
        {
           if ( DLL_PROCESS_ATTACH == ul_reason_for_call )
           {
              if ( !plugin_On )
              {
                 plugin_On = 1;
                 _P = GetPatcher();
                 _PI = _P->CreateInstance("HD.Plugin.LearningSkill");
              
              _PI->WriteLoHook(0x4E4ACD, changeLearningPower);
              }
           }
          
           return TRUE;
        }


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
mr_bobblehead
сообщение 01 Dec 2017, 18:09
Сообщение #391

Newbie
Сообщений: 6
Спасибо сказали: 2 раза




Доброе время суток!

Пытаюсь разобраться с созданием диалогов по примеру igrik, но компилятор постоянно выдает ошибку:



Подскажите пожалуйста, что я делаю не так?


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 01 Dec 2017, 23:18
Сообщение #392

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




mr_bobblehead
Вряд ли смогу помочь по существу, но, чтобы тебе могли ответить igrik, Berserker, MoP - надо хотя бы написать - какую версию Эры ты используешь, какую версию патчера какой компилятор ты используешь? Вроде бы общепринят Microsoft Visual C++. На Embarcadero Visual Studio я не смог собрать простейшей, казалось бы, dll-ки, написанной под майкрософтовский синтаксис.
Ну и код, само собой, не помешал бы.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
mr_bobblehead
сообщение 02 Dec 2017, 03:01
Сообщение #393

Newbie
Сообщений: 6
Спасибо сказали: 2 раза




Цитата(hippocamus @ 01 Dec 2017, 23:18) *
mr_bobblehead
Вряд ли смогу помочь по существу, но, чтобы тебе могли ответить igrik, Berserker, MoP - надо хотя бы написать - какую версию Эры ты используешь, какую версию патчера какой компилятор ты используешь? Вроде бы общепринят Microsoft Visual C++. На Embarcadero Visual Studio я не смог собрать простейшей, казалось бы, dll-ки, написанной под майкрософтовский синтаксис.
Ну и код, само собой, не помешал бы.


VS 2015

#include <windows.h>

#include "..\..\include\patcher_x86_commented.hpp"
#include "..\..\include\HotA\HoMM3.h"
#include "..\..\include\era.h"

Patcher* _P;
PatcherInstance* _PI;
static _bool_ plugin_On = 0;

void __fastcall Scroll_TestDlg_Callback(int klick_id, _Dlg_* dlg)
{
dlg->Redraw(TRUE);
}

void New_TestDlg_Show(int x, int y)
{
_Dlg_* dlg = _CustomDlg_::Create(-1, -1, 297, 215, DF_SCREENSHOT | DF_SHADOW, NULL);

dlg->Run();
dlg->Destroy(TRUE);
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
if (!plugin_On)
{
plugin_On = 1;
_P = GetPatcher();
_PI = _P->CreateInstance("HD.Plugin.TestPlugin");
}
break;

case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
feanor
сообщение 02 Dec 2017, 12:48
Сообщение #394

laughed as one fey
Сообщений: 12 167
Спасибо сказали: 20605 раз




Ох, "Error LNK2001". Спасибо С++ за еще один день разрешения зависимостей.

Если мне не изменяет память, надо явно добавить в проект используемые .h и .cpp файлы из инклудов.

Цитата
H2SW_creatures

Я даже удивлен!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 02 Dec 2017, 14:35
Сообщение #395

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




Цитата
HotA\HoMM3.h

Файл есть в открытом доступе?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
mr_bobblehead
сообщение 02 Dec 2017, 15:33
Сообщение #396

Newbie
Сообщений: 6
Спасибо сказали: 2 раза




Цитата(feanor @ 02 Dec 2017, 12:48) *
Ох, "Error LNK2001". Спасибо С++ за еще один день разрешения зависимостей.

Если мне не изменяет память, надо явно добавить в проект используемые .h и .cpp файлы из инклудов.

Цитата
H2SW_creatures

Я даже удивлен!


Ковырялся в исходниках, извините =).gif Спасибо, я попробую.

Цитата(Berserker @ 02 Dec 2017, 14:35) *
Цитата
HotA\HoMM3.h

Файл есть в открытом доступе?


Да, правда пришлось хорошенько поискать.
Go to the top of the pageAdd Nick
 
+Quote Post
hippocamus
сообщение 02 Dec 2017, 21:15
Сообщение #397

допустим, мяў
Сообщений: 24 129
Спасибо сказали: 13439 раз




Цитата(mr_bobblehead @ 02 Dec 2017, 15:33) *
Цитата(Berserker @ 02 Dec 2017, 14:35) *
Цитата
HotA\HoMM3.h

Файл есть в открытом доступе?


Да, правда пришлось хорошенько поискать.
интересно узнать дату файла.


--------------------
Вокруг столько фильмов, книг, музыки - а природа какая невероятная!
Если тебе скучно жить - ты совсем дурак. (Татьяна Черниговская)
Go to the top of the pageAdd Nick
 
+Quote Post
mr_bobblehead
сообщение 03 Dec 2017, 02:55
Сообщение #398

Newbie
Сообщений: 6
Спасибо сказали: 2 раза




Цитата(hippocamus @ 02 Dec 2017, 22:15) *
Цитата(mr_bobblehead @ 02 Dec 2017, 15:33) *
Цитата(Berserker @ 02 Dec 2017, 14:35) *
Цитата
HotA\HoMM3.h

Файл есть в открытом доступе?


Да, правда пришлось хорошенько поискать.
интересно узнать дату файла.


23.03.2013
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 03 Dec 2017, 16:37
Сообщение #399

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




Команда Хоты обновлённый файл не выкладывала, Хиппо? Можете загрузить куда-нибудь на обменник?


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Sav
сообщение 03 Dec 2017, 17:24
Сообщение #400

Immortal
Сообщений: 9 448
Спасибо сказали: 4001 раз




Команда не выкладывала и не передавала для распространения исходники HotA или какие-то их части, равно как и реверсерские базы данных (и не планирует в будущем). Некогда временно выкладывались только исходники HD и BattleFigures с заголовочными файлами, схожими с обсуждаемыми здесь и практически идентичными между собой. В обсуждаемых файлах, однако, информации несколько больше, чем было там, и по всем признакам, это утечка именно из исходников HotA. Впрочем, дополнительная информация, по сравнению с действительно выкладывавшимися публично заголовочниками, не очень существенна.
Go to the top of the pageAdd Nick
 
+Quote Post

23 страниц V  « < 18 19 20 21 22 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 20 December 2025 - 17:07
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика