Нужно сделать эффекты замедления как у мага льда в вовке.
Например, добавить замедление для Blizzard.
Какие вижу варианты:
  1. Даммик-кастер.
Самый простой вариант, но как я понимаю он создает утечки, особенно для нескольких целей.
  1. Дать ауру торнадо.
Наверное лучший вариант, только никак не могу сообразить как лучше сделать продление бафа, а если замедление будет не вовремя очищаться это не есть хорошо.
  1. Вычислять скорость и потом выставлять.
По-моему - чисто наркоманские пляски.
Any ideas?

тут надо при нанесении урона цели
  • на цель вешаем бафф (даем ауру)
  • создаем для цели таймер, запускаем. привязываем таймер к юниту хт, юнита к твймеру хт. хт - хэш-таблица. Нужно сохранить инфу в хт, чтобы получать инфу. Пример, когда повторно бьем цель, можно проверить есть ли у него таймер. нам не нужно создавать новый таймер. Достаточно перезапустить таймер. Или юнит умер, все удалить надо, хт чистим. Таймер истек, надо почистить хт с двух концов (с юнита/с таймера).
  • юнит умирает, можно таймер удалить. получаем ссылку на таймер. хт чистим. таймер уничтожаем
  • когда таймер истечет, удаляем бафф. удаляем таймер. Получаем ссылку на юнита. Чистим хт, дабы память не засорять.
  • по идее, у каждой цели будет свой таймер. при истечении он удаляется. Общий таймер можно сделать, тогда все цели запихиваем в группу, и ежесекудно перебираем в ней каждую цель. Можно счетчик времени каждой цели задать, и ежесекудно вычитать -1. Когда время истечет, <=0 цель выпиливается из группы и хт. Использовать общий или отдельно для каждого таймер - это ваш выбор
На гуи сидите?
Похожим эффектом продления обладает ядовитое облако.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
Наверное лучший вариант, только никак не могу сообразить как лучше сделать продление бафа, а если замедление будет не вовремя очищаться это не есть хорошо.
Надо добавлять ауру юниту с целью сам воин, а когда удаляешь абилку удалять и бафф. Тогда бафф не будет висеть после удаления ауры.
6
> Наверное лучший вариант, только никак не могу сообразить как лучше сделать продление бафа, а если замедление будет не вовремя очищаться это не есть хорошо.
Надо добавлять ауру юниту с целью сам воин, а когда удаляешь абилку удалять и бафф. Тогда бафф не будет висеть после удаления ауры.
Тут уже не в удалении дело.
У меня стоит так "близард падает на голову" если у юнита нет слоу бафа - даем ему ауру торнадо и через 2 сек убираем всё.
Но если на юнита падает вторая волна, очищение с первой его убирает, оно же с задержкой, вот тут и кроется проблема.
28
Тут надо полностью тригерный спел делать. Тогда всё можно будет обработать.
11
С аурой самый удачный из простых вариантов, можно ещё сделать способность замедление с бесконечным действием и снимать бафф когда нужно
6
А смысл его триггерным делать? Проблема то не решится никак, просто будет ситуация когда 2-3 ледяных скила подряд юзают разные юниты и всё равно дебаф будет сниматься в разное неподходящее время.
Тут нужен какой-то условный таймер для удаления замедла, чтобы когда юнит уже замедлен и снова получает замедление то этот таймер обнулялся и заново шел пока не перестанут кастовать и он не достигнет своей цели - очистить юнита.
Я вот не знаю как это нормально сделать, пробовал циклу обнулять переменную - работает конечно, но только пока цель - один юнит, видимо потому что цикл не отдельный каждый раз создается.
11
Смотри, условие, юнит кастует способность,если это способность с замедлением, то берёшь всех юнитов в области поражения способности и проверяешь, есть ли на них бафф замедла, если есть, то обновляешь время. Время обновлять можно так. Делаешь один глобальный таймер, и на юнитов с замедлом записываешь в хеш таблицу время, которое будет висеть замедление.
13
Даммик кастер не вызывает утечек, если его удалять
6
ValdionWorld:
У меня всегда после добавления и удаления юнитов прибавляется число Handle.
ArhiMEN:
Вообще не понятно, как 1 глобальный таймер может помочь где даже локальные таймеры каждому юниту не до конца помогают т.к не понятно как им сбрасывать время.
10
Доброго времени суток! Проблема с зачисткой даммиков? Если это не решаймо для тебя, всегда можно воспользоваться рунами, статья по рунам будет ниже. Но их тоже надо будет зачищать (пикнешь всех на карте, установиш хп больше 1, и удаляешь). xgm.guru/p/wc3/powerups

А вообще я бы сделал дамиков которые кастят близзард, и если кто-то получил урон от юнит тайпа даммика, то даю скил предметы замедление , ну или можно вызвать даммика который будет давать удар грома там где близзард падает. Если тебе не принципиально какой юнит тайп дамажит , то можно абсолютно так же через руны сделать, скидывал ссылку ранее.
27
тут надо при нанесении урона цели
  • на цель вешаем бафф (даем ауру)
  • создаем для цели таймер, запускаем. привязываем таймер к юниту хт, юнита к твймеру хт. хт - хэш-таблица. Нужно сохранить инфу в хт, чтобы получать инфу. Пример, когда повторно бьем цель, можно проверить есть ли у него таймер. нам не нужно создавать новый таймер. Достаточно перезапустить таймер. Или юнит умер, все удалить надо, хт чистим. Таймер истек, надо почистить хт с двух концов (с юнита/с таймера).
  • юнит умирает, можно таймер удалить. получаем ссылку на таймер. хт чистим. таймер уничтожаем
  • когда таймер истечет, удаляем бафф. удаляем таймер. Получаем ссылку на юнита. Чистим хт, дабы память не засорять.
  • по идее, у каждой цели будет свой таймер. при истечении он удаляется. Общий таймер можно сделать, тогда все цели запихиваем в группу, и ежесекудно перебираем в ней каждую цель. Можно счетчик времени каждой цели задать, и ежесекудно вычитать -1. Когда время истечет, <=0 цель выпиливается из группы и хт. Использовать общий или отдельно для каждого таймер - это ваш выбор
На гуи сидите?
Похожим эффектом продления обладает ядовитое облако.
Принятый ответ
6
Keparis9: Гениальное простое решение.
МрачныйВорон: Звучит хорошо, но без примера будет конечно сложновато. Я могу сохранить и выгрузить данные из таблицы, но не знаю как связать таймер и юнита, как потом проверить наличие таймера и даже не представляю как таймер перезапускается, потому что никогда таких функций не видел, есть создание, удаление, но не перезапуск.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.