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


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

Монстры

Обсуждаем, делимся впечатлениями, новой информацией
offlineАватара пользователя
Владимир  
Эксперт
Эксперт
 
Сообщения: 1057
Зарегистрирован: 30 окт 2012, 18:37
Пол: Не указан
Награды: 3
Высшая медаль (1) 1 место 2 этапа по HMM2 (1) Победителю турнира по KB (1)
Поблагодарили: 638 раз.

Re: Монстры

Сообщение Владимир » 25 окт 2020, 06:29

Надо больше спать. По инерции воспринял последнюю h не как указание на hex, а как ещё одну цифру.
Сейчас попробую.
Добавлено: всё работает.
Вернуться к началу

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

Re: Монстры

Сообщение Ben80 » 02 ноя 2020, 06:27

Заинтересовался - как правильно перевести описание Вампира-Лорда, и не является ли опечаткой употребление слова "some" дважды.
Цитата:
Vampire Lords gain some back some of the damage they do as hit points


Попробовал перевести так: "Вампиры Лорды используют для восстановления очков здоровья часть некоторых повреждений, которые они наносят [противнику]".

В игре же мы видим, что это может быть отнюдь не "часть" - количество ХП, получаемых Вампиром-Лордом, может многократно превышать тот ущерб, который они нанесли. Например, если Вампир-Лорд добивает Титана, дышащего на ладан (слово "ладан" само написалось :smile1: ) - при этом основные повреждения Титану могли быть нанесены отнюдь не Вампиром-Лордом.

Подумал, может плагин добавить, чтобы "в зачет" шло только повреждение, приведшее к гибели существа. Например, есть отряд из 3 существ с базовым 75 ХП, одно существо повреждено на 45 ХП. Вампир-Лорд наносит повреждений на 150 ХП, убивая 2 существ. Для своего восстановления он получит - 45 ХП + 75 ХП = 120 ХП.

***

Или же ограничение поставить - чтобы кол-во восстанавливаемых ХП не могло превышать нанесенное повреждение.
Вернуться к началу

offlineАватара пользователя
leiz  
Подмастерье
Подмастерье
 
Сообщения: 187
Зарегистрирован: 15 сен 2018, 07:58
Пол: Не указан
Поблагодарили: 95 раз.

Re: Монстры

Сообщение leiz » 02 ноя 2020, 12:04

Здесь "some" используется в значении "некоторое количество; величина, точное значение которой неизвестно".
Вернуться к началу

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

Re: Монстры

Сообщение Ben80 » 02 ноя 2020, 12:06

Согласен, такая трактовка вполне возможна.
Впрочем, даже если верно значение "часть" (то есть не более 100%), то такой плагин все равно не вполне "каноничен" с точки зрения любителей оригинала.
Вернуться к началу

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: Монстры

Сообщение AlexSpl » 02 ноя 2020, 12:23

Цитата:
Заинтересовался - как правильно перевести описание Вампира-Лорда, и не является ли опечаткой употребление слова "some" дважды.

Опечатка. Первое some - лишнее.

Цитата:
Попробовал перевести так: "Вампиры Лорды используют для восстановления очков здоровья часть некоторых повреждений, которые они наносят [противнику]".

"Лорды Вампиров (или как там у "Буки") возвращают часть нанесённого ими урона в качестве очков здоровья"
Вернуться к началу

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

Re: Монстры

Сообщение Ben80 » 02 ноя 2020, 12:43

Плагин есть желание посмотреть ? :smile1:

***

Код: Выделить всё
#include "../../include2020_v1/patcher_x86.hpp"

Patcher* _P;
PatcherInstance* _PI;

static _bool_ plugin_On = 0;


int __stdcall regenerationVampireLordsFix(LoHook* h, HookContext* c)
{
   if(h->GetAddress() == 0x47F2A3)
   {
      if(c->ecx > *(int*)(c->ebp - 0xF0))
         c->ecx = *(int*)(c->ebp - 0xF0);
   }

   if(h->GetAddress() == 0x41CAB1)
   {
      if(c->edx > *(int*)(c->ebp - 0x348))
         c->edx = *(int*)(c->ebp - 0x348);
   }

   if(h->GetAddress() == 0x44EC88)
   {
      if(c->ecx > *(int*)(c->ebp - 0x34))
         c->ecx = *(int*)(c->ebp - 0x34);
   }

   if(h->GetAddress() == 0x4056FE)
   {
      if(c->ecx > *(int*)(c->ebp - 0xF0))
         c->ecx = *(int*)(c->ebp - 0xF0);
   }

   if(h->GetAddress() == 0x41CDB7)
   {
      if(c->eax > *(int*)(c->ebp - 0xF0))
         c->eax = *(int*)(c->ebp - 0xF0);
   }

    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("H2_VampireLordsFix");

            int check;


         // H2 Eng SW 1.3
            check = *(int*)(0x434317+6);
            if(check == 0x14000000)
            {
                _PI->WriteLoHook(0x4056FE, regenerationVampireLordsFix);
            }

            // H2 Eng PoL 2.0
            check = *(int*)(0x41BFB7+6);
            if(check == 0x14000000)
            {
                _PI->WriteLoHook(0x44EC88, regenerationVampireLordsFix);
            }

            // H2 Eng PoL 2.1
            check = *(int*)(0x484DC1+6);
            if(check == 0x14000000)
            {
            _PI->WriteLoHook(0x47F2A3, regenerationVampireLordsFix);
            }

            // H2 Rus PoL 2.1
            check = *(int*)(0x4710BE+6);
            if(check == 0x14000000)
            {
                _PI->WriteLoHook(0x41CAB1, regenerationVampireLordsFix);
            }

            // H2 Pol PoL 2.1
            check = *(int*)(0x470C7C+6);
            if(check == 0x14000000)
            {
                _PI->WriteLoHook(0x41CDB7, regenerationVampireLordsFix);
            }

        }
    }

   return TRUE;
}
Последний раз редактировалось Ben80 02 ноя 2020, 12:45, всего редактировалось 1 раз.
Вернуться к началу

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: Монстры

Сообщение AlexSpl » 02 ноя 2020, 12:45

Тема с пользовательскими плагинами открыта для всех :smile1:

А урон в логе корректно отображается? Не тестировал, но код, выводящий урон в лог, выше хука.
Последний раз редактировалось AlexSpl 02 ноя 2020, 12:56, всего редактировалось 1 раз.
Вернуться к началу

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

Re: Монстры

Сообщение Ben80 » 02 ноя 2020, 12:55

Да, тема открыта и она не подразумевает какой-то ценз на суть выкладываемых плагинов, но в названии и первом сообщении темы говорится о поддержке разных версий. Поэтому просьба по крайней мере помечать, для каких версий тот или иной плагин предназначен.
Вернуться к началу

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

Re: Монстры

Сообщение Ben80 » 02 ноя 2020, 13:03

Урон в плагине не меняется. Меняется только тот самый "back" :smile1:
Который, к сожалению, в логе никак не фигурирует.
Вернуться к началу

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

Re: Монстры

Сообщение Ben80 » 02 ноя 2020, 13:32

Пока с плагином повоевал только с гномами и ворами. Даже какие-то жалкие воры и то теперь норовят забрать хотя бы 1 вампира и не отдать обратно. Так что, думаю, игровой процесс это делает поинтереснее - заставляет прикладывать голову и налаживать координацию действий отрядов, как в обычных битвах без Вампиров-Лордов.
Вернуться к началу

Пред.След.

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

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

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

cron