Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
Re: Улучшение ИИТак, палатка может быть последней в списке монстров. И вылет из-за того, что выходим за границы массива.
|
Re: Улучшение ИИЦитата: Вот здесь, если указатель на монстра равен 0, то выходим из цикла (0x421DE9), а не EXEC_DEFAULT. Так, за границы массива мы не выйдем, там по 20 отрядов на каждую сторону, но мусор получить можем, если палатка действительно последний стек. |
Re: Улучшение ИИТак тоже вылет:
|
Re: Улучшение ИИПосле вылета нажмите "Не отправлять" и посмотрите крэш-лог. Очень бы помог адрес инструкции, на которой происходит вылет.
|
|
Re: Улучшение ИИas239 писал(а):
Level(0-6), Grade(0,1) Suggestion to avoid extra arithmetic and risk of errors:
Also has handy begin() and end() iterator that hase both Base() and Upgraded() directly... |
Re: Улучшение ИИAlexSpl писал(а):
|
Re: Улучшение ИИВсё ясно. Делим на 0 хитпоинтов, а это значит пропускаем в цикл несуществующего монстра. Нужно как-то понять, что мы имеем дело с последним монстром, и в этом случае не продолжать цикл, а выходить из него.
Короче, в c->edi попадает мусор после последнего стека, который рассматривается, как структура H3CombatMonster. |
Re: Улучшение ИИПредлагаю проверять не по указателю, а по индексу существа (сравнивать индекс текущего отряда с общим кол-вом отрядов героя):
У _BattleStack_ есть поле:
Вот его и сравнивать. Последний раз редактировалось AlexSpl 14 май 2020, 13:12, всего редактировалось 1 раз.
|
Re: Улучшение ИИAlexSpl писал(а): Короче, в c->edi попадает мусор после последнего стека, который рассматривается, как структура H3CombatMonster. Да действительно похоже так и есть. Сделал вот так, тупо считая, что палатка всегда последний стек:
Вылета нет и поведение ИИ стало гораздо лучше. Было: Стало: |
Re: Улучшение ИИПочти как человек сыграл.
Цитата: Кстати, да. Где-то читал, что боевые машины в самом конце идут, а поэтому код верный (как только встречаем боевую машину, прерываем цикл, т.к. если и есть какие-то стеки после неё, то они тоже боевые машины). Хотя... Как насчёт клонов и призванных элементалей? Так что проверку всё же нужно делать. |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1