Сделал абилку. Нужно, чтоб её можно было применить не ближе чем 400 единиц от кастера. И не дальше, чем 500 от кастера(это вроде в стандартном редакторе объектов - "Радиус действия"). Версия игры - 1.31.

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

ArtoniX, он бывает не всегда останавливается (например при строительстве раб не отменяет), если получил приказ в точку строить. Отдаешь stop, и он не выполняет приказ, надо
 call PauseUnit( GetTriggerUnit(), true )
 call IssueImmediateOrderById( GetTriggerUnit(), 851972 ) // stop
 call PauseUnit( GetTriggerUnit(), false )

надо расстояние проверять между двумя точками при отдаче приказа, типа:
local real dx = GetUnitX(GetTriggerUnit())-GetOrderPointX()
local real dy = GetUnitY(GeTriggerUnit())-GetOrderPointY()
local real d = SquareRoot(dx*dx + dy*dy)

if d < 400. or d>500 then
    //выдать приказ стоп и ошибку
endif
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
11
5 лет назад
0
Пишу на жассе
0
2
5 лет назад
Отредактирован ArtoniX
0
Когда юнит начинает кастовать абилку - вычисляешь дистанцию между юнитом и целью, и если она меньше 400 - отдаешь приказ stop.
0
11
5 лет назад
0
Когда юнит начинает кастовать абилку - вычисляешь дистанцию между юнитом и целью, и если она меньше 400 - отдаешь приказ stop.
А кастер в этом случае побежит до минимальной дистанции приказа? Я уже только что решил по-своему. Но хочу узнать новое
ArtoniX:
Когда юнит начинает кастовать абилку - вычисляешь дистанцию между юнитом и целью, и если она меньше 400 - отдаешь приказ stop.
А, не так понял. А как вывести стандартное сообщение со звуком, типо "цель слишком близко". Только через триггерное проигрывание звука?
0
2
5 лет назад
0
А кастер в этом случае побежит до минимальной дистанции приказа?
Нет, но это поправимо. Вместо приказа stop - приказываешь топать до цели пешком. Конечно будет использоваться поиск пути, который достаточно часто будет направлять кастера не самым оптимальным для тебя путём. Но так реализовано практически во всех подобных варику играх.
DopaMine:
А как вывести стандартное сообщение со звуком, типо "цель слишком близко". Только через триггерное проигрывание звука?
По моему тебе нужен вот этот скрипт: xgm.guru/p/wc3/simerror
1
27
5 лет назад
Отредактирован MpW
1
ArtoniX, он бывает не всегда останавливается (например при строительстве раб не отменяет), если получил приказ в точку строить. Отдаешь stop, и он не выполняет приказ, надо
 call PauseUnit( GetTriggerUnit(), true )
 call IssueImmediateOrderById( GetTriggerUnit(), 851972 ) // stop
 call PauseUnit( GetTriggerUnit(), false )

надо расстояние проверять между двумя точками при отдаче приказа, типа:
local real dx = GetUnitX(GetTriggerUnit())-GetOrderPointX()
local real dy = GetUnitY(GeTriggerUnit())-GetOrderPointY()
local real d = SquareRoot(dx*dx + dy*dy)

if d < 400. or d>500 then
    //выдать приказ стоп и ошибку
endif
Принятый ответ
0
11
5 лет назад
0
надо расстояние проверять между двумя точками при отдаче приказа, типа:
Спасибо! Помогло PauseUnit))) И это, мне надо при бОльшей дистанции движение юнита к максимальной допустимой) Так что d> 500 не надо) Спасибо)
ArtoniX:
По моему тебе нужен вот этот скрипт: xgm.guru/p/wc3/simerror
Да, отлично) То, что надо) спасибо!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.