Объявления
Поздравляем
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 » 23 ноя 2021, 00:10

Цитата:
Надо бы все эти функции обозвать trash_address_0..9(), где 0..9 - степень двойки, а заодно все "мусорные" dword_address_trash_0..9 по крайней мере до выяснения их назначения (игра их точно не использует).


Да, в IDA есть скрипты, которые позволяют это автоматически сделать. Еще бы научиться их самому делать, надо документацию IDA Pro читать.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

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

Сообщение RoseKavalier » 23 ноя 2021, 00:17

Wasn't Era's Dbgmap produced by Sav? If so, then nobody has a name for that specific function. It's just a dead end that serves no purpose as the result is not referenced anywhere else in the exe.

Exchanging a database for collaborative work would be the least preferable option; if that would be selected then personally I would not contribute to the database because it is too cumbersome.
Ideal would be setting up a central server and using IDArling or similar.
In between would be logging the actions undertaken during the session and saving to an external file, which other users may apply by running via a script.

For big work you need to be set up right.
Вернуться к началу

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

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

Сообщение void_17 » 23 ноя 2021, 00:21

Цитата:
Ideal would be setting up a central server and using IDArling or similar


That's my point. As I said, moving about 90 MB of data every time among each other is annoying. Server is the best decision.
Последний раз редактировалось void_17 23 ноя 2021, 00:36, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение void_17 » 23 ноя 2021, 00:34

@ХЕРОМАНТ,
а что с моим тредом на вогфоруме стало?
Вернуться к началу

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 » 23 ноя 2021, 00:42

Цитата:
That's my point. As I said, moving about 90 MB of data every time among each other is annoying. Server is the best decision.

А как распределять время работы над базой? Одновременно же не поработаешь. Оптимально постить какие-то изменения отдельно и в случае их одобрения после бурного :smile16: обсуждения участниками проекта вносить в базу.

Код: Выделить всё
if ( (_BYTE)shoot )
{
  if ( this->SpellDuration[AIR_SHIELD] == SUMMON_BOAT )
    goto LABEL_7;
  AirShield_Multiplier = this->AirShield_Multiplier;
}
else
{
  if ( this->SpellDuration[SHIELD] == SUMMON_BOAT )
    goto LABEL_7;
  AirShield_Multiplier = this->Shield_Multiplier;
}

Как избавиться от перечислителя? SUMMON_BOAT -> 0? Правый клик -> Decimal не работает, можно выбрать только значение из другого enum. Признаюсь, никогда не читал мануал по IDA (не было необходимости), но когда понимаешь, что не можешь исправить такие простейшие вещи, хочется его покурить :smile1:

Как превратить это (нажал Show Casts, так легче понимать, что происходит):

Код: Выделить всё
if ( *(char *)(*((_DWORD *)&gpCombatManager->Hero1 + v17) + 221) > 1 )
      v42 = v42 + v42;

в gpCombatManager->Hero[Side]->second_skill[ARTILLERY]? Если в подсчётах не ошибся.
Последний раз редактировалось AlexSpl 23 ноя 2021, 01:03, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение void_17 » 23 ноя 2021, 00:58

Не знаю, у меня работает. Попробуйте сначала переключить на hex, потом на decimal. Если и это не помогло, нажмите "Y", наберите нужный тип.
Вернуться к началу

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 » 23 ноя 2021, 01:05

В том-то и дело, что нет Hexadecimal, а Decimal не работает :smile5: Примеры из функции double __thiscall army::get_unit_combat_value(const army *this, int a2, int a3, int shoot, int a5), если что.
Вернуться к началу

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

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

Сообщение void_17 » 23 ноя 2021, 01:11

Скорее всего это известный баг IDA. Короче если у одной переменной тип поменять, другая меняется. Перезагрузите IDA с нуля.
Вернуться к началу

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

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

Сообщение void_17 » 23 ноя 2021, 01:13

gpCombatManager (gp — global pointer если что) поставьте тип "combatManager*", почему-то он слетел у вас. И Hero1 поставьте тип "hero*".

upd.: База не под рукой сейчас, т.к. я на парах. Приеду — посмотрю
Последний раз редактировалось void_17 23 ноя 2021, 01:15, всего редактировалось 1 раз.
Вернуться к началу

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 » 23 ноя 2021, 01:15

Поставил (Set item type...). Ничего не поменялось.

Цитата:
upd.: База не под рукой сейчас, т.к. я на парах. Приеду — посмотрю

OK.

Короче, открыл базу из бэкапа (чистую Вашу), в функции почему SUMMON_BOAT вместо 0 :smile5:
Последний раз редактировалось AlexSpl 23 ноя 2021, 01:23, всего редактировалось 1 раз.
Вернуться к началу

Пред.След.

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

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

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