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

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

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

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

Кстати, если мана крестьянке нужна только как показатель созревания плода, то можно сделать скрытый спеллбук с аурой восстановления маны, дейсвующей в допустимых целях только на самого воина, уязвимых и неуязвимых, так мана будет расти только при беременности. Или надо глянуть способность, которая используется для предмета с этой аурой. Если у неё не будет иконки на панели команд, то можно использовать вместо скрытого спеллбука.
30
то можно сделать скрытый спеллбук с аурой восстановления маны
На последнем патче можно вообще не заморачиваться со способностями, а просто менять поле UNIT_RF_MANA_REGENERATION.
26
Пора бы обязать указывать при создании вопроса патч игры.
24
серьёзная причина
Профилактика костылезависимости.
33
Пора бы обязать указывать при создании вопроса патч игры.
пора, это весьма важный критерий, даже более важный чем постановка вопроса, я думаю надо куда-то кому-то написать об этом, хз куда, а вообще Suseka, зачем делать то, что уже делали, даже я, человек который играет в 2-3 карты в варкрафте в основном, умудрялся ни один раз видеть эту систему беременности на мане, мб чё другое придумать? например на эффект альтернативной полоски хп и индивидуальном таймере, это блин ещё проще
1
А зачем вообще использовать для отсчета времени ману, когда можно использовать таймер эффекта (buff) или просто триггерный таймер?
Про версию, я бы предложил просто принять за данное, что речь идет о последней актуальной версии, если автором темы не указано иного.
30
Про версию, я бы предложил просто принять за данное, что речь идет о последней актуальной версии, если автором темы не указано иного.
Я даю ответы исходя из этого, но есть же ещё вариант jass/lua
Чтобы оставить комментарий, пожалуйста, войдите на сайт.