Объявления
Поздравляем
Roman2211


Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru.
Я оторву свою задницу от всех дел и обязательно Вас активирую! :smile10:
Добро пожаловать на геройский форум! :smile25:

База данных IDA от void17

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 16 дек 2021, 19:48

RoseKavalier писал(а):

Someone at NWC was also a fan of The Simpsons it seems
Код: Выделить всё
0x53ec,PlayDoh,0x43d5
0x53ee,PlayYeah,0x43d5
0x53f0,DohPlayedThisRound,0x43d5
0x53f2,YeahPlayedThisRound,0x43d5

bruh lmao.

Oh, RoseKavalier, btw, can you try to dump all of the function parameters name pls as well as the types?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: База данных IDA от void17

Сообщение AlexSpl » 16 дек 2021, 19:49

Но мы бы так не продвинулись, если бы не база Dreamcast :smile2:
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 16 дек 2021, 19:55

AlexSpl писал(а):

Цитата:
Любопытство — двигатель прогресса, причем явно Водород+Кислородный, такую тягу дает-то...

Я Вам больше скажу. Это game over :smile11: Осталось только согласовать отличия между RoE и SoD - и у нас эквивалент исходного кода.


Я вот подумывал этим летом заняться этим. Мне все говорят, да брось ты, да офигеешь ты... А вот я над другим еще думаю. Даже если перепишу, надо с хотоацами и воговцами согласовать как-то. Вот насчет воговцев я думаю меня поголовно все поддержат,
 
лол, нативно компилировать против ассемблерных извращений..
а хотовцы как отреагируют, интересно. Явно же не захотят переводиться на новый "движок".
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: База данных IDA от void17

Сообщение AlexSpl » 16 дек 2021, 19:58

Цитата:
Я вот подумывал этим летом заняться этим. Мне все говорят, да брось ты, да офигеешь ты...

Это было бы здорово, но уже есть всё для того, чтобы писать безошибочный код, т.е. не сомневаться, правильно ли ты распознал параметры и т.п. Я бы лично не стал тратить время, особенно если учесть, что у кого-то есть исходный код SoD. Для моддинга теперь присутствует вся необходимая инфа и инструменты :smile21: Только пили плагины.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: База данных IDA от void17

Сообщение AlexSpl » 16 дек 2021, 20:10

Красота:

Код: Выделить всё
struct type_AI_combat_parameters
{
  int lowest_attack;                   // 0x00
  int lowest_defense;                  // 0x04
  bool kills_only;                     // 0x08
  bool simulated;                      // 0x09
  int friendly_combat_value;           // 0x0C
  int enemy_combat_value;              // 0x10           
  int awake_friendly_value;            // 0x14
  int awake_enemy_value;               // 0x18
  int rounds_left;                     // 0x1C
  int our_group;                       // 0x20
  int enemy_group;                     // 0x24
                                       // 0x28
  inline void simulate_attack(Army* current_army, int& our_hits, Army* enemy, int& enemy_hits, bool ranged, int distance = 0) const {
     CALL_7(void, __thiscall, 0x435600, this, current_army, &our_hits, enemy, &enemy_hits, ranged, distance);
  }
  inline int get_exchange_effect(Army* const current_army, Army* const enemy, int distance = 0) const {
     return CALL_4(int, __thiscall, 0x435A10, this, current_army, enemy, distance);
  }
};

Это ещё без unsigned :smile1: side - это group и unsigned int.

А вот уже с правильными типами:

Код: Выделить всё
struct type_AI_combat_parameters
{
   unsigned int lowest_attack;         // 0x00
   unsigned int lowest_defense;        // 0x04
   bool kills_only;                    // 0x08
   bool simulated;                     // 0x09
   unsigned int friendly_combat_value; // 0x0C
   unsigned int enemy_combat_value;    // 0x10           
   unsigned int awake_friendly_value;  // 0x14
   unsigned int awake_enemy_value;     // 0x18
   unsigned int rounds_left;           // 0x1C
   unsigned int our_group;             // 0x20
   unsigned int enemy_group;           // 0x24
                                       // 0x28
   inline void simulate_attack(Army* current_army, int& our_hits, Army* enemy, int& enemy_hits, bool ranged, int distance = 0) const {
      CALL_7(void, __thiscall, 0x435600, this, current_army, &our_hits, enemy, &enemy_hits, ranged, distance);
   }
   inline int get_exchange_effect(Army* const current_army, Army* const enemy, int distance = 0) const {
      return CALL_4(int, __thiscall, 0x435A10, this, current_army, enemy, distance);
   }
};
Последний раз редактировалось AlexSpl 16 дек 2021, 20:16, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 16 дек 2021, 20:12

Хотя, мне лично моды типа новых городов и прочего не особо интересны. Как по мне, Shadow of Death исчерпывающая версия героев, доработать бы RMG(кстати я его если и буду писать, то с нуля. Потому что и так оригинальный баганный, да еще и хрен его разберешь...) и ИИ и впринципе можно катать до бесконечности, мне лично не надоест.

У меня были идеи следующие по поводу RMG:
Сделать разные условия победы, сделать больше типов зон, сделать нормальный водный шаблон в конце концов. Даже в ХоТе вода фактически пустая. Хотелось бы там понаделать островков с сокровищами, захватывающих рифов и прочего..

Насчет ИИ вообще столько идей, что словами не описать, а может мне просто лень.
Ну самое глобальное это пожалуй была идея сделать ИИ, работающего действительно в команде. Сделать так, чтобы игроки ИИ активно совместно обменивались войсками для походов, расчисток, чтобы распределяли роли между собой, чтобы грамотно качались и т.д.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 16 дек 2021, 20:13

AlexSpl писал(а):

Красота:

Код: Выделить всё
struct type_AI_combat_parameters
{
  int lowest_attack;                   // 0x00
  int lowest_defense;                  // 0x04
  bool kills_only;                     // 0x08
  bool simulated;                      // 0x09
  int friendly_combat_value;           // 0x0C
  int enemy_combat_value;              // 0x10           
  int awake_friendly_value;            // 0x14
  int awake_enemy_value;               // 0x18
  int rounds_left;                     // 0x1C
  int our_group;                       // 0x20
  int enemy_group;                     // 0x24
                                       // 0x28
  inline void simulate_attack(Army* current_army, int& our_hits, Army* enemy, int& enemy_hits, bool ranged, int distance = 0) const {
     CALL_7(void, __thiscall, 0x435600, this, current_army, &our_hits, enemy, &enemy_hits, ranged, distance);
  }
  inline int get_exchange_effect(Army* const current_army, Army* const enemy, int distance = 0) const {
     return CALL_4(int, __thiscall, 0x435A10, this, current_army, enemy, distance);
  }
};

Это ещё без unsigned :smile1: side - это group и unsigned int.


А вы из дримкаста взяли поля?
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: База данных IDA от void17

Сообщение AlexSpl » 16 дек 2021, 20:16

Да, я выше даже поправил типы. Там почти все unsigned int. И такая инфа есть для любой структуры или класса :smile20: Методы, естественно, не все, а только те, которые нужны плагину NewSpells.
Последний раз редактировалось AlexSpl 16 дек 2021, 20:18, всего редактировалось 1 раз.
Вернуться к началу

offlineАватара пользователя
void_17  
имя: имя
Ветеран
Ветеран
 
Сообщения: 548
Зарегистрирован: 25 апр 2021, 15:05
Откуда: Оттуда
Пол: Мужчина
Поблагодарили: 132 раз.

Re: База данных IDA от void17

Сообщение void_17 » 16 дек 2021, 20:17

Ну, единственное, стоит учитывать новведения SoD. А так да, впринципе. Я думаю с нас офигеют даже хотовцы, явно же у них не абсолютно все разобрано.
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5587
Зарегистрирован: 17 сен 2010, 12:58
Пол: Мужчина
Награды: 14
Высшая медаль (1) Победителю турнира по HMM1_TE (2) Победителю этапа по HMM1 (1) Победителю этапа по HMM2 (1) Лучшему из лучших (1) 2 место 1 этапа по HMM1 (1)
3 место 1 этапа по HMM1 (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (2) Победителю турнира по KB (1) Грандмастер оффлайн-турниров (1) Боевой шлем (1)
Поблагодарили: 2185 раз.

Re: База данных IDA от void17

Сообщение AlexSpl » 16 дек 2021, 20:37

Преобразованный класс type_AI_spellcaster:

Код: Выделить всё
class type_AI_spellcaster
{
public:
   type_AI_spellcaster* (__thiscall** VMT)(void*, char); // 0x000
   Hero* current_hero;                                   // 0x004
   Hero* enemy_hero;                                     // 0x008
   unsigned int our_group;                               // 0x00C
   unsigned int enemy_group;                             // 0x010
   unsigned int enemy_can_attack;                        // 0x014
   unsigned int can_be_attacked;                         // 0x018
   bool win_likely;                                      // 0x01C
   bool is_creature_spell;                               // 0x01D
   type_AI_combat_parameters estimate;                   // 0x020
   type_AI_spellcaster *enemy_caster;                    // 0x048
   bool owns_enemy_caster;                               // 0x04C
   AI_ArmyInfo melee_enemies[20];                        // 0x050
   AI_ArmyInfo ranged_enemies[20];                       // 0x190
   AI_ArmyInfo worst_enemies[20];                        // 0x2D0
                                                         // 0x410
   inline int get_attack_skill_value(Army* const army, Army* const enemyArmy, int spellDuration, int effect) const {
      return CALL_5(int, __thiscall, 0x437450, this, army, enemyArmy, spellDuration, effect);
   }
   inline int get_defense_skill_value(Army* const army, int spellDuration, int effect) const {
      return CALL_4(int, __thiscall, 0x438560, this, army, spellDuration, effect);
   }
};

Методы пока не менял. Но уже видна сила оригинальных названий полей :smile20:
Вернуться к началу

Пред.След.

Вернуться в Общий раздел

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron