Добавлен 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 - тут визуальные эффекты портят все. рамку как найти. можно кое-что сделать))
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.

WC3




Ред. MpW
SomeFire, ну это понятно. Но мне хочется свою систему патрулирования иметь. Но чекать поиском весь маршрут на наличие противников и прочее, не хочется. Проще отловить начальные приказы patrol, далее ловим завершение приказа, и в завершении готовый patrol отдать в точку, дошел - отдаем новый patrol в точку. дело - отследить.