Page 1 of 1

зацикливание и "зависание" NewMoveXY

Posted: 21.12.2018 19:26
by Sed
обнаружилась такая проблема: чар (лесоруб) ищет дерево, находит, дерево оказывается за забором чужой базы, забор длинный, чар по команде NewMoveXY(x,y,true,1,true) бежит влево оббегать забор, тайлов через 30 видит что он бесконечный, бежит вправо, видит тоже самое, бежит влево и так зацикливается бегая влево/вправо

решить эту проблему пробовал так:
StepCnt:=GetPathArray(X,Y,true,1,mPathArr);
If (StepCnt>=0) and (StepCnt<20) then ... побежали else - ищем другое дерево

этот способ почемуто не срабатывает и чар бегает влево-вправо бесконечно, может "не видит" забор, может дверь в заборе считает за проход но пройти не может...

и еще одна проблема: чар стоит в 2-3-х тайлах от дерева? выводит мне в журнал: "иду к сл. дереву" - но чар остается стоять на месте, похоже что это - на перепаде высот, но, не уверен, если "руками" сдвинуть чара с "мертвой" клетки то он тут же начинает бежать и прибегает к дереву. т.е. опять же не выдает на движение "fslse" а просто стоит типа пытается шагнуть но безуспешно, зависая на команде NewMove

вопрос - можно както решить эти проблемы зависания и зацикливания без получения массива координа и перехода по каждому тайлу в отдельности? может есть какойто способ ограничить по времени NewMove? к примеру 10 секунд чар не достиг точки назначения значит NewMove прерывается возвращая результат false? может еще есть какойто способ взять под контроль эти зацикливания?

Re: зацикливание и "зависание" NewMoveXY

Posted: 22.12.2018 18:41
by Vizit0r
пиши в скайп или в дискорд, и давай чара со скриптом.
Буду смотреть, что там не так в поиске пути.

Re: зацикливание и "зависание" NewMoveXY

Posted: 22.12.2018 20:41
by Sed
спасибо, но тут всё не так просто, скрипт может проработать несколько суток без проблем, но потом в один момент я замечаю что чар тупо стоит на месте с надписью в журнале "иду к дереву" - это происходит совершенно непредсказуемо и повторить такое "в лаборатории" специально я не представляю как, проблему со стенами решил запретом проходить сквозь двери, вроде пока со стенками проблем не замечал после этого.

с остановкой на "одном месте" пробую изменять параметр optimized и коэфициент эвристики, вроде в последние сутки пока сбоев небыло

и всётаки вопрос остаётся - можно ли както искусственно прервать выполнение команды NewMove до того как чар достиг точки назначения?

Re: зацикливание и "зависание" NewMoveXY

Posted: 23.12.2018 18:48
by Vizit0r
в следующей версии можно будет. Но опять же, смотря на каком именно месте поиска пути он у тебя зависает.

Re: зацикливание и "зависание" NewMoveXY

Posted: 30.12.2018 16:07
by drabadan
вообще же, достаточно обернуть гетПасАррай с степом и коллбеком после каждого степа если он ок.
Я не помню где, но точно такое было.