Объявления

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

RMG SOD

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 10 янв 2021, 07:34

Цитата:
Any intents to share your findings in the future?

There isn't much to share yet.
And RMG seems to be of no interest to anyone except me.
Вернуться к началу

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

Re: RMG SOD

Сообщение RoseKavalier » 21 янв 2021, 00:36

I plan to look at RMG in the not-so-distant future, anything you found would be appreciated for when I begin expanding h3api's RMG section.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 05 апр 2021, 18:22

Иногда ловлю вылет при генерации карт 00532D1F:
Изображение
Это связано с отрисовкой рек, я эту функцию и все вложенные не трогал.
Не понимаю что вызывает этот вылет.
Параметры функции не смог разобрать, вот ее вызов:
 
Изображение


Если тупо сделать так, то вылета нет:
Код: Выделить всё
   _PI->WriteHexPatch(0x532D1F, "90 90 90 90");


Но с реками вот такая беда:
 
Изображение
Вложения
HD_CRASH_LOG.TXT
(10.52 КБ) Скачиваний: 243
Вернуться к началу

offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5539
Зарегистрирован: 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)
Поблагодарили: 2155 раз.

Re: RMG SOD

Сообщение AlexSpl » 05 апр 2021, 22:34

Смотрите цепочку вызовов: ... sub_5489F0, sub_55F080, sub_4FA910, sub_4FA590, sub_4FAA50, sub_55F060. Может, где-то есть хуки. Знать бы ещё, что в eax, но, видимо, не должно это значение быть отрицательным.
Вернуться к началу

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

Re: RMG SOD

Сообщение RoseKavalier » 06 апр 2021, 20:11

Код: Выделить всё
class type_river_map: TRiverOp::TAbstractMap; // original name, from editor RTTI

struct type_river_map
{
  void* vtable;
  RmgMap* map;
};

int __thiscall type_river_map::GetRiverType_00532D00(type_river_map *this, POINT *p)
{
  return this->map->mapItems[p->x + p->y * this->map->sizeX].tile.riverType;
}

Most likely point is out of bound.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 10 апр 2021, 08:18

Thanks! You're right. There is a point with x=-1; y = -1.
The problem goes form here 00549BA2:
Изображение
I don't understand why this is happening I don't have hooks on this and nested functions and I don't touch the previous tile anywhere.
Fixed it like this (no crashes in 100 generations):
Код: Выделить всё
_LHF_(FixRiver) {
   H3Point* p = (H3Point*)c->esi;
   if (OutBorder(p->x, p->y, &rmg->map)) {
      c->return_address = 0x549BEF;
      return NO_EXEC_DEFAULT;

   }

   return EXEC_DEFAULT;
}
   _PI->WriteLoHook(0x549BA9, FixRiver);

The only idea I have - there is no longer a water tile in the lower right corner, maybe it had an impact.

PS.Once I thought about an algorithm that automatically determines the type of a function parameter, it looks like you already have one :smile1:
Вернуться к началу

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

Re: RMG SOD

Сообщение RoseKavalier » 10 апр 2021, 17:07

Unfortunately there is no such algorithm in my possession, only pattern recognition and using common tools. For RMG work it is a good idea to refer to the mapeditor RTTI as every single class with virtual table will have enough information to determine its original name as well as inheritance pattern. Since there is dynamic_cast in mapeditor, all the rtti information is generated there - not the case in the game itself. However, both implementations use the same exact code (I'm guessing Gus copy-pasted large portions - he was in charge of RMG afaik) so the disassembly is very similar.
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 04 май 2021, 09:21

Ben80 писал(а):

Интересно, что сами создатели Тройки заложили возможности для "официально одобренного моддинга" - имею в виду редактор карт, конечно. Ведь там столько возможностей для включения/выключения заклинаний, героев, артефактов, возможных построек в городах и тд., благодаря чему можно создавать самые различные игровые условия (тн "геймплей"). И эти огромные возможности совершенно не используются при играх на случайных картах (в силу того, что это можно сделать только через редактирование сгенерированной карты, но нет возможности задать все эти опции перед генерацией).

Есть небольшие подвижки в этом направлении.
Вот довольно устаревшая версия дополнительных настроек генерации карты:
 
Изображение

В актуальных планах еще больше возможностей.
Вернуться к началу

offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1315
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

Re: RMG SOD

Сообщение Ben80 » 04 май 2021, 09:27

as239 писал(а):

Есть небольшие подвижки в этом направлении.


То есть вы пошли по пути увеличения возможностей шаблонов, как HotA. Это довольно системно.
Я давно не смотрел редактор шаблонов Хоты и не знаю, перенесли ли они в шаблоны основные возможности редактора карт (галки по заклинаниям, артефактам, постройкам и тд). Не знаю, насколько удобно это делать именно через шаблон ы - возможно, что очень неудобно (либо просто нужно подумать).
Вернуться к началу

offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

Re: RMG SOD

Сообщение as239 » 04 май 2021, 09:32

Да там богатые возможности и удобный графический интерфейс.
Эх, найти бы кого-нибудь кто бы мог заняться графическим интерфейсом для SOD.
У меня здесь минимум знаний и возможностей.
Вернуться к началу

Пред.След.

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

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

Сейчас этот форум просматривают: Yandex [bot] и гости: 8