- Код: Выделить всё
struct AIStackToRecruit
{
int creatureType;
short* sourceArmyCounts;
short creaturesAvailable;
char r1;
char r2;
void updateAvailableCreatures();
} *AIStacksToRecruit = new AIStackToRecruit[16];
Объявления |
---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Как создать плагин для HD модаBen80, а Вы знаете, как разрешить строить? Потому что разрешить нанимать очень просто: нужно в конец вектора добавить существо из портала, и AI будет рассматривать его найм (и точно нанимать, когда у него отстроены только жилища нижних уровней). Возможно, правильно нужно будет указать sourceArmyCounts в
|
Re: Как создать плагин для HD модаAlexSpl писал(а): У меня просто нет сейчас на компе декомпилированного кода, нет IDA и VisualStudio Поэтому попробую описать Добавлять код нужно в ту же самую процедуру, где ИИ взвешивает постройку двеллингов и некоторых других строений. Например, Necromancy Amplifier. Сейчас попробую посмотреть в соседний теме адрес. *** Вот, нашел.
Значит это нужно делать в той процедуре, внутри которой адрес 0x42B131. Вы же можете посмотреть декомпилят этой процедуры - после просмотра должно быть более-менее понятно. Правда, придется подумать, как рассчитать вес. Но это уже приятная творческая часть. |
Re: Как создать плагин для HD модаЯ обычно с дебаггером прохожусь по новому коду, чтобы быстрее понять, как всё работает. Зачастую быстрее понимаешь, что делает функция, чем когда анализируешь декомпилированный листинг. Плюс при пошаговом исполнении инструкций можно поиграть с содержимым регистров (в том числе EIP! и регистром флагов).
|
Re: Как создать плагин для HD модаДа, я и забыл, что вы ассемблер предпочитаете.
Процедура (0x42AE00), конечно, очень сложная (я ее до конца так и не понял). Гораздо проще было бы добавить постройку Портала Призыва в той же процедуре, где строится Академия боевых искусств. Но это была бы халтура - Академия строится для нужд героя-гостя (и другие постройки в этой процедуре - тоже для героя-гостя). |
Re: Как создать плагин для HD модаЦитата: Листинг не покажет Вам содержимое регистров и памяти в каждый конкретный момент. Нормально им пользоваться можно потому, что есть heroes3f.idb, дебаг мап Эры и т.д. Вы попробуйте разобрать листинг на чистой базе IDA Плюс моего подхода заключается в том, что можно быстро понять, что именно в каком регистре. Навёл мышку, а тебе всплывающее окошко со структурой, на которую он указывает. Хочешь - результат cmp поменял и пошёл не по той ветке, по которой бы пошла игра. Хочешь - откатился и повторил. Короче, много преимуществ перед листингом. А ещё декомпилятор будет генерить неуместные stdcall, cdecl, long double, когда там fastcall, thiscall, float, например. И очень часто аргументы неверно интерпретирует. Но для простых функций, в которых используются известные структуры, конечно, незаменим. Но когда встречается новая, одним листингом не обойтись. |
|
Re: Как создать плагин для HD модаSide-by-side disassembler and debugger is the best!
Static analysis works well once you have enough information worked in and can deduce more things. Interesting discussion, though I do not have much to contribute at this time due to time constraints, I will follow closely and can always perform quick static analysis |
Re: Как создать плагин для HD модаВ процедуре 0x42AE00 для возможных построек рассчитывается "профит" и расходы. Для Портала Вызова, думаю, было бы честно определить профит как "средневзвешенный" от профита по имеющимся у игрока внешним двеллингам (профит от внешних двеллингов и базовый (без цитадели) от внутренних одинаковый, а как находить профит для внутренних двеллингов - ясно из процедуры).
Расходы же на постройку Портала очевидны. |
Re: Как создать плагин для HD модаНовые внешние двеллинги (первый уровень платно; при наличии ул. постройки - возможность выбора между грейженым и негрейженым существом):
UPD: Добавил пропущенную проверку на 0x11 двеллинг. Последний раз редактировалось AlexSpl 05 май 2021, 15:31, всего редактировалось 4 раз(а).
|
Re: Как создать плагин для HD модаAlexSpl, я так понял улучшенные алгоритмы по скупки существ AI в городе Вы сюда не включали? Если так, то все верно. То есть в этом плагине должен быть только улучшенный алгоритм AI по скупке существ во внешних жилищах при появлении грейженных существ. Плагин по улучшению AI, который не касается грейда в жилищах, лучше вынести отдельно. Пока он будет по скупке существ в городе, а потом может еще что-то в него добавится. Его лучше развивать отдельно.
При этом, AlexSpl, опубликуйте, пожалуйста, еще два кода: 1) Тот же плагин, что и этот в плане скупки существ AI в жилищах, со всеми фиксаими, но грейд на постоянной основе, как было изначалаьно. Или просто скажите, что убрать/добавить/закомментить в этом коде, чтобы получить, грейд на постоянной основе. Чтоб было у меня и то и другое. 2) Плагин с улучшенные алгоритмами по скупке существ AI в городе (последняя Ваша версия), то что Вы уже успели сделать вместе дебаг-модом (можно его закомментить). Последний раз редактировалось Rolex 05 май 2021, 15:52, всего редактировалось 2 раз(а).
|
Re: Как создать плагин для HD модаЦитата: Уберите проверку playerHasUpgDwelling() в хайхуке. Цитата: Как только будет готов. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1