зацикливание и "зависание" NewMoveXY
Posted: 21.12.2018 19:26
обнаружилась такая проблема: чар (лесоруб) ищет дерево, находит, дерево оказывается за забором чужой базы, забор длинный, чар по команде 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? может еще есть какойто способ взять под контроль эти зацикливания?
решить эту проблему пробовал так:
StepCnt:=GetPathArray(X,Y,true,1,mPathArr);
If (StepCnt>=0) and (StepCnt<20) then ... побежали else - ищем другое дерево
этот способ почемуто не срабатывает и чар бегает влево-вправо бесконечно, может "не видит" забор, может дверь в заборе считает за проход но пройти не может...
и еще одна проблема: чар стоит в 2-3-х тайлах от дерева? выводит мне в журнал: "иду к сл. дереву" - но чар остается стоять на месте, похоже что это - на перепаде высот, но, не уверен, если "руками" сдвинуть чара с "мертвой" клетки то он тут же начинает бежать и прибегает к дереву. т.е. опять же не выдает на движение "fslse" а просто стоит типа пытается шагнуть но безуспешно, зависая на команде NewMove
вопрос - можно както решить эти проблемы зависания и зацикливания без получения массива координа и перехода по каждому тайлу в отдельности? может есть какойто способ ограничить по времени NewMove? к примеру 10 секунд чар не достиг точки назначения значит NewMove прерывается возвращая результат false? может еще есть какойто способ взять под контроль эти зацикливания?