Как триггерно отменить строительство/улучшение здания или тренировку юнита?

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

Эврика! Забудьте всё, что я до этого сказал.
Я распишу подробно, чтобы будущие поколения также могли использовать.
Чтобы отдать юниту приказ, которого нет перечисленным в GUI, сначала нужно узнать его Id с помощью функции:
constant native GetIssuedOrderId takes nothing returns integer
Используйте эту функцию, когда во время тестирования в игре вы отдаете нужный приказ тестовому юниту (в вашем случае прерывание строительства\улучшения). И выведите результат на экран. Например вот так:
call DisplayTextToForce( GetPlayersAll(), I2S(GetIssuedOrderId()) )
В вашем случае функция вернет "851976" — это Id приказа "Отставить" (равносильно нажатию Esc при выбраном юните во время найма\улучшения).
Когда Id известен, используйте следующую функцию для отдачи приказа
// для приказа без цели:
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean

// для отдачи приказа на юнита\точку используются соответствующие функции
В вашем случае используйте следующее, когда захотите отменить строительство\найм\улучшение.
call IssueImmediateOrderById(<YourUnit>, 851976)
Надеюсь, всё понятно. На всякий пожарный прикрепляю пример.
Загруженные файлы
0
1
12 лет назад
0
в триггерах есть-> Анимации Play Unit Animation там напиши Stop, укажи Героя или например: рабочего и он прекратит все действия.
0
14
12 лет назад
0
Фэйспалм
Мне нужно чтобы например улучшается здание, нужно отменить улучшение, при чём тут анимации???
0
22
12 лет назад
0
Посмотрите в "Приказ без указания цели", там должно быть. Но, даже если нету в GUI, это точно можно сделать через приказ, вот только я не помню какая строка ему отвечает.
0
14
12 лет назад
0
В "Приказ без указания цели" нет такого.
3
22
12 лет назад
Отредактирован Zahanc
3
Эврика! Забудьте всё, что я до этого сказал.
Я распишу подробно, чтобы будущие поколения также могли использовать.
Чтобы отдать юниту приказ, которого нет перечисленным в GUI, сначала нужно узнать его Id с помощью функции:
constant native GetIssuedOrderId takes nothing returns integer
Используйте эту функцию, когда во время тестирования в игре вы отдаете нужный приказ тестовому юниту (в вашем случае прерывание строительства\улучшения). И выведите результат на экран. Например вот так:
call DisplayTextToForce( GetPlayersAll(), I2S(GetIssuedOrderId()) )
В вашем случае функция вернет "851976" — это Id приказа "Отставить" (равносильно нажатию Esc при выбраном юните во время найма\улучшения).
Когда Id известен, используйте следующую функцию для отдачи приказа
// для приказа без цели:
native IssueImmediateOrderById takes unit whichUnit, integer order returns boolean

// для отдачи приказа на юнита\точку используются соответствующие функции
В вашем случае используйте следующее, когда захотите отменить строительство\найм\улучшение.
call IssueImmediateOrderById(<YourUnit>, 851976)
Надеюсь, всё понятно. На всякий пожарный прикрепляю пример.
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.