Значит такая проблема отдаю приказ атаковать землю
call IssuePointOrder(u,"attackground",x,y)
и начинаю триггерно отодвигать юнита, в идеале атака должна прекратится, по аналогии с атакой юнита, так как расстояние увеличилось, но увы этого не происходит, стрельба продолжается в эту же точку с расстояния 5 километров.
Проверять приказ атаки земли, но как?
Я так понял текущий приказ можно получить лишь в момент его отдачи а не через 30 секунд, даже если он ещё продолжается или я не прав?
Есть вариант периодически проверять, что юнит отошел от точки куда стрелял на критично больше расстояние но нужно сюда условие - текущий приказ=атака земли.... вот тут я и застрял

не совсем понятно чего вы добиваетесь
перемещение юнита через сет позишн сбивает текущие приказы, а так же есть такая вещь как
native GetUnitCurrentOrder takes unit whichUnit returns integer
так что сабж не ясен
`
ОЖИДАНИЕ РЕКЛАМЫ...
26
не совсем понятно чего вы добиваетесь
перемещение юнита через сет позишн сбивает текущие приказы, а так же есть такая вещь как
native GetUnitCurrentOrder takes unit whichUnit returns integer
так что сабж не ясен
Принятый ответ
28
Bergi_Bear, а ты использовал GetUnitCurrentOrder()? По идее, должно вернуть id attackground, потому что приказ не мгновенный.
Hate:
не совсем понятно чего вы добиваетесь
Как я понял, юнит через SetUnitX() и SetUnitY() передвигается каждые N секунд, пока атакует землю. Вскоре он оказывается от точки атаки дальше, чем его дальность атаки, но при этом юнит не прекращает атаковать.
33
PT153, Hate, парни всё получилось, оказывается для приказа атаки земли можно вернуть значение спустя хоть полчаса
огрызок кода
if GetUnitCurrentOrder(turret[id])==851984 and DBU(turret[id],pointer[id])>=1500 then
call IssueImmediateOrder(turret[id],"stop")
call BJDebugMsg("break")
endif
33
PT153, где я строки то юзаю? 851984 - атака земли всё верно, стоп записал ввиде строки "stop"? ну это хоть запомнить можно в отличии от 851972
PT153, или ты про "attackground"?
28
или ты про "attackground"
Про это и про "stop". Зачем забивать таблицу строк мусором? Юзай либу, ссылку на которую я дал, там перечислены все приказы в виде чисел, помнить надо лишь эквивалентную строку.
call IssueImmediateOrderById(u, ORDER_stop)
Можешь взять прикреплённую, тут префикс изменён и чуть больше приказов.
Загруженные файлы
33
это же экономия на спичках, мне не понять зачем это, удобно числовой приказ написать, когда у него нет текстового эквивалента (тот же жезл иллюзий что на хайве и привели в пример), ладно спасибо, мб и пригодится
28
нет текстового эквивалента
Дело сколько в экономии, сколько в удобстве. Во время написания строки можно ошибиться, и ничто тебе об этом скажет, а такую ошибку можно долго искать. А с этой либой парсер скажет тебе, что такой переменной нет.
33
PT153, спасибо я всё понял
Самое что интересное, что этому багу в целом даже есть применение, юнита с балистической атакой можно отодвигать будет сколько угодно перемещающими способностями не сбивающими приказ
((много матов, слабонервным не читать
Например, как в д2, можно пуджем двигать ультующего энигму или цмку (но это я знал оч давно, а вот что атака по области действует по тому же принципу, что и чалеенг - только сегодня )
))
Чтобы оставить комментарий, пожалуйста, войдите на сайт.