Это прекрасный скрипт для МВ, позволяющий тегами довольно гибко настроить поведение врагов. Линк тут http://yanfly.moe/2015/10/19/yep-16-battle-a-i-core/
При его использовании столкнулся с небольшой сложностью, а именно - заданием нескольких условий вместе.
Как известно, счет строк под <AI Priority> происходит по порядку сверху вниз, и первое удовлетворяющее условие и реализуется.
Доступных тегов много, но, когда хочется их комбинировать, возникают сложности.
Например, я хочу, чтобы когда ХП врага станет меньше половины он с таким-то шансом использовал 1 навык, и с таким-то другой. Иначе - простую атаку.
Написать два рандома типа Random 50%: Skill 10, Lowest HP% друг под другом просто, но как это увязать еще и с количеством ХП.
Тут на помощь приходит Eval, в который можно подсунуть несколько условий через && (чего в обычном режиме нельзя).
Вот пример выше переписанный под eval:
<AI Priority>
eval user.hp / user.mhp <= 0.5 && Math.random() <= 0.3: SKILL 41, <<nothing>>
eval user.hp / user.mhp <= 0.5 && Math.random() <= 0.5: SKILL 42, <<nothing>>
Always: SKILL 40, <<nothing>>
</AI Priority>
user - это тот, на ком проверяется, mp/mhp <= 0.5 и есть реализация HP% param <= 50% , а далее через && тот самый рандом. Math.random() генерирует случайное число от 0 до 1, ну и проверка, соответственно, проста.
Зная чутка, как устроены классы баттлеров, евалом можно творить много чего.
При его использовании столкнулся с небольшой сложностью, а именно - заданием нескольких условий вместе.
Как известно, счет строк под <AI Priority> происходит по порядку сверху вниз, и первое удовлетворяющее условие и реализуется.
Доступных тегов много, но, когда хочется их комбинировать, возникают сложности.
Например, я хочу, чтобы когда ХП врага станет меньше половины он с таким-то шансом использовал 1 навык, и с таким-то другой. Иначе - простую атаку.
Написать два рандома типа Random 50%: Skill 10, Lowest HP% друг под другом просто, но как это увязать еще и с количеством ХП.
Тут на помощь приходит Eval, в который можно подсунуть несколько условий через && (чего в обычном режиме нельзя).
Вот пример выше переписанный под eval:
<AI Priority>
eval user.hp / user.mhp <= 0.5 && Math.random() <= 0.3: SKILL 41, <<nothing>>
eval user.hp / user.mhp <= 0.5 && Math.random() <= 0.5: SKILL 42, <<nothing>>
Always: SKILL 40, <<nothing>>
</AI Priority>
user - это тот, на ком проверяется, mp/mhp <= 0.5 и есть реализация HP% param <= 50% , а далее через && тот самый рандом. Math.random() генерирует случайное число от 0 до 1, ну и проверка, соответственно, проста.
Зная чутка, как устроены классы баттлеров, евалом можно творить много чего.
Комментариев нет:
Отправить комментарий