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

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

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

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