Объявления
Поздравляем
t800


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

Герои 2 с поддержкой плагинов

Не запускается игра? Проблемы со звуком? Где, в конце концов, взять игру, скачать патчи, приложения и карты? Как установить все это? Все проблемы обсуждаем в этом разделе
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 раз.

Герои 2 с поддержкой плагинов

Сообщение AlexSpl » 28 авг 2018, 17:58

Добавил поддержку плагинов для версии 2.1 Героев 2 от "Буки" (c фиксом Dispel Magic).

H2DMF_Ext.zip
(622.63 КБ) Скачиваний: 572

Распаковать в папку Героев 2.

Плагины загружаются в лексикографическом ("алфавитном") порядке.

Плагины:

Plugins.zip
(7.35 КБ) Скачиваний: 521

CPUPatch.dll - CPU патч

Цитата:
Значительно снижает загрузку процессора, но на некоторых системах может тормозить игру. Если тормозит, есть "костыль": запустите в фоне приложение, которое воспроизводит аудио/видео (например, AIMP). Короче, решать Вам, использовать или нет.


ChangeResourceCost.dll - меняет кол-во нужного ресурса для покупки существ (см. ChangeResourceCost.ini). Например, пусть Crusaders дополнительно требуют 2 ед. дерева, а Greater Druids - 1 ед. кристаллов (значения по умолчанию в ChangeResourceCost.ini):

Код: Выделить всё
[Crusader]
Res=Wood
Num=2

[Greater Druid]
Res=Crystal
Num=1

Максимальное количество ед. ресурса - 255.

Распаковать нужные в папку Plugins.

 Код загрузчика Loader.dll
Код: Выделить всё
#include <windows.h>
#include <tchar.h>
#include <string>
#include <algorithm>
#include "dirent.h"

using namespace std;

wstring getExt(wstring pathName) {
    int period = pathName.find_last_of(L".");
    wstring ext = pathName.substr(period + 1);
    return ext;
}

__declspec(dllexport) BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
    if ( DLL_PROCESS_ATTACH == ul_reason_for_call ) {
        _WDIR* dir;
        struct _wdirent* ent;
        wstring ext;

        if ( ( dir = _wopendir(L"Plugins") ) != NULL ) {
            while ( ( ent = _wreaddir(dir) ) != NULL ) {
                if ( ent->d_type == DT_REG ) {
                    ext = getExt(ent->d_name);
                    transform(ext.begin(), ext.end(), ext.begin(), towlower);
                    if ( ext == L"dll" ) {
                        TCHAR dllName[MAX_PATH + 1] = L"Plugins\\";
                        _tcscat_s(dllName, MAX_PATH + 1, ent->d_name);

                        try {
                            if ( LoadLibrary(dllName) == NULL ) throw -1;
                        }
                        catch(int e) {
                            if ( e == -1 ) {
                                TCHAR errMsg[MAX_PATH + 16] = L"Cannot load \"";
                                _tcscat_s(errMsg, MAX_PATH + 16, ent->d_name);
                                _tcscat_s(errMsg, MAX_PATH + 16, L"\"");
                                MessageBox(NULL, errMsg, L"Plugin Loader", MB_ICONERROR | MB_OK);
                            }
                        }
                    }
                }
            }
            _wclosedir(dir);
        }
    }

   return TRUE;
}

Полезные ссылки: Как создать свой плагин | Примеры кода плагинов | Ещё примеры | Редактирование ресурсов и кода игры | Готовые бинарные патчи для Героев 2 | О патчере patcher_x86
Вернуться к началу

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

Re: Герои 2 с поддержкой плагинов

Сообщение Ben80 » 28 авг 2018, 18:04

А я сегодня попробовал запустить через AngelRun буковский Клинок Армагеддона (Герои 3). При этом подправил пару значений, благодаря чему теперь правой кнопкой по герою можно видеть тексты, соответствующие кол-ву существ в отрядах. То есть так оно и должно работать на самом деле.

А, кстати, в Героях 2 логику вейта для ИИ будете когда-нибудь делать ? :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: Герои 2 с поддержкой плагинов

Сообщение AlexSpl » 28 авг 2018, 18:18

Нет. Пока есть идея сделать плагин, улучшающий боевой AI в Героях 1, и плагин для новой локализации Miner'а.
Вернуться к началу

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: Герои 2 с поддержкой плагинов

Сообщение AlexSpl » 28 авг 2018, 20:00

Ещё один плагин. Меняет скорость анимации в бою. Настройки в файле AnimSpeed.ini (значения указаны в процентах). Например, уменьшим "Обычную" скорость в 10 раз, "Высокую" увеличим в 5 раз, "Оч. высокую" - в 20 раз:

Код: Выделить всё
[AnimSpeed]
Normal=10
Fast=500
VeryFast=2000

AnimSpeed.zip
(3.55 КБ) Скачиваний: 504

Подробнее здесь.
Вернуться к началу

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: Герои 2 с поддержкой плагинов

Сообщение AlexSpl » 18 ноя 2020, 11:25

Улучшенный* плагин CPUPatchAdv, снижающий загрузку процессора.

Установка
0. Удалить старый плагин CPUPatch.dll
1. Распаковать в папку Plugins

*) Плагин CPUPatch мог тормозить игру на старых системах. Не нужен, если Вы играете с GL Wrapper'ом.

CPUPatchAdv.zip
(3.4 КБ) Скачиваний: 398

 Код
Код: Выделить всё
#include "stdafx.h"
#include <mmsystem.h>
#include "..\..\HotA\patcher_x86.hpp"

#pragma comment(lib, "winmm.lib")

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

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.H2.CPUPatchAdv");
            _PI->WriteByte(0x471900, 1);
            timeBeginPeriod(1);
        }
    }

    if ( DLL_PROCESS_DETACH == ul_reason_for_call )
        timeEndPeriod(1);

    return TRUE;
}
Вернуться к началу


Вернуться в Техническая часть

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

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

cron