Объяснение: приказ patrol в дружественную цель превращается в режим следования - такое исключается, т.е. мы это не фиксируем. А вот приказ patrol с зажатым SHIFT в точки превращается патрулирование в разные точки.
Заметил, что можно SHIFT-том задавать многоточечное патрулирование. И она ломается мне механику. Юнит не может завершить патруль. Он выполняет его бесконечно.
Пояснение: Обычно приказ patrol в точку работает так:
при отдаче приказа 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 в точку. дело - отследить.
пока самый оптимальный вариант - это таймером чекать изменилось ли положение маршрута, там нужно интервал таймера сделать больше. И пока работает хорошо, но насколько хорошо - неизвестно. Но я еще забываю, что юниты могут драться, и в патруле могут остановиться и подраться. Ну придется заигнорить патрулирование.
patrol => заменить на attack - тут визуальные эффекты портят все. рамку как найти. можно кое-что сделать))
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Ловишь приказ на патруль - отменяешь приказ на патруль.
Ваш герой будет курсировать патрулем последовательно каждую точку. Думаете, что после последней юнит завершит? Нет, он начнет сначала с первой. короче двигается кругами.
Что, вообще-то, логично. Патруль есть движение по кругу. И не важно сколько в этом кругу точек.
27
Я пробовал каналом с заданным приказом patrol. Когда отдаем приказ patrol, то получается что юнит не патрулирует, а бежит кастовать в точку, игноря всех. Я забил на этот способ. Потом пришла новая идея, а вдруг можно абузить этим способом. Представьте, сначала бежит патрулировать в одну точку, а когда дойдет, он же побежит обратно - получит другой приказ, и тут канал срабатывает, и мы узнаем завершение. Короче, не работает. Канал тоже не видит приказы patrol, только в начале
SomeFire, ну это понятно. Но мне хочется свою систему патрулирования иметь. Но чекать поиском весь маршрут на наличие противников и прочее, не хочется. Проще отловить начальные приказы patrol, далее ловим завершение приказа, и в завершении готовый patrol отдать в точку, дошел - отдаем новый patrol в точку. дело - отследить.
пока самый оптимальный вариант - это таймером чекать изменилось ли положение маршрута, там нужно интервал таймера сделать больше. И пока работает хорошо, но насколько хорошо - неизвестно. Но я еще забываю, что юниты могут драться, и в патруле могут остановиться и подраться. Ну придется заигнорить патрулирование.
patrol => заменить на attack - тут визуальные эффекты портят все. рамку как найти. можно кое-что сделать))
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.