AlexSpl писал(а):
Я тоже так сначала подумал, вы попались в ту же ловушку, в которую попал и я месяц назад, изучая это дело. Размер мною был определен правильно, там просто массив или что-то другое, но впринципе ее размер гораздо меньше.
Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: База данных IDA от void17AlexSpl писал(а): Я тоже так сначала подумал, вы попались в ту же ловушку, в которую попал и я месяц назад, изучая это дело. Размер мною был определен правильно, там просто массив или что-то другое, но впринципе ее размер гораздо меньше. |
Re: База данных IDA от void17Вот такой класс type_AI_spellcaster:
Позже посмотрю типы элементов этих трёх массивов на 80 двордов. Цитата: Почему? К какому полю тогда обращается int __thiscall type_AI_spellcaster::get_fire_shield_value(type_AI_spellcaster *this, const army *Army, type_enchant_data EnchantData) вот тут: x = this->field_50[4 * Army->Index]; |
Re: База данных IDA от void17Кстати нужно разобрать type_AI_combat_parameters. Вот с этим классом у меня много сомнений.
|
Re: База данных IDA от void17Точнее, если интересно:
Т.е. по 4 байта на 20 отрядов. Ой, там же 80 двордов. Точнее по 16 байтов или 4 дворда. И до этого есть вот что:
а потом
Т.е. добавочный урон ещё там хранится. Последний раз редактировалось AlexSpl 25 ноя 2021, 05:22, всего редактировалось 1 раз.
|
Re: База данных IDA от void17Жаль, закрепить нельзя. Предлагаю такие префиксы для enum-ов:
SPL — тип заклинания, SF — флаги заклинаний CT — тип существа, CF — флаги существ, HT — тип героя, HF — флаги героя, SS — вторичный навык, SSL — ступень вторичного навыка, PS — первичный навык AO — тип объекта на карте Последний раз редактировалось void_17 25 ноя 2021, 06:10, всего редактировалось 1 раз.
|
Re: База данных IDA от void17Я выбрал для спеллов SPL_, уже переделал
А вот эта функция из конструктора проливает свет на назначение второго и третьего дворда:
Кстати, this->Side[0] у type_AI_spellcaster можно смело переименовывать в CasterSide, a Side[1] - в EnemySide, потому что тут всё строго, а не так как в combatManager, т.е. кастующий AI всегда с индексом 0, а его противник - с 1. Хотя... Не стоит. Мало ли по EnemySide где-то в коде получается CasterSide (типа, 1 - side). Будет некрасивый код. Лучше добавить enum на два значения: AI_CASTER, AI_ENEMY, например. |
Re: База данных IDA от void17Мне лично массивы не нравятся . Я пишу side1, side2, так нагляднее, потому что нумерация массива с нуля. Нуль смущает, ощущение, как будто неправильно что-то. На самом деле все ок, просто особенность указателей.
|
Re: База данных IDA от void17Ну вот, теперь можно понять назначение почти всех полей type_AI_spellcaster:
|
Re: База данных IDA от void17Это не init и не конструктор. Это void type_AI_spellcaster::find_enemy_attacks();
Там вначале функция void type_AI_spellcaster::set_melee_enemies(); по адресу 0x43BB70 Скопируйте и вставьте в название функции(клавиша N по функции) это:
IDA автоматически сдеманглит их в приличный вид. Кстати. Лучше убрать shifted pointers. Это бывает удобно, но потом сложно переносить код в реальный C++ исполняемый файл. Работа, конечно, впечатляет. Всего неделю назад загрузил базу, а уже во какой прогресс. Я знал, что мой труд окупится. Физмиг пополнится хорошечно этой зимой, чую я... |
Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 3