Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: База данных IDA от void17Хорошо. Молодцы. Пока работаете, запишите мне "техническое задание". Какие адреса вас интересуют и какие вас смущают. Я приеду домой и разберусь, отправлю вам. Не забудьте базы обновлять кстати.
|
Re: База данных IDA от void17Кстати. На декомпиляционный листинг Ghidra надеяться не рекоммендую практически в большинстве случаев. Все-таки между RoE и SoD большая разница, даже в полях структур.
|
Re: База данных IDA от void17Цитата: Меня интересует всё, что связано с использованием заклинаний AI, и вообще с заклинаниями. Кстати, начало army, скорее всего, тоже два вектора для Гипноза:
combatMonster_0043E720() может быть функцией удаления отряда из вектора Гипноза. А sub_00448A40() - освобождением вектора (начало = конец). |
Re: База данных IDA от void17AlexSpl писал(а): Цитата: Меня интересует всё, что связано с использованием заклинаний AI, и вообще с заклинаниями. Кстати, начало army, скорее всего, тоже два вектора для Гипноза:
combatMonster_0043E720() может быть функцией удаления отряда из вектора Гипноза. А sub_00448A40() - освобождением вектора (начало = конец). Полный бред, как по мне. В диске есть исправленная база 1.2 с army. В самом начале army есть поле hex интовое. Никак не может быть даже логически там никаких два vector-а, это не самое главное ведь. Эти два vector-a могут быть посередине, ну никак не в начале. Смотрите простые функции combatManager-a. |
Re: База данных IDA от void17Начало WalkTo:
Может и не Гипноз, но на вектор очень сильно похоже. В хексе смещение 0x514:
Последний раз редактировалось AlexSpl 30 ноя 2021, 04:30, всего редактировалось 1 раз.
|
Re: База данных IDA от void17Я спрошу кое-что у выходца из Хота крю(разрешил иногда спрашивать мелочевку), они там все абсолютно изучили и они наверняка знают, что там вначале и для чего.
Я не дома и базы под рукой нет, поэтому утверждать не могу точно, дождусь ответа человека. |
Re: База данных IDA от void17Может, это вектор для ауры? Обычно army::remove_aura() и army::remove_binding() в связке идут.
Моя логика такая. При уничтожении отряда убираем Гипноз (0x514) и ауру (0), при движении - только ауру (0). Вектор для ауры нужен, например, для заклинаний по площади. |
Re: База данных IDA от void17Вот посмотрите на это:
Похоже на удаление элемента вектора с конца: a1->aura[0].Last = a1->aura[0].Last - 4; У aura смещение 0. А вот это:
есть сдвиг элементов вектора влево на 1. |
Re: База данных IDA от void17Проапгрейдил своё понимание ауры
Так что как минимум 0x514 - это аура. |
Re: База данных IDA от void17Кажется, начинаю понимать связь Гипноза и ауры:
*(this->unicornAura[1].First + v22) + 0x514 - это, как Вы думаете, что? * * * Проще всего поставить хук и посмотреть, что произойдёт с полями 0x514+ юнита, окружённого единорогами (или наоборот) при выходе из ауры (помните, что это, вероятно, вектор, а поэтому указатели на реальные отряды нужно получать по First и Last), но лучше просто кастануть Hypnotize, чтобы затриггерить пересчёт ауры без подключения алгоритмов построения пути (для чистоты эксперимента). Если верить смещению +0x514 и сигнатуре combatMonster_0043E720(), то первым аргументом (в ecx) мы передаём army*. А эта функция уже работает с 0-м полем army. Поэтому я и сделал предположение, что поля 0x514 и 0 связаны. Я уже смотрел другой код, работающий с 0-м полем army, но, опять же, если верить типам в базе, работают с ним экземпляры класса army. Вот вам и задачка на ум и сообразительность Разбирать типы данных не легче, чем сверять сигнатуры. Снижение шанса срабатывания заклинания из-за ауры единорогов идёт в самом конце метода combatManager::SpellCastWorkChance(). Только здесь рассматривается только второй из двух векторов:
Но тогда зачем нужен первый? Здесь ещё есть код, проливающий свет на поле 0x28:
(some_field c оффсетом 20 у меня). Кого нельзя клонировать? Клонов, боевые машины, что ещё там в FizMiG'е? Цитата: Демоны, любое количество раз за бой, кроме самого Клона, существ уже имеющих Клон, существ с защитой от магии 4 уровня или магии в целом, а также существ с Продвинутой или Экспертной Антимагией. Медаль уязвимости позволяет клонировать существ с защитой от магии 4 уровня. Думаю, это этот случай. Юнит имеет клон. Нужно клонировать и посмотреть, как изменится это поле. Скорее всего, оно -1 до клонирования. Сколько у Royal Griffins реально ответок?
По 0-му полю вопрос снимается. Это что-то, связанное с гексами (не вникал). Однозначно не вектор. * * * Вот. Нашёл чем озадачить Вас, void17 Восстановите, пожалуйста, сигнатуру следующей функции из exchange_spells:
и мы закроем проблему нулевого поля Если здесь, конечно, вектор армий. Правило #1 при работе со структурами с неизвестными полями: смотри конструкторы/деструкторы:
|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1