Добавлен MpW
Объяснение: приказ patrol в дружественную цель превращается в режим следования - такое исключается, т.е. мы это не фиксируем. А вот приказ patrol с зажатым SHIFT в точки превращается патрулирование в разные точки.
Заметил, что можно SHIFT-том задавать многоточечное патрулирование. И она ломается мне механику. Юнит не может завершить патруль. Он выполняет его бесконечно.
Пояснение: Обычно приказ patrol в точку работает так:
при отдаче приказа patrol в точку, юнит запоминает 2 точки: текущую и указанную. В указанную следует, а после достижения вернется в текущую. И так будет маячится между двумя точками. Если зажать SHIFT, и указать еще несколько, то все эти точки записываются в строгий порядок, так следом после двойки идут остальные указанные точки. Ваш герой будет курсировать патрулем последовательно каждую точку. Думаете, что после последней юнит завершит? Нет, он начнет сначала с первой. короче двигается кругами.
при отдаче приказа patrol в точку, юнит запоминает 2 точки: текущую и указанную. В указанную следует, а после достижения вернется в текущую. И так будет маячится между двумя точками. Если зажать SHIFT, и указать еще несколько, то все эти точки записываются в строгий порядок, так следом после двойки идут остальные указанные точки. Ваш герой будет курсировать патрулем последовательно каждую точку. Думаете, что после последней юнит завершит? Нет, он начнет сначала с первой. короче двигается кругами.
Мне нужно, чтобы юнит как-то завершал патрулирование. Если в очередь приказов добавить еще приказы, то они там и останутся. В оригинальном варике он как-то после завершения патрулирования точек пытается завершить, и потом возвращается к патрулю. Да вообще, можно как-то заигнорить патруль, или выполнять в последнюю очередь.
Проблема еще одна: беготня по точкам героя никак не зафиксировать событиями. В начале то да, а после уже не дают. Как узнать, что юнит дошел до точки, и развернулся в другую. В некоторых ситуациях, нит может не доходить до точки, к примеру то место загорожена деревьями или глубокое море.
Даже подумываю как-то заменить патруль в точку, на атаку в точку => единственное, что фокус зеленой рамки перепрыгивает на кнопки атаки. Или как-то придумать. Я уже запутался =)
Пробовал поработать с таймером, чекающим 1/32 сек изменение положения юнита. ОБычно когда юнит доходит до точки или упирается в преграду, он останавливается. Но че-то это хреновая затея, тк у меня таймер фиксирует даже в когда юнит двигается. пример при движении юнит поворачивается - уже видим что остановился???? Мб интервал надо больше ставить, или ?
код
Paladin = CreateUnit(Player(0),FourCC('Hpal'),0,0,0)
UX = GetUnitX(Paladin)
UY = GetUnitY(Paladin)
TimerStart(CreateTimer(),1/32,true,function()
if UX == GetUnitX(Paladin) and UY == GetUnitY(Paladin) then
print("Паладин стоит")
else
UX = GetUnitX(Paladin)
UY = GetUnitY(Paladin)
end
end)
Принятый ответ
Я пробовал каналом с заданным приказом patrol. Когда отдаем приказ patrol, то получается что юнит не патрулирует, а бежит кастовать в точку, игноря всех. Я забил на этот способ. Потом пришла новая идея, а вдруг можно абузить этим способом. Представьте, сначала бежит патрулировать в одну точку, а когда дойдет, он же побежит обратно - получит другой приказ, и тут канал срабатывает, и мы узнаем завершение. Короче, не работает. Канал тоже не видит приказы patrol, только в начале
SomeFire, ну это понятно. Но мне хочется свою систему патрулирования иметь. Но чекать поиском весь маршрут на наличие противников и прочее, не хочется. Проще отловить начальные приказы patrol, далее ловим завершение приказа, и в завершении готовый patrol отдать в точку, дошел - отдаем новый patrol в точку. дело - отследить.
SomeFire, ну это понятно. Но мне хочется свою систему патрулирования иметь. Но чекать поиском весь маршрут на наличие противников и прочее, не хочется. Проще отловить начальные приказы patrol, далее ловим завершение приказа, и в завершении готовый patrol отдать в точку, дошел - отдаем новый patrol в точку. дело - отследить.
пока самый оптимальный вариант - это таймером чекать изменилось ли положение маршрута, там нужно интервал таймера сделать больше. И пока работает хорошо, но насколько хорошо - неизвестно. Но я еще забываю, что юниты могут драться, и в патруле могут остановиться и подраться. Ну придется заигнорить патрулирование.
patrol => заменить на attack - тут визуальные эффекты портят все. рамку как найти. можно кое-что сделать))
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Ред. MpW
SomeFire, ну это понятно. Но мне хочется свою систему патрулирования иметь. Но чекать поиском весь маршрут на наличие противников и прочее, не хочется. Проще отловить начальные приказы patrol, далее ловим завершение приказа, и в завершении готовый patrol отдать в точку, дошел - отдаем новый patrol в точку. дело - отследить.