Объявления | ||
---|---|---|
Друзья, если не получается зарегистрироваться, напишите на почту vdv_forever@bk.ru. Я оторву свою задницу от всех дел и обязательно Вас активирую! Добро пожаловать на геройский форум! |
|
Re: Улучшение ИИNot yet... now yes.
|
Re: Улучшение ИИПлагин для проверки работы функции sub_423C80 (AI_CalcBattleStack_GetCastSpellValue):
Декомпилировал я почти верно Только в CalcSpellDamagePercentage() первым параметром нужно передавать номер заклинания (spellId), а не адрес соответствующей структуры H3Spell. Пропустите ход и наблюдайте за мыслью компа |
Re: Улучшение ИИЯ правильно перевел флаги:
И какие значения лучше установить чтобы ИИ использовал эти заклинания: Disguise, Quicksand, Land Mine, Force Field. В первую очередь интересуют Мины и Зыбучие пески, против человека их использование выглядит интересно. |
Re: Улучшение ИИДа, все правильно.
Реализация эффективного использования заклинания Disguise ИИ возможна и была бы интересна, но требует слишком большого количества усилий. По Force Field в принципе могу сказать то же самое, кроме того, что это не так интересно ) По Land Mine и Quicksand - реализация была бы не очень сложной. Но ИИ в любом случае не сможет их использовать достаточно эффективно. Да и человек использует их эффективно только через знание алгоритмов движения юнитов ИИ на поле боя. Если прописать ИИ юнитам более непредсказуемую траекторию движения, то даже человек их не сможет эффективно использовать. Наиболее перспективной была бы реализация Берсерка для ИИ. Но реализация требует использования MovementManager на поле боя. С MovementManager я еще не разбирался. Зато для некоторых задач смог прикрутить свой собственный 'MovementManager" на карте приключений через реализацию алгоритма Дейкстры. |
Re: Улучшение ИИМины и пески я хотел бы включить для случая, когда у ИИ есть такой свиток, и нет ни какой другой эффективной магии.
Цитата: Интересны подробности, для каких целей используется, в чем заключаются эффект и т.д. |
Re: Улучшение ИИМожет использоваться для самых разных целей (так же, как и оригинальный MovementManager). Определить расстояние от героя до объекта (и саму возможность достигнуть объекта). Также может быть применено к задачам "постанализа" генерации случайных карт - определить возможность прохода из одной зоны в другую, возможность обхода монстра, охраняющего проход.
|
Re: Улучшение ИИХотел отметить интересную особенность расчета ИИ веса для втор. навыков Школ магии. Если у героя совсем нет данной Школы, то берется разница с экспертным уровнем, а не базовым (sub_00525200).
Я у себя хотел реализовать примерно также, только итоговый вес еще и делить на 3
|
Re: Улучшение ИИЕсть желание полностью переписать хайхуком функцию sub_00527C40, где для лучшего заклинания расчитывается разница между эффективностью для текущего состояния героя и состояний, где он имеет разные прибавки - в колд.силе, мане и тд.
Идея в том, чтобы брать не единственное самое лучшее заклинание, а среднее по лучшим заклинаниям в своей группе. Скажем, можно разделить все заклинания на 3 группы: 1) дамажные 2) недамажные 3) карты приключений. То есть там, где в оригинале функция sub_00527A90 вызывается из sub_00527C40 1 раз - у меня будет вызываться 3 раза. Это, конечно, если я не поленюсь все это сделать Просто отмечаю недостаток текущей реализации с единственным лучшим спеллом - такие навыки, как Волшебство, Грамотность, Орлиный глаз, Мистицизм, Интеллект, Мудрость часто имеют то крайне низкие значения, то весьма высокие. |
Re: Улучшение ИИКстати, при желании можно сделать достаточно много AI групп для заклинаний, даже больше, чем в оригинале, используя для этого неиспользуемые флаги в SpellFlags.
Скажем, для Медлительности и Ускорения можно создать свою группу, или даже каждому из этих спеллов - по группе. При этом расчет эффективности для каждого заклинания будет производиться по старым алгоритмам, просто вместо одного лучшего заклинания будет усредненное значение для ряда групп заклинаний. |
Re: Улучшение ИИА какая функция рассчитывает доступную ману героя?
Можно, конечно, самому посчитать, но через родную функцию было бы лучше. Обновлено: Готовой функции нет, при выводе вот так считается:
Последний раз редактировалось as239 10 май 2020, 09:44, всего редактировалось 1 раз.
|
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2