Объявления

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

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

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

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

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

AlexSpl писал(а):

Либо это какая-то дополнительная проверка HD-мода

Может проблема все же в этом?
Вернуться к началу

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 » 20 апр 2021, 21:09

Такое окно появляется при проблеме с файлом. Т.е. когда игра не может загрузить картинку (когда проблема именно с самой картинкой; сам Ваш PCX игра подгружает из папки с плагином). Но кто знает? Короче, нужен правильный геройский неконвертированный PCX для проверки.
Вернуться к началу

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 » 20 апр 2021, 21:13

Точно дело в Вашем файле. Кинул его в папку DATA, отключив все плагины. Такая же ошибка.

Так. Нет. Игра смогла его загрузить. Но всё равно появляется окно командной строки. Сейчас на чистом SOD проверю, чтобы расставить точки на i.
Последний раз редактировалось AlexSpl 20 апр 2021, 21:15, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение Rolex » 20 апр 2021, 21:14

Но из LOD эта же картинка PCX подгружается без проблем. Значит проблема не с картинкой.
Вернуться к началу

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 » 20 апр 2021, 21:17

Да, действительно не с картинкой. Проверил на чистом SoD. Она подхватывается из DATA. Тогда нужно смотреть, что делает HD_TC2.dll. Может, недостаточно поменять путь к картинке только в этой функции.

Разобрался. Этого хука недостаточно. Где-то ещё нужно менять путь.

Нашёл ещё одно место, где нужно менять путь :smile1:
Последний раз редактировалось AlexSpl 20 апр 2021, 21:26, всего редактировалось 1 раз.
Вернуться к началу

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

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

Сообщение Rolex » 20 апр 2021, 21:25

AlexSpl писал(а):

Где-то ещё нужно менять путь.

Вот бы еще найти где... :smile5:
Вернуться к началу

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

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

Сообщение Rolex » 20 апр 2021, 21:37

AlexSpl писал(а):

Нашёл ещё одно место, где нужно менять путь :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 » 20 апр 2021, 21:39

Так, всё заработало :smile2: Плюс стало понятно, зачем HD-моду это окно командной строки. Выглядит как античит или забытый код для дебага (?). Уведомляет игроков о том, что ресурсы подгружаются из "левой" локации.

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

Patcher* _P;
PatcherInstance* _PI;
static _bool_ plugin_On = 0;

bool LoadingFromCustomFolder = false;

void showInfoStr(const char* format, ...)
{
    va_list args;
    va_start(args, format);

    vsprintf(o_TextBuffer, format, args);
    b_MsgBox(o_TextBuffer, MBX_OK);

    va_end(args);
}

int __stdcall showInfo(LoHook* h, HookContext* c)
{
    /* _Hero_* hero = &o_GameMgr->hero[o_ActivePlayer->selected_hero_id];

    showInfoStr("%08X", &o_GameMgr->hero[o_ActivePlayer->selected_hero_id].pic);

    o_HeroInfo[0].hpl_name = (_ptr_)"1.bmp"; */
   
    return EXEC_DEFAULT;
}

int __stdcall loadPcx(LoHook* h, HookContext* c)
{
    if ( !strcmp((char*)c->ebx, "HPL000Kn.PCX") )
    {
        c->eax = (int)"d:\\3DO\\Heroes3\\_HD3_Data\\Packs\\ShowInfo\\11111111.pcx";
        c->ebx = (int)"d:\\3DO\\Heroes3\\_HD3_Data\\Packs\\ShowInfo\\11111111.pcx";
        LoadingFromCustomFolder = true;
    }
   
    return EXEC_DEFAULT;
}

int __stdcall fixPath(LoHook* h, HookContext* c)
{
    if ( LoadingFromCustomFolder  )
    {
        c->edi = (int)"";
        LoadingFromCustomFolder = false;
    }
   
    return EXEC_DEFAULT;
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    if ( DLL_PROCESS_ATTACH == ul_reason_for_call )
    {
        if ( !plugin_On )
        {
            plugin_On = 1;
            _P = GetPatcher();
            _PI = _P->CreateInstance((char*)"HD.Plugin.ShowInfo");

            _PI->WriteLoHook(0x408994, showInfo);
            _PI->WriteLoHook(0x55AA88, loadPcx);
            _PI->WriteLoHook(0x44F602, fixPath);
        }
    }

    return TRUE;
}

Черновой код.
Вернуться к началу

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

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

Сообщение Rolex » 20 апр 2021, 21:45

А это:
Код: Выделить всё
        c->eax = (int)"d:\\3DO\\Heroes3\\_HD3_Data\\Packs\\ShowInfo\\11111111.pcx";
        c->ebx = (int)"d:\\3DO\\Heroes3\\_HD3_Data\\Packs\\ShowInfo\\11111111.pcx";

нельзя заменить на это:
Код: Выделить всё
        c->eax = (int)"d:\\3DO\\Heroes3\\_HD3_Data\\Packs\\ShowInfo\\11111111.pcx";
        c->ebx = c->eax;


AlexSpl писал(а):

if ( !strcmp((char*)c->ebx, "HPL000Kn.PCX") )

Это что получается понадобится 326 ифов? :smile8:
Вернуться к началу

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 » 20 апр 2021, 21:46

Цитата:
Это что получается понадобится 326 ифов?

А для чего Вам сравнение строк по первым символам? :smile2:

Заменить можно. Главное, чтобы строка была одинаковой.
Вернуться к началу

Пред.След.

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

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

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

cron