Доброе время суток, есть только 3 варианта: выгрузить из хеш-таблицы еще одна такая же и последний примененный скилл.)
Что я вообще хочу сделать? Юнит бьет смертельным ударом и вешает дебаф на жертву (который позже будет уменьшать отхил на 50%, сделаю так.) и спустя время дебаф пропадает, но если юнит снова повесит этот дебаф до того, как тот еще не истек, то произойдет баг, дебаф начнет слетать раньше времени. Мне нужно, что бы дебаф слетал в срок, как положено, независимо от других игроков\юнитов или повешенный дебаф поверх другого.
Спасибо!

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

zlowar:
То есть дебаф должен всегда обновляться.)
Зачем ты делаешь триггерный дебафф? В дефолте так устроено, что дебафф заменяется, так вешай же дефолтно
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
11
8 лет назад
0
То есть дебаф должен всегда обновляться.)
1
13
8 лет назад
1
Запиши в переменную время действия. В таймере отнимай от переменной пройденное время.
После обновления деббафа ставь переменной нужное значение
1
19
8 лет назад
1
zlowar:
То есть дебаф должен всегда обновляться.)
Зачем ты делаешь триггерный дебафф? В дефолте так устроено, что дебафф заменяется, так вешай же дефолтно
Принятый ответ
1
32
8 лет назад
Отредактирован quq_CCCP
1
Такое нужно реализовать не на GUI.
Для начала делается ключ строка для каждого баффа, с помощью функции StringHash а потом по этому ключу записывается триггер, который следит за событиями:
  • Время истекло
  • Юнит умер.
  • На цель применили одну из рассеивающих способностей (если планируется сделать бафф рассеиваемым)
При каждом касте на юнита проверять а есть ли по заданному ключу триггер, если нет то создать и сделать все необходимые эффекты, а если уже есть то сбросить счетчик (таймер) и проверить уровни (если у баффа много уровней) обновляя эффекты.
Реализация не из простых, но самая безопасная и удобная.
5
28
8 лет назад
Отредактирован nvc123
5
в ро создай скил с бафом на 3 секунды
при крите триггерно юзай этот скил на цель
при хиле проверяй наличие бафа
если баф есть то ослабляй хил
quq_CCCP, куча триггеров?
нафига
если так хочется делать всё триггерно то лучше сделать стек и бегать по нему таймером
а то что ты предложил это вообще жесть
короче на нг подарю тебе приз "самая упоротая реализация 2016"
1
32
8 лет назад
1
nvc123, Пришлось, сделать так часть абилок - ибо задолбали фаталы на ровном месте.
Ну конечно можно обойтись одним триггером на всех, просто плодя действия триггеров но это точно не для гуи.
1
28
8 лет назад
1
quq_CCCP, нафига плодить действия
берём таймер
берём список
профит
0
32
8 лет назад
0
nvc123:
quq_CCCP, нафига плодить действия
берём таймер
берём список
профит
Знаешь есть у юнитов такое свойство умирать, а когда начинаешь убирать им эффект от спелла (там спеллбук с элуной) фатал выскакивает.
0
28
8 лет назад
0
quq_CCCP, знаю
поэтому умные люди удаляют юнита из стека при смерти чтобы не тратить процессорное время на трупы
0
11
8 лет назад
0
Спасибо, сделаю как выше человек порекомендовал. Просто разобраться, но вообще лень.. рано или поздно все равно потребуется так дебаф тригерно делать.)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.