Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаИнтересно, не знал. Значит тогда остается только один вариант - поднять вероятность отражения с 20% / 30% / 40% до 40% / 50% / 50% и сделать его массовым на Экспертном уровне. Ну и реализовать то, что я описал - отражение на самые сильные отряды противника. Только так мы сможем его хорошенько усилить.
|
Re: Как создать плагин для HD модаЦитата: В структуре _CreatureInfo_ есть поле fight_value (o_pCreatureInfo[creature_id].fight_value), опираясь на значение которого AI оценивает эффективность/боевую мощь отрядов. Можно, например, его использовать вместо своего кастомного. Есть ещё одна характеристика силы отряда: AI_value, но она используется, насколько мне известно, на карте приключений. Цитата: Исправляя любое заклинание, нужно также вносить изменения в алгоритмы AI, а там дебри Ещё появляются вопросы, как поступать с иммунитетом существ. Если самый сильный отряд противника - Чёрные драконы, то что делать с отражённой в них Магической стрелой? И т.п. Короче, код не очень простой, а эффективность заклинания всё равно остаётся под сомнением. |
Re: Как создать плагин для HD модаAlexSpl писал(а): Ну это если мы поднимем вероятность выше 50%, то тогда придется править алгоритмы AI, а если вероятность в пределах 50%, то получается AI будет кастовать и сможет получить ответку отражением. AlexSpl писал(а): Ну сейчас абилка срабатывает как обычно с тем кодом, который я опубликовал. То есть нам ничего ненужно в данном случае делать. Получается заклинание отражается от отряда под Зеркалом и если это заклинание направляется на существо с иммунитетом от него (хоть Черный дракон), то тут же срабывает его иммунитет (анимация Щита - сопротивление к магии). Ведь случайно выбранный отряд точно также может быть Черным драконом. Другой вопрос, что польза тогда от этого заклинания действительно будет сомнительна, если всегда все будет падать на Черного дракона, а он все будет блокировать. Кстати, Черный дракон такой не единственный, есть еще Элементали магии, у них также полный иммунитет к магии. Вот эти два существа (Черные драконы и Элементали магии) мы можем добавить в исключение, то есть если кто-то из них оказывается самым сильным в армии противника, то вместо них мы берем второй по силе отряд (если он есть). Еще можно подумать над Золотыми драконами у которых иммунитет к магии 1-4 уровня, а также Лазурными, Красными и Зелеными драконами у которых иммунунитет к магии 1-3 уровня. Например, если уровень направляемоего заклинания выше чем тот, который они могут блокировать, то оставляем их в качестве цели, иначе - берем второй по силе отряд (если он есть). И еще, наверное, придется проверять выбранную цель на наложенные заклинания, и если на цель наложена Антимагия такого уровня, которая отразит направляемое заклинание, то выбирать опять же следующий по силе отряд (если он есть). Но основная фишка, как я писал на предыдущей странице, - это массовое отражение. То есть враг колдует массовое Замедление на отряды героя, а в итоге замедляет все свои отряды. 50% уже неплохо, если каждый отряд под Зеркалом. Ну а если подправить немного AI, думаю, можно добится того, чтобы AI колдовал даже тогда, когда вероятность отражения выше 50%. Последний раз редактировалось Rolex 11 мар 2021, 17:04, всего редактировалось 2 раз(а).
|
Re: Как создать плагин для HD модаПереназначить цель Вы можете здесь: 0x5A05CC. Пропишите в eax тот отряд, на который хотите перенаправить магию (см. структуру _BattleStack_ и как достать её из _BattleMgr_). Проверить заклинания, которые висят на отряде, можно через тот же _BattleStack_. ID заклинания в *(int*)(c->ebp + 8). Можете хук чуть ниже поставить (0x5A05CF), тогда ID заклинания будет в ecx. Я предпочитаю первый вариант: когда хук затирает целое число команд, но это на любителя.
То есть. У Вас есть всё необходимое, чтобы перенаправить заклинание на другой отряд. Попробуйте для начала самостоятельно реализовать перенаправление для одного стека. А потом, может быть, разберёмся и с массовым. Цитата: Не всё Я нашёл для Вас место хука, в котором все структуры* для работы Вашего алгоритма доступны. Пробуйте. Уверен, лучше один раз понять, как всё работает, самому. Да и нет ничего сложного в случае отражения на один стек. * OK. Кое-что, требующееся для решения задачи, Вам неизвестно, но я предлагаю хотя бы понять, что именно Вам неизвестно |
Re: Как создать плагин для HD мода
В общем попытался я для начала на свой заданный отряд отразить (Архангелы), но что-то пошло не так. Короче поломал я Волшебное зеркало вашим хуком. Проигрывается анимация Зеркала, а после заклинание не отражается на отряд кастуещего, а направляется на этот же целевой отряд, либо вообще вылетает (тестил в мультиплеере - Hotseat). |
Re: Как создать плагин для HD модаВторой индекс - это не CID, а порядковый номер отряда героя. Пройдитесь по всем отрядам, узнайте кто есть кто и перенаправляйте заклинание на отряд с нужным Вам индексом. Заодно в цикле сможете посчитать силу отрядов и выбрать самый сильный. Далее, здесь мы не пропускаем оригинальный код, поэтому возвращаем EXEC_DEFAULT.
|
Re: Как создать плагин для HD мода
Все равно что-то не то, выбирает отряд случайным образом. Даже если в eax записывать всегда один фиксированный порядковый номер отряда героя, то выбирается случайный. |
Re: Как создать плагин для HD модаВ eax не индекс отряда писать нужно, а указатель на его структуру _BattleStack_. Первый раз Вы почти правильно сделали.
|
Re: Как создать плагин для HD модаВот так вроде работает:
Но вылазит куча проблем. Отряд на который отражается заклинание клонируется и заклинание получается накладывается именно на клон. Вернее оно накладывается на нужный отряд, но здоровье отнимается у клона, который появляется рядом, а исходный отряд остается не тронутым. А после того, как очередь хода доходит до нашего отряда на который было отражено заклинание, порядок хода замирает и не переходит на следующий отряд, то есть тупо всегда ходит один этот отряд и ничего не поделать, даже пропуск его хода не помогает. При этом еще и o_pCreatureInfo[i].fight_value как-то непонятно работает. Он определил самым сильным отрядом - Магических элементалей, когда в армии героя есть Лазурные драконы, Черные драконы и Архангелы. |
Re: Как создать плагин для HD модаЦитата: См. как определён stack в _BattleMgr_ (какой у него тип). Вы же должны поместить в eax указатель на stack. Цитата: Индекс у o_pCreatureInfo - CID, а не позиция. К тому же, Вы забываете умножать Fight Value на кол-во существ в стеке. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1