Объявления

Друзья, если не получается зарегистрироваться, напишите на почту 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, 01:16

Скрины лучше отправьте...
Вернуться к началу

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

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

Сообщение RoseKavalier » 23 ноя 2021, 01:19

AlexSpl писал(а):

Цитата:
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]? Если в подсчётах не ошибся.


For the former, I have not found a solution ever sadly. IDA likes to apply enums with a heavy hand like butter.
Can you give me the address of the second snippet?
Вернуться к началу

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

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

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

А вы меняли что? тип поля SpellDuration? Почему-то я поставил его тип SpellID, но enum для смещений в квадратных скобках не работает..(а жаль)
Вернуться к началу

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:25

sub @ 0x442770. public: double army::get_unit_combat_value(long,long,bool,army const *)const proc near. Maybe it's because of two different fields Hero1 and Hero2 instead of array Hero[2]?

Нет, я уже открыл базу из бэкапа (чистую). В Вашей базе уже SUMMON_BOAT вместо 0.

Всё, допёр :smile18: Для SpellDuration выставлен тип SpellID вместо int.
Последний раз редактировалось AlexSpl 23 ноя 2021, 01:28, всего редактировалось 1 раз.
Вернуться к началу

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

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

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

No. It's not their fault. Hero1 and Hero2 in my opinion are easier to read yet this is the same as Hero[2] but looks more original since in the original code there were two separated "class hero&" params.
Вернуться к началу

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

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

Сообщение RoseKavalier » 23 ноя 2021, 01:29

Yes, use Hero[2].
Also a neat trick sometimes is T[1] to trick IDA in showing proper decompilation.
Вернуться к началу

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:29

И получается мегакрасиво, как я привык и практикую:

Код: Выделить всё
if ( shoot )
{
  if ( !this->SpellDuration[AIR_SHIELD] )
    goto LABEL_7;
  AirShield_Multiplier = this->AirShield_Multiplier;
}
else
{
  if ( !this->SpellDuration[SHIELD] )
    goto LABEL_7;
  AirShield_Multiplier = this->Shield_Multiplier;
}
Вернуться к началу

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

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

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

Кстати наши мнения насчет совместной работы над базой разошлись. Я и RoseKavalier считаем, что следует создать сервер и на нем работать. Как будем выходить из спора?

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

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:37

Пока не вижу альтернативы тому, чтобы изменения согласовывались и делал их кто-то один (необязательно всегда один и тот же человек, конечно), а иначе будет куча проблем.
Вернуться к началу

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

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

Сообщение RoseKavalier » 23 ноя 2021, 01:38

Also a chat room :smile1:
Вернуться к началу

Пред.След.

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

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

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