T-800 Mod для Heroes of Might and Magic II

Модератор: t800

Re: T-800 Mod для Heroes of Might and Magic

Сообщение t800 » 28 июл 2016, 00:30

Выкладываю здесь чтобы не потялялось

HMM2granica.zip
Скрип для Photoshopa - добавляет черную границу обводку у Осьминога на всех спрайтах
(1.44 КБ) Скачиваний: 3652
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
t800
Experienced
Experienced
 
Сообщения: 856
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: T-800 Mod для Heroes of Might and Magic

Сообщение t800 » 30 июл 2016, 17:07

Когда собираешь под Free Heroes 2 (T-800 Mod) Windows

Надо

1) Зайти в src/fheroes2/castle/engine/tools.cpp

Найти строчки

Код: Выделить всё
#if defined(__FreeBSD__) || defined (__MINGW32__)  || defined (__MINGW64__)
    size_t reslen = iconv(cd, &inbuf, &inbytesleft, &outbuf1, &outbytesleft);
#else
    size_t reslen = iconv(cd, const_cast<char**>(&inbuf), &inbytesleft, &outbuf1, &outbytesleft);
#endif


2) И изменить их вот так

Код: Выделить всё
#if defined(__FreeBSD__) || defined (__MINGW32__)  || defined (__MINGW64__)
//    size_t reslen = iconv(cd, &inbuf, &inbytesleft, &outbuf1, &outbytesleft);
//#else
    size_t reslen = iconv(cd, const_cast<char**>(&inbuf), &inbytesleft, &outbuf1, &outbytesleft);
#endif


3) И в файле Makefile который лежит в главном каталогие fheroes2 должно быть написано вот так

Код: Выделить всё
TARGET   := fheroes2
MAKE   := make

all:
   $(MAKE) -C src WITH_AI=simple WITHOUT_AUDIOCD=1 WITHOUT_NETWORK=1 WITHOUT_EDITOR=1 WITH_ICONS=1
   @cp src/dist/$(TARGET) .

clean:
   $(MAKE) -C src clean
Последний раз редактировалось t800 31 июл 2016, 09:17, всего редактировалось 1 раз.
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
t800
Experienced
Experienced
 
Сообщения: 856
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: T-800 Mod для Heroes of Might and Magic

Сообщение t800 » 30 июл 2016, 23:33

Чтобы русские буквы не отражались квадратиками в информации о строениях под Windows

Надо открыть файл src/fheroes2/castle/buildinginfo.cpp

Найти строчки

Код: Выделить всё
description = _("The %{building} produces %{monster}.");
      StringReplace(description, "%{building}", Castle::GetStringBuilding(building, castle.GetRace()));
      StringReplace(description, "%{monster}", StringLower(Monster(castle.GetRace(), building).GetMultiName()));


И исправить на


Код: Выделить всё
description = _("The %{building} produces %{monster}.");
      StringReplace(description, "%{building}", Castle::GetStringBuilding(building, castle.GetRace()));
//    StringReplace(description, "%{monster}", StringLower(Monster(castle.GetRace(), building).GetMultiName()));
      StringReplace(description, "%{monster}", Monster(castle.GetRace(), building).GetMultiName());


Тогда квадратиков не будет!
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
t800
Experienced
Experienced
 
Сообщения: 856
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: T-800 Mod для Heroes of Might and Magic

Сообщение t800 » 31 июл 2016, 08:41

Запишу чтобы не забыть

Чтобы собрать сборку под Windows.


1) Надо поставить VirtualBox,

2) Поставить туда Windows XP,

3) Потом в WindowsXP cкачать архив mingw-build-env-win32-20111117.zip

4) Распаковать его на диск C:

Примечание: В архиве лежит папка mingw надо распаковать так чтобы эта папка лежала на диске C:
можно распаковать в другое место, а потом просто выделить папку эту папку mingw и сделать вырезать вставить на диск C:

5) Перейти в папку c:/mingw/msys/1.0 и создать для файла msys.bat который там лежит ярлык на рабочий стол

5.1 ) Создать папку c:/mingw/home

6) Скопировать свою папку fheroes2 со своими исходниками в папку в Windows c:/mingw/home

7) Запустить msys.bat ярлыком с рабочего стола

8) В открывшейся консоли в черном окошке написать команды (не забыть переключить раскладку на английский язык)

Код: Выделить всё
cd /mingw/home/fheroes2/


Примечание: Консоль работает плохо и ответы идут квадратиками поэтому команду лучше скопировать и вставить

9) Затем дать команду (эту можно просто написать)

Код: Выделить всё
ls


Если попали тут куда надо то увидем список файлов в папке fheroes2

10) После этого надо дать компанду

Код: Выделить всё
make


Если все собралось без ошибок надо перейти в Проводнике в папку C:\mingw\home\fheroes2
и запустить файл fheroes2.exe

Примечание: Если в первый раз после разархивирования исходников из архива make ругнется по поводу gc++ 4.6 и что-то такое надо дать команду

Код: Выделить всё
make clean


И после этого опять запустить

Код: Выделить всё
make


И все должно собраться


Примечание: для тестирования под Windows не забыть положить файл HEROES2.AGG в папку fheroes2\data\

Дополнение: вот сделал для памяти видео как это все делается чтобы не забыть.

Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
t800
Experienced
Experienced
 
Сообщения: 856
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Re: T-800 Mod для Heroes of Might and Magic

Сообщение t800 » 03 авг 2016, 21:30

На Google Play мне пожаловались что заклинание Молния в битве выгляди совсем не правильно, хотя заклинание Ледяной Луч выглядит точно так же как в оригинальных HMM2




Стал разбираться. Запишу что понял чтобы не забыть

Судя по всему заклинания рисуются в файле /src/fheroes2/battle/battle_interface.cpp

Вот это заклинание Молния

Код: Выделить всё
void Battle::Interface::RedrawActionLightningBoltSpell(Unit & target)
{
    // FIX: LightningBolt draw
    RedrawTroopWithFrameAnimation(target, ICN::SPARKS, M82::FromSpell(Spell::LIGHTNINGBOLT), true);
}

void Battle::Interface::RedrawActionChainLightningSpell(const TargetsInfo & targets)
{
    // FIX: ChainLightning draw
    //AGG::PlaySound(targets.size() > 1 ? M82::CHAINLTE : M82::LIGHTBLT);

    for(TargetsInfo::const_iterator
   it = targets.begin(); it != targets.end(); ++it)
   RedrawTroopWithFrameAnimation(*(it->defender), ICN::SPARKS, M82::FromSpell(Spell::LIGHTNINGBOLT), true);
}



А вот это заклинание Ледяной Луч


Код: Выделить всё
void Battle::Interface::RedrawActionColdRaySpell(Unit & target)
{
    Display & display = Display::Get();
    Cursor & cursor = Cursor::Get();
    LocalEvent & le = LocalEvent::Get();

    const int icn = ICN::COLDRAY;
    u32 frame = 0;

    Point pt_from, pt_to;
    const HeroBase* current_commander = arena.GetCurrentCommander();

    if(current_commander == opponent1->GetHero())
    {
   const Rect & pos1 = opponent1->GetArea();
   pt_from = Point(pos1.x + pos1.w, pos1.y + pos1.h / 2);

   const Rect & pos2 = target.GetRectPosition();
   pt_to = Point(pos2.x, pos2.y);
    }
    else
    {
   const Rect & pos = opponent2->GetArea();
   pt_from = Point(pos.x, pos.y + pos.h / 2);

   const Rect & pos2 = target.GetRectPosition();
   pt_to = Point(pos2.x + pos2.w, pos2.y);
    }

    const u32 dx = std::abs(pt_from.x - pt_to.x);
    const u32 dy = std::abs(pt_from.y - pt_to.y);
    const u32 step = (dx > dy ? dx / AGG::GetICNCount(icn) : dy / AGG::GetICNCount(icn));


    const Points points = GetLinePoints(pt_from, pt_to, step);
    Points::const_iterator pnt = points.begin();

    cursor.SetThemes(Cursor::WAR_NONE);
    AGG::PlaySound(M82::COLDRAY);

    while(le.HandleEvents() && frame < AGG::GetICNCount(icn) && pnt != points.end())
    {
   CheckGlobalEvents(le);

   if(Battle::AnimateInfrequentDelay(Game::BATTLE_SPELL_DELAY))
       {
       cursor.Hide();
       const Sprite & sprite = AGG::GetICN(icn, frame);
       sprite.Blit((*pnt).x - sprite.w() / 2, (*pnt).y - sprite.h() / 2);
       cursor.Show();
       display.Flip();

       ++frame;
       ++pnt;
   }
    }

    RedrawTroopWithFrameAnimation(target, ICN::ICECLOUD, M82::UNKNOWN, true);
}



Видно что они совершенно по разному сделаны и в этом причина почему молния выгляди совсем не правильно и
бьет какой то тонкой линией сверху вместо того чтобы бить молнией из посоха Героя как Ледяной Луч.

Думаю надо передалать Молнию так же как Ледяной Луч и тогда она будет бить нормально и Посоха героя.
Справочник и Форум Green Dragon
T-800 MOD для Heroes of Might and Magic 2

Основатель клуба "Армагеддон"

Основатель клуба "Пещера Гремлинов"

ИзображениеИзображение
t800
Experienced
Experienced
 
Сообщения: 856
Зарегистрирован: 19 окт 2015, 14:52
Откуда: Казахстан, Алматинская область
Благодарил (а): 172 раз.
Поблагодарили: 136 раз.

Пред.След.

Вернуться в Герои Меча и Магии

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

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

cron