ellysh / l2bot

Simple and easy configurable Lineage 2 bot on AutoIt scripting language
http://en-l2bot.blogspot.com
GNU General Public License v3.0
35 stars 26 forks source link

Рекурсия #2

Closed LifeMoroz closed 10 years ago

LifeMoroz commented 10 years ago

Перекрестная рекурсия? А если спаун мобов будет настолько частый, что всегда будет nexttarget? Переполнение гарантировано. Attack <> NextAttack source / attack.au3

ellysh commented 10 years ago

Не совсем понял описываемую проблему. Пока текущий моб не убит переключения на nexttarget не происходит. Если мы будем всегда переключаться по nexttarget, а не по списку мобов для атаки - это совершенно нормальное поведение. Мы не можем гарантировать, что моб, в радиусе команды nexttarget не сагрился, поэтому его надо убить.

Рад вашему интересу к проекту! Если есть предложения по улучшению алгоритмов, готов их рассмотреть и включить в код.

LifeMoroz commented 10 years ago

Проблема не в переключении. Вы вызываете Attack() она рано или поздно вызовет NextAttack(), которая вызовет Attack() и так будет до бесконечности, при условии что боты будут ресаться достаточно быстро. Я чего-то не знаю про рекурсию в autoIt? Мне что то подсказывает что в итоге стэк вызовов переполнится

ellysh commented 10 years ago

Да, вы совершенно правы. Возможно переполнение стека. Алгоритм должен быть исправлен.

ellysh commented 10 years ago

Коммит, исправляющий проблему: https://github.com/ellysh/l2bot/commit/73eafc1097ccfab255e522be55e6f15b753f6e83