Объявления

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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineАватара пользователя
AlexSpl  
имя: Александр
Эксперт
Эксперт
 
Сообщения: 5547
Зарегистрирован: 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)
Поблагодарили: 2162 раз.

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

Сообщение AlexSpl » 06 авг 2021, 17:10

Сейчас чекну. А Вы на всякий проверьте с твиком: <Sys.CPU.ReduceUsage> = 0
Вернуться к началу

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

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

Сообщение Rolex » 06 авг 2021, 17:14

AlexSpl писал(а):

А Вы на всякий проверьте с твиком: <Sys.CPU.ReduceUsage> = 0

У меня этот твик в ноль и уставлен. С ним и тестил.
Вернуться к началу

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

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

Сообщение AlexSpl » 06 авг 2021, 17:14

Проверил. У меня одновременно с кпопкой Backpack исчезает (проверял на 32-bit DirectDraw и 32-bit GDI). Однако пару разу удалось увидеть. Теперь снова не повторяется.
Вернуться к началу

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

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

Сообщение AlexSpl » 06 авг 2021, 17:17

Знаете, как можно поступить? А прицепите этот плагин, как asi к оригинальным героям. Я тоже попробую.

Проверил. Всё ОК. Исчезает сразу.
Последний раз редактировалось AlexSpl 06 авг 2021, 17:20, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение Rolex » 06 авг 2021, 17:18

А вы на фильтре SmoothSaI x2 + Bilinear 2xSharper проверяли?
Вернуться к началу

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

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

Сообщение AlexSpl » 06 авг 2021, 17:21

Нет, вообще без фильтров запустите (на оригинальном SoD). Хочется знать точно, где проблема. Смените расширение плагина на asi и киньте его в корень, затем запустите heroes3.exe (возможно, придётся смонтировать образ, но он у Вас должен быть).
Вернуться к началу

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

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

Сообщение AlexSpl » 06 авг 2021, 17:25

Так, есть контакт. Дело в обновлении гарнизона, видимо. У меня один раз на оригинале вообще полкнопки остались "висеть" поверх гарнизона :smile8: Причём неактивный вариант кнопки.

И даже не один. Баг стабильно повторяется на оригинале.

Изображение

Думаю, из-за этого кнопка иногда заметна.
Последний раз редактировалось AlexSpl 06 авг 2021, 17:33, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение Rolex » 06 авг 2021, 17:33

AlexSpl писал(а):

Смените расширение плагина на asi и киньте его в корень, затем запустите heroes3.exe

Наверное, еще нужно патчер мода бросать в корень, ведь мы используем его в плагинах. Но даже с патчером у меня почему-то вылетает. Не один плагин через asi на оригинале не работает.

AlexSpl писал(а):

Думаю, из-за этого кнопка иногда заметна.

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

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

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

Сообщение AlexSpl » 06 авг 2021, 17:37

Так, одна проблема решена (теперь кпопка не "застревает" в гарнизоне):

Код: Выделить всё
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "..\..\HotA\homm3.h"

Patcher* _P;
PatcherInstance* _PI;

int __stdcall showUpgradeCost(LoHook* h, HookContext* c)
{
    _Dlg_* dlg = (_Dlg_*)c->ebx;
    _DlgItem_* button = dlg->GetItem(0x12C);

    if (button)
    {
        int x, y;
        CALL_2(void, __stdcall, 0x50D700, &x, &y);
        if (x - dlg->x >= button->x && x - dlg->x < button->x + button->width &&
            y - dlg->y >= button->y && y - dlg->y < button->y + button->height)
        {
          char* str = *(char**)(0xD * 8 + 0x6A74C0); // Оригинальное сообщение

          sprintf(o_TextBuffer, "%s %s", str, "test");
          c->edi = (int)o_TextBuffer;
        }
    }
   
    return EXEC_DEFAULT;
}

int __stdcall enableDismissHero(LoHook* h, HookContext* c)
{
    _Dlg_* dlg = *(_Dlg_**)0x698AC8;
    _DlgItem_* button = dlg->GetItem(0x81);

    if (button)
    {
        button->SendCommand(5, 6);
        button->SendCommand(6, 0x1000);
        button->SetEnabled(true);
    }
   
    return EXEC_DEFAULT;
}

int __stdcall processDismissHeroA(LoHook* h, HookContext* c)
{
    if (o_TownMgr->dlg)
    {
        c->return_address = 0x4DA28E;
        return NO_EXEC_DEFAULT;
    }
    return EXEC_DEFAULT;
}

int __stdcall processDismissHeroB(LoHook* h, HookContext* c)
{
    if (o_TownMgr->dlg)
    {
        c->return_address = 0x4E1C6E;
        return NO_EXEC_DEFAULT;
    }
    return EXEC_DEFAULT;
}

int __stdcall processDismissHeroC(LoHook* h, HookContext* c)
{
    if (o_TownMgr->dlg)
    {
        o_TownMgr->DeleteGarriBars();
        o_TownMgr->CreateNewGarriBars();
        o_TownMgr->dlg->Redraw();

        // Перерисовываем диалог города
        CALL_1(void, __thiscall, 0x5D5930, o_TownMgr);
        CALL_1(void, __thiscall, 0x5D5810, o_TownMgr);
       
        c->return_address = 0x4DA406;
        return NO_EXEC_DEFAULT;
    }
    return EXEC_DEFAULT;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    static bool plugin_On = false;

    if ( DLL_PROCESS_ATTACH == ul_reason_for_call )
    {
        if ( !plugin_On )
        {
            plugin_On = true;
            _P = GetPatcher();
            _PI = _P->CreateInstance((char*)"HD.Plugin.UpgradeInfo");

            _PI->WriteLoHook(0x5F5336, showUpgradeCost);
            _PI->WriteCodePatch(0x5F5201, "%n", 6);
           
            _PI->WriteLoHook(0x4E1BF1, enableDismissHero);
            _PI->WriteLoHook(0x4DA238, processDismissHeroA);
            _PI->WriteLoHook(0x4E1C37, processDismissHeroB);
            _PI->WriteLoHook(0x4DA3F3, processDismissHeroC);
        }
    }

    return TRUE;
}

Пробуйте этот плагин. Может, теперь всё заработает.

Примечание. Только при реальном увольнении работает. Просто проверить, исчезнет ли проблема с задержкой.
Вернуться к началу

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

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

Сообщение Rolex » 06 авг 2021, 17:43

AlexSpl писал(а):

Так, одна проблема решена (теперь кпопка не "застревает" в гарнизоне):

Только у меня же проблема и на карте. :smile1:
Изображение
Изображение

В гарнизоне сейчас проверю новый код.
Вернуться к началу

Пред.След.

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

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

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