Объявления

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

H3API by RoseKavalier

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineas239  
имя: Анатолий
Ветеран
Ветеран
 
Сообщения: 527
Зарегистрирован: 29 дек 2018, 14:17
Пол: Мужчина
Поблагодарили: 38 раз.

H3API by RoseKavalier

Сообщение as239 » 08 май 2020, 18:11

Здесь предлагаю обсуждать все вопросы связанные с настройкой, подключением и использованием H3API от RoseKavalier:
https://github.com/RoseKavalier/H3Plugi ... /H3API/lib
Вернуться к началу

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

Re: H3API by RoseKavalier

Сообщение AlexSpl » 08 май 2020, 18:22

How to create a patcher instance when using H3API's own patcher_x86 header?
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 08 май 2020, 19:11

GetPatcher() is not a member of class Patcher
H3API's patcher_x86 header removes nothing, just adds a few things.

I also made a VSIX installer for H3.Plugin template which adds a project with a few pre-created headers and source files with one click.
No idea if it works with VS2008 though.
 
Изображение
Изображение
Вернуться к началу

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

Re: H3API by RoseKavalier

Сообщение AlexSpl » 08 май 2020, 19:14

Is this right code? Do we need plugin_On or not, and why?

Код: Выделить всё
#define _H3API_PATCHER_X86_
#include "..\..\H3API\H3API.hpp"

Patcher* _P;
PatcherInstance* _PI;

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

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

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 08 май 2020, 19:24

plugin_On might not be needed, for me it's a precaution in case it's called more than once.
This line should be sufficient for hdmod plugins
Код: Выделить всё
if (!p->GetInstance(PLUGIN_NAME))
Вернуться к началу

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

Re: H3API by RoseKavalier

Сообщение AlexSpl » 08 май 2020, 19:34

So, here we go :smile1:

Код: Выделить всё
#define _H3API_PATCHER_X86_
#include "..\..\H3API\H3API.hpp"

Patcher* _P;
PatcherInstance* _PI;
const char* PLUGIN_NAME = "HD.Plugin.TestH3API";

using namespace h3;

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    if ( DLL_PROCESS_ATTACH == ul_reason_for_call )
    {
      if ( !_P->GetInstance(PLUGIN_NAME) )
      {
         _P = GetPatcher();
         _PI = _P->CreateInstance(PLUGIN_NAME);
      }
    }

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

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

Re: H3API by RoseKavalier

Сообщение AlexSpl » 08 май 2020, 21:16

Well, with this

Код: Выделить всё
if ( !_P->GetInstance(PLUGIN_NAME) )

plugins don't work. Without it do.

I suppose you should call GetPatcher() first?

* * *
plugin_On seems to me like a precaution, too.
Вернуться к началу

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

Re: H3API by RoseKavalier

Сообщение Ben80 » 09 май 2020, 19:27

RoseKavalier писал(а):

Suggestions and additions to H3API are always welcome


Some AI fields for Hero:

float ai_exp_eff_109; // ExperienceEffectivness

_dword_ ai_agress_47A; // Agressivness
_dword_ ai_power_eff_47E; // PowerEffectivness
_dword_ ai_duration_eff_482; // DurationEffectivness
_dword_ ai_knowl_eff_486; // KnowledgeEffectivness
_dword_ ai_dmana_eff_48A; // DoubleManaEffectivness
_dword_ ai_mana_eff_48E; // ManaEffectivness
Последний раз редактировалось Ben80 13 май 2020, 12:11, всего редактировалось 1 раз.
Вернуться к началу

offlineRoseKavalier  
Мастер
Мастер
 
Сообщения: 331
Зарегистрирован: 23 сен 2017, 17:00
Пол: Не указан
Поблагодарили: 234 раз.

Re: H3API by RoseKavalier

Сообщение RoseKavalier » 09 май 2020, 20:20

AlexSpl писал(а):

Well, with this

Код: Выделить всё
if ( !_P->GetInstance(PLUGIN_NAME) )

plugins don't work. Without it do.


I have no issues with that :S Most of the H3.Plugins do exactly that or a variant.

Ben80 писал(а):

RoseKavalier писал(а):

Suggestions and additions to H3API are always welcome


Some AI fields for Hero:

_dword_ ai_agress_47A; // Agressivness
_dword_ ai_pd_eff_47E; // PowerDurationEffectivness
_dword_ ai_power_eff_482; // PowerEffectivness
_dword_ ai_knowl_eff_486; // KnowledgeEffectivness
_dword_ ai_dmana_eff_48A; // DoubleManaEffectivness
_dword_ ai_mana_eff_48E; // ManaEffectivness

Would be a big help if you could reference addresses where these values are observed; helps with naming and confirmation.
Вернуться к началу

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

Re: H3API by RoseKavalier

Сообщение Ben80 » 09 май 2020, 20:22

They are set in sub_00527C40
Вернуться к началу

След.

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

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

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

cron