Возьмём за пример ситуацию: Крестьянин использует на крестьянку особую способность, у неё появляется бафф.
Как реализовать триггер, который при накоплении определённого кол-ва маны у баффнутого юнита спавнит возле него юнита (например ребёнка) и снимает бафф с юнита?

Прежде всего, такой баф лучше выдавать через ауру замедления от торнадо, настроенную работать только на себя и с нулевым замедлением. Это позволит избежать ситуаций когда баф может закончиться раньше времени, а также защищает от диспела и похищения бафов.
Что касается детекта полной маны, есть несколько способов, в этой ситуации я бы предложил следующий:
  • При наложении бафа добавляем юнита в группу.
  • Периодическим таймером с периодом в одну секунду перебираем всех юнитов в группе и проверяем не полная ли мана.
  • Если мана полная, то удаляем из группы, забираем баф, обнуляем ману, спавним юнита.
А если бы я это делал сам, то реализация была бы другой - мана использовалась бы исключительно для отображения прогресса и выставлялась бы таймером на основе скрытого счетчика, не зависящего от скорости регенерации маны и любых других способов её ускоренного восстановления. Или, например, воспользовался бы возможностью выдать ограничение времени жизни и в момент "смерти" юнита спавнил бы нового и воскрешал или пересоздавал старого. Но оба эти способа более сложные и требуют дополнительных знаний для правильной реализации.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

ответ
Ухаха. Парень, ознакомься, что такое утечки, прикрепление в помощь.

30
Запускаете таймер и проверяете наличие бафа и текущую ману.
24
Прежде всего, такой баф лучше выдавать через ауру замедления от торнадо, настроенную работать только на себя и с нулевым замедлением. Это позволит избежать ситуаций когда баф может закончиться раньше времени, а также защищает от диспела и похищения бафов.
Что касается детекта полной маны, есть несколько способов, в этой ситуации я бы предложил следующий:
  • При наложении бафа добавляем юнита в группу.
  • Периодическим таймером с периодом в одну секунду перебираем всех юнитов в группе и проверяем не полная ли мана.
  • Если мана полная, то удаляем из группы, забираем баф, обнуляем ману, спавним юнита.
А если бы я это делал сам, то реализация была бы другой - мана использовалась бы исключительно для отображения прогресса и выставлялась бы таймером на основе скрытого счетчика, не зависящего от скорости регенерации маны и любых других способов её ускоренного восстановления. Или, например, воспользовался бы возможностью выдать ограничение времени жизни и в момент "смерти" юнита спавнил бы нового и воскрешал или пересоздавал старого. Но оба эти способа более сложные и требуют дополнительных знаний для правильной реализации.
Принятый ответ
33
Suseka, какой патч, каким методом показать исполнение задуманного?
26
Можешь сделать периодический триггер, который каждые 0.10 секунд выбирает в группу всех крестьянок с баффом и 100% маны, которым снимаешь бафф и ману, а рядом создаёшь ребёнка. Только группу удаляй, так как наплодит утечек.
24
8gabriel8, зачем такой малый период, если принципиальной разницы между проверкой 1 раз в секунду и 10 раз в секунду не будет, а лишняя нагрузка в наличии. Зачем поиск с созданием группы, если мы и так знаем всех юнитов подлежащих проверке и можем хранить их в одной группе без поиска?
26
Малый период, чтобы быстро срабатывало, лишняя нагрузка на калькулятор вообще ни о чём, можно и без поиска с зачислением в группу, просто в самом вопросе всё равно не было информации, что баффнутые крестьянки заносятся в группу.
24
8gabriel8, а не известно заносятся ли они в группу, но есть строгий критерий - нам не интересны крестьянки без бафа и баф выдается только при срабатывании способности - почему бы не заносить их в группу и не избавиться тем самым от кучи лишних действий?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.