Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

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

тут можно задать вопрос по скриптингу
Post Reply
Sed
Neophyte
Neophyte
Posts: 24
Joined: 12.11.2016 15:53

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

Post 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? может еще есть какойто способ взять под контроль эти зацикливания?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

пиши в скайп или в дискорд, и давай чара со скриптом.
Буду смотреть, что там не так в поиске пути.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Sed
Neophyte
Neophyte
Posts: 24
Joined: 12.11.2016 15:53

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

Post by Sed »

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

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

и всётаки вопрос остаётся - можно ли както искусственно прервать выполнение команды NewMove до того как чар достиг точки назначения?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post by Vizit0r »

в следующей версии можно будет. Но опять же, смотря на каком именно месте поиска пути он у тебя зависает.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

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

Post by drabadan »

вообще же, достаточно обернуть гетПасАррай с степом и коллбеком после каждого степа если он ок.
Я не помню где, но точно такое было.
Post Reply