Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаУже первый баг нашел. Площадное отразилось на отряд, которого уже нет в живых.
|
Re: Как создать плагин для HD модаТак и должно быть. Оно отражается на стек с индексом 0, жив он или нет. Можете свою написать функцию. Там несложно. Умеем получать отряд по номеру гекса? Да. Знаем, как найти гексы вокруг заданного? Да. Остаётся проход по всему полю и поиск гекса с максимальным кол-вом отрядов, попадающих в заданный радиус (условие можно любое проверять).
|
Re: Как создать плагин для HD модаЕщё потестируйте Death Ripple. Наверняка заметили, что код для Destroy Undead отличается. Там очень важно сохранить edi. А вообще, интересно, как два таких похожих заклинания могут так отличаться в реализации. Дело даже не в компиляторе. Реально их писали по-разному.
|
Re: Как создать плагин для HD модаДа, увидел, что Вы еще своего алгоритма не писали. Пока просто затычка. Все осталось, как в сообщении:
AlexSpl писал(а): Добавил тривиальное отражение AoE: на стек противника с индексом 0. Как бы скелет плагина готов. Осталось написать грамотные алгоритмы выбора цели (в том числе, эпицентра отражённого AoE закла*), оптимизировать код и исправить возможные баги * Здесь Вам всего лишь нужно выбрать гекс-эпицентр отражённого заклинания и передать его вот сюда:
Поле имеет размер 17 x 11 гексов. 0-я и 16-я вертикали - для боевых машин. Нужно написать функцию, которая будет проходить по всем гексам поля, и вычислять кол-во вражеских отрядов в нужном радиусе от текущего гекса. Я попробую поиграться. Не знаю только, что у меня получится и насколько это будет эффективно. Для начала нужно разобраться с
В o_BattleMgr->stack[o_BattleMgr->current_side][0].hex_ix если я изменяю [0].hex_ix на любое другое ([1].hex_ix, [2].hex_ix, [3].hex_ix) анимация проигрывается уже на стеке с указанным индексом. А как сделать так, чтобы анимация проигралась, например, посредине поля боя? То есть чтобы мы не были привязаны к отрядам, а шли по гексам и проверяли именно на гексах отряды, а не по отрядам, как сейчас. И что это за a3, a4 - это координаты гекса или что? Вижу они передаються в функцию areaReflection, но где они вычисляються? При этом если у обеих сторон стоит Зеркало, то может быть так, что после отражения на вражеский стек, сам вражеский стек его также отразит, правда уже в никуда. AlexSpl писал(а): Видимо разные программисты писали. UPD: Попытался вызывать CALL_5(void, __thiscall, h->GetDefaultFunc(), battleMgr, 165, spell, a3, a4); вместо привяки к отряду указываю номер гекса. Гексы как я понял нумеруються слева на право и сверху вниз. Так вот, если мы задает номер гекса по первой горизонтале, то все ок. На том гексе и будет эпицентр закла (от 1 до 15). А вот при движении вниз уже идет какой-то сдвиг. Всего гексов 165 (15 * 11), указываю 38-й, анимация проигрывается на 34-м, указываю последний 165, а анимация проигрывается на 147. С чем это связано? AlexSpl писал(а): Нет. o_BattleMgr->stack[o_BattleMgr->current_side][0].creature_id - айди стека с индексом 0 o_BattleMgr->stack[o_BattleMgr->current_side][0].hex_ix - позиция стека на поле боя с индексом 0, то есть номер гекса на котором он находится Как мне из o_BattleMgr->stack[o_BattleMgr->current_side][0].hex_ix получить o_BattleMgr->stack[o_BattleMgr->current_side][0].creature_id ? AlexSpl писал(а): Я бы получал так:
Но не уверен, может быть есть более простой метод. |
Re: Как создать плагин для HD модаЦитата: Я уже писал, что поле - 17 x 11, и это связано с вертикалями для боевых машин. Получить _BattleStack_* по _BattleHex_ можно так: o_BattleMgr->hex[hex_id].GetCreature(); |
Re: Как создать плагин для HD модаА есть ли еще какой-то метод получения соседствущих гексов вокруг заданного, кроме того, что я написал?
|
Re: Как создать плагин для HD модаТочно есть. Игра же как-то считает. Но и самому написать не большая проблема. Плюс я не уверен, что есть "чистая" функция проверки в игре.
|
Re: Как создать плагин для HD модаТам Ваши же алгоритмы, только с проходом по всему полю Плюс функция удобно встраивается в качестве аргумента. Т.е. все вычисления в dataInit(), а в качестве аргумента - гекс, который возвращает Ваша функция. И всё, плагин готов (в том числе, к отлову неожиданных багов).
Хотя не совсем в dataInit(). Мы же дамаг нанесли. Можно вычислять прямо перед вызовом каста отражённого заклинания, чтобы состояние битвы оставалось актуальным. |
Re: Как создать плагин для HD модаИ еще вопрос, а есть ли какой-то булевый метод проверки, чтобы проверить отряд ли это кастуемого героя или отряд врага?
|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1