Объявления

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

Как создать плагин для HD мода

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 898
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 53 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 18 май 2021, 13:34

AlexSpl писал(а):

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

Да я тоже так думаю, раз с другими PCX проблем нет. Но хотелось бы понять, что именно с ними не так, ибо после конфертации в BMP этих проблемных PCX они подтягиваются из Common. А при обратной конвертации в PCX таже проблема. Что с ними сделать, чтобы они подтягивались также, как и другие? Попробуйте скачать прикрепленный архив с проблемными портретами и потестить их у себя.

AlexSpl писал(а):

Ещё, на всякий случай, проверьте, не изменилась ли библиотека HD_TC2.dll (с момента написания плагина было несколько обновлений HD-мода).

Я не обновлял мод последнее время, то есть используется старая версия HD_TC2.dll от 08.02.2021, которая и была на момент написания плагина.
Вернуться к началу

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: Как создать плагин для HD мода

Сообщение AlexSpl » 18 май 2021, 13:38

Цитата:
Что с ними сделать, чтобы они подтягивались также, как и другие?

Можно проверить конвертер на подгружающейся картинке PCX. PCX -> BMP -> PCX. Если перестанет подгружаться, проблемы с конвертером.
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 898
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 53 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 18 май 2021, 13:50

AlexSpl писал(а):

Можно проверить конвертер на подгружающейся картинке PCX. PCX -> BMP -> PCX. Если перестанет подгружаться, проблемы с конвертером.

Да, действительно, что-то походу с XnConver. Из PCX в BMP он ковертит норм. А вот обратно оставляет те траблы, которые имел исходный PCX. Попробовал через онлайн-сервис convertio.co и, вроде, все ок, подтянулось.
Вернуться к началу

offlineRolex  
имя: Alex
Ветеран
Ветеран
 
Сообщения: 898
Зарегистрирован: 22 сен 2020, 18:58
Откуда: УКРАИНА
Пол: Мужчина
Поблагодарили: 53 раз.

Re: Как создать плагин для HD мода

Сообщение Rolex » 18 май 2021, 16:42

Цитата:
Rolex писал(а):

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

AlexSpl писал(а):

Как только будет готов.

Кстати, а как успехи с прокачкой алгоритмов AI? Может уже можно альфа версию опубликовать и пущупать, где реализована улучшенная скупка существ в городе и скупка существ AI в Лагере беженцов и Портале вызова?

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

 Скрины
Изображение

Изображение

Изображение
Вернуться к началу

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: Как создать плагин для HD мода

Сообщение AlexSpl » 18 май 2021, 16:54

Вернусь к нему позже. Нужно продумать реализацию, которая бы действительно что-то меняла (всё-таки скупка негрейженых существ может помочь AI только в каких-то редких случаях, и форсированный грейд без оглядки на темп развития тоже сомнительное решение). Плюс есть техническая проблема получения указателя на героя (сейчас я получаю его по указателю на армию, но AI может нанимать существа прямо в гарнизон; нужно разделить эти два кейса).
Вернуться к началу

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

Re: Как создать плагин для HD мода

Сообщение Ben80 » 18 май 2021, 17:03

После ряда подходов к грейду двеллингов ИИ остановился на следующем варианте, по которому грейды в целом происходят побыстрее, чем в оригинале, плюс предпочтение грейдам медленных существ. Практика показала, что от данных изменений ИИ больше выигрывает, чем теряет.

Код: Выделить всё
int __stdcall HiHook_changeUpgBuildingAIValue(HiHook* h, int a1, int a2, int a3)
{
   double k = 1.0;

   int creature_id = *(int*)(0x6747B4 + 4*(14 * *(_byte_*)(a1 + 4) + a2 - 7));
   int speed1 = o_pCreatureInfo[creature_id].speed;

   creature_id = *(int*)(0x6747B4 + 4*(14 * *(_byte_*)(a1 + 4) + a2));
   int speed2 = o_pCreatureInfo[creature_id].speed;

   if(speed2 > speed1)
      k += 8.0 / (double)((speed1 + 1) * (speed1 + 1));

   int value = k * CALL_3(int, __fastcall, h->GetDefaultFunc(), a1, a2, a3);

   if(creature_id == CID_CHAMPION)
      value = 0;

   return value;
}

int __stdcall correctCreaturesNumberUpgBuildingAIValue(LoHook* h, HookContext* c)
{
   _Town_* town = (_Town_*)c->ecx;
   _Hero_* hero;

   if(town->up_hero_id >= 0)
   {
      hero = o_GameMgr->GetHero(town->up_hero_id);
      if(hero->owner_id == town->owner_id)
      {
         for(int i=0; i<7; i++)
         {
            if(hero->army.type[i] == c->esi)
               c->eax += hero->army.count[i];
         }
      }
   }

   if(town->down_hero_id >= 0)
   {
      hero = o_GameMgr->GetHero(town->down_hero_id);
      if(hero->owner_id == town->owner_id)
      {
         for(int i=0; i<7; i++)
         {
            if(hero->army.type[i] == c->esi)
               c->eax += hero->army.count[i];
         }
      }
   }

   c->eax *= 1.3;

   return EXEC_DEFAULT;
}
...
_PI->WriteLoHook(0x42B5FA, correctCreaturesNumberUpgBuildingAIValue);
_PI->WriteHiHook(0x42B5B0, SPLICE_, EXTENDED_, FASTCALL_, HiHook_changeUpgBuildingAIValue);



***

Также большое значение в этом деле играют показатели AI_Value существ. Скажем, в оригинальной игре Монахи часто грейдились из-за своего заниженного AI_Value. А ключевой грейд Мечников в Крестоносцы не производил - из-за заниженного AI_Value Крестоносцев.

После применения скорректированных значений AI_Values из соседней темы, было приятно увидеть, что в игре ИИ часто и рано (и с пользой !) грейдит Лучников, Ящеров, Меченосцев, Адских Гончих, Гремлинов, Зомби, Орков и тд.
Вернуться к началу

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: Как создать плагин для HD мода

Сообщение AlexSpl » 18 май 2021, 17:13

Цитата:
if(hero->owner_id == town->owner_id)

Эта проверка нужна для союзов? Кстати, про союзы я почти ничего не знаю. Даже не знаю, можно ли грейдить существ в городе союзника (а тем более, делает ли это AI) :smile14: Как-то обошла меня эта часть Героев стороной.
Вернуться к началу

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

Re: Как создать плагин для HD мода

Сообщение Ben80 » 18 май 2021, 17:22

Не знаю, можно ли, наверно, нет.
Но я имел в виду грейд именно двеллингов, а не существ. Так что немного неточно выразился в предыдущем посте.

***

А, осознал, почему вы спросили про союзы. Не помню уже, зачем я добавил эту проверку (иногда проверки добавляются как следствие вылетов в практической игре :smile1: ). Там часть кода годовой давности, а часть - совсем свежая.
Вернуться к началу

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: Как создать плагин для HD мода

Сообщение AlexSpl » 18 май 2021, 17:27

Я точно помню, что в город союзника можно зайти, а что там разрешено делать, не помню. Нужно "покурить" ФизМиГ :smile1:

* * *
Просто мысли. Недавно попытался прорекламировать плагины на HC, но люди почему-то хотят изобретать велосипед. Сейчас там уважают хекс-эдитинг. Сам таким был, но в то время и инструментов не было. Сейчас модифицируй - не хочу. Кое-кто сразу спрашивает, а работают ли плагины для HotA? :smile1: И я понимаю этих людей, но и HotA Crew понимаю. Без них мы бы тоже занимались хекс-эдитингом :smile1: Плюс услышал жалобу, что у нас всё на русском, но не всем это мешает :smile1: С одной стороны, я понимаю (английский - международный сейчас), но с другой, мы никому не запрещаем писать по-английски, и потом, есть Google Translate. Я думал о том, чтобы написать, как подключить плагин к HotA, но из уважения к команде не стану. Однако есть компромисс: можно же сделать официальную версию HotA, в которую можно играть только оффлайн (тем более, что сетуют на отсутствие возможностей для моддинга HotA как раз те, кто не играют онлайн).
Вернуться к началу

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

Re: Как создать плагин для HD мода

Сообщение Ben80 » 18 май 2021, 17:51

AlexSpl писал(а):

можно же сделать официальную версию HotA, в которую можно играть только оффлайн (тем более, что сетуют на отсутствие возможностей для моддинга HotA как раз те, кто не играют онлайн).


Александр, кому можно сделать ? :smile1: Такая мысль им в голову не придет, а если предложить, то они не согласятся - поскольку неоднократно говорили, что видят HotA как целостный продукт, как для сингла, так и для мультика (я то, конечно, как и многие, считаю, что на самом деле ченджлоги Хота в большей степени определяются мультиком, на самом деле).
Вернуться к началу

Пред.След.

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

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

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

cron