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

Принятый ответ

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