Объявления

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

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

Герои Меча и Магии III: Возрождение Эрафии, Герои Меча и Магии III Дыхание Смерти, Герои Меча и Магии III Клинок Армагеддона, Герои Меча и Магии III Хроники Героев
offlineBen80  
имя: Сергей
Эксперт
Эксперт
 
Сообщения: 1318
Зарегистрирован: 18 июн 2017, 06:49
Пол: Не указан
Поблагодарили: 336 раз.

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

Сообщение Ben80 » 20 май 2021, 17:10

AlexSpl писал(а):

ASI HotA не подтягивает. Захочет команда сделать версию с поддержкой плагинов, сделает :smile2:


Не пробовал и не имею Хоты на компе, но, может быть, у вас стоит HD мод ? Тогда asi нужно класть в _HD3_Data.
Асики же MSS библиотека подтягивает, а не Хота. Хота только может использовать свою MSS или каким-то образом "убивать" то, что подтягивается (я не хакер, поэтому уж выражаюсь так, как выражаюсь).
Вернуться к началу

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, 18:07

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

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

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

Сообщение Ben80 » 20 май 2021, 18:16

Да, вспомнил - я же проводил такой опыт с год назад - это позволило создать лог по хукам RMG Хоты (просто плагин на старой версии Хоты не позволял этого сделать - дело тут, разумеется, в последовательности загрузки).
Вернуться к началу

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

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

Сообщение Rolex » 20 май 2021, 19:38

А как из dll сделать asi? Ну или есть, например, код, который собирается в dll, какие настройки VS нужно сделать (или может в коде еще что добавить), чтобы получился asi?
Вернуться к началу

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

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

Сообщение Ben80 » 20 май 2021, 19:40

Разница только в расширении. Изменить его - и больше ничего не нужно.
Вернуться к началу

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

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

Сообщение Ben80 » 22 май 2021, 11:30

А можно ведь ставить 2 лохука на один и тот же адрес ? А если 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 раз.

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

Сообщение AlexSpl » 22 май 2021, 16:52

Ставить можно, выполняться они будут последовательно в зависимости от приоритета плагина (выше/ниже в списке подключённых) и приоритета самого хука (выше/ниже по коду). А ещё сам патчер позволяет менять порядок исполнения хуков. Насчёт работы хука с регистрами в случае двух и более по одному и тому же адресу точно не скажу. Лучше всего самому поставить и в дебаггере посмотреть. Тут два варианта: 1) каждый хук получает по оригинальному контексту регистров; 2) следующий хук получает изменённый предшествующим хуком контекст. И тот, и другой варианты имеют право на жизнь (иногда удобен первый, иногда второй). При случае посмотрю, какой именно вариант реализует патчер.
Вернуться к началу

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

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

Сообщение Rolex » 23 май 2021, 17:38

@AlexSpl
Столкнулся с одной проблемой при тестировании NewMagicMirror. Это как раз связано с последними правками, которые Вы делали, которые игнорят отряды под Слепотой. В итоге получилось так, что игнор идет тупо для всех отраженных заклов, что не очень хорошо. В данном случае рационально будет игнорить только дамажащие спеллы, которые могут раздуплить отряд и снять эту самую Слепоту. А такие заклы, как Слабость, Проклятие, Медлительность, Неудача и тп и даже повторное наложение самой же Слепоты игнорить ненужно. В приоритете над ними будут только неиммунные к направляемому заклу отряды без Слепоты (если таковы есть). Сейчас же получается так, что если отряд (или отряды), которые можно ослепить под Слепотой, а остальные имунны к ней (либо таковых нет), то при отражении не дамажащих одиночных заклов происходит отражение на первый же отряд с индексом 0. Если это имунный отряд, то он блочит этот закл соответственно, если же это отряд под Слепотой, то на него наложит, но только потому, что он окажется под индексом 0. То есть кол-во оставшихся раундов действия Слепоты и их Fight Value с другими отрядами под Слепотой (если таковы имеются) в данном случае не сравнивается. Причем отражает даже на мертвый отряд, если он под индексом 0. Это то, что касается синглкаста.

Если же говорить за масскаст, то он вообще не отражается (анимация резиста на всех отрядах). Это если на стороне кастующего остались только имунные к направляемому заклу отряды и отряды под Слепотой. Надо бы это исправить по возможности. Чтобы подобное поведение было только для дамажащих спеллов, которые могут снять Слепоту, для остальных же (Слабость, Проклятие, Медлительность, Неудача и другие) включая саму Слепоту, желательно чтобы все работало как обычно, то есть чтобы эти заклы накладывались на отряды под Слепотой. Ведь действие Слепоты может закончиться раньше, а эти заклы еще могут действовать. Саму же Слепоту можно и нужно накладывать повторно на уже имеющийся отряд под Слепотой, если нет других отрядов на которые ее можно наложить, тем самым продлевать/обновлять длительность ее действия.

PS: Аналогичная ситуация (как с масскастом) и с площадным не дамажащим заклом - Берсерком. Если на стороне кастующего только отряды с уже наложенной Слепотой и Черный/Золотой дракон/Магический элементаль, то Берсерк при наложении его на вражеские отряды под Зеркалом просто резистится (отражается в никуда), а разумней было бы его отражать на отряды кастера под Слепотой.
Вернуться к началу

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 » 24 май 2021, 17:48

Нужно вот в эту функцию добавить проверку на ударные заклинания, аналогичную проверке на Forgetfulness:

Код: Выделить всё
bool _BattleStackEx_::approvedTarget(const int spell)
{
    return !this->is_killed && !this->isImmuneTo(spell) && !(spell == SPL_FORGETFULNESS && this->creature.shots == 0) &&
        !this->active_spell_duration[SPL_BLIND] && !this->active_spell_duration[SPL_STONE] && !this->active_spell_duration[SPL_PARALYZE];
}
Вернуться к началу

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

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

Сообщение Rolex » 25 май 2021, 06:06

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

Пред.След.

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

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

Сейчас этот форум просматривают: Yandex [bot] и гости: 1