Пример способности. Создаётся даммик, который должен стоять определённого время на месте. Запускается таймер с отчётом этого времени. Допустим во время этого таймера (пока время ещё не вышло) убили этого даммика. Можно ли в этом триггере с таймером узнать кто является убивающим юнитом или без события умирает никак не обойтись?

Я вижу это так:
При событии юнит умирает, для даммика в хештаблицу записываем его убийцу, а в таймере за тик опрашиваем эту ячейку, если там не null, тогда делаем действий с убийцей
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Отслеживать, жив ли даммик или нет- можно проверять его здоровье периодически. Отследить убийцу можно с помощью системы отлова урона. Если был нанесен урон > здоровья даммика, то источник урона = убийца. В обоих случаях без дополнительных триггеров не обойтись.
21
Вместо таймера можно использовать динамический триггер. На этот триггер вешаем и отсчёт времени, и смерть юнита.
26
Но динамический триггер не покажет убийцу юнита.
По идее можешь в триггере сделать два события, первое на истечение времени, второе на смерть дамми. А в действиях два Если/То/Иначе, в одном будет проверка оставшегося времени таймера равно 0, а в другом проверка смерти дамми.
33
Я вижу это так:
При событии юнит умирает, для даммика в хештаблицу записываем его убийцу, а в таймере за тик опрашиваем эту ячейку, если там не null, тогда делаем действий с убийцей
Принятый ответ
30
Даммик по определению не может быть убит, это юнит для совершения действия в игре от имени другого юнита.

Если опустить это замечание, то да, можно. Создаёшь триггер с событием "юнит умирает" и в нём лепишь к даммику каким-либо методом (например через структуру) убивающего юнита.
26
Почему вы не вникаете в вопрос? Он же спрашивает, можно ли без этого события.
28
Без этого события будет только сложнее и с дополнительной нагрузкой.
30
Нет, без события просто и однозначно определить убивающего юнита невозможно.

Использование динамических триггеров никогда не обосновано, всегда можно сделать на статическом, причём не сложнее.
28
никогда не обосновано
Бывает обоснованно, особенно если событие A unit comes withing range. Но для моих целей обработка местности каждую долю секунды вышла лучше.
32
Clamp, эмм - сударь, давайте я вам нарежу задач, а вы мне расскажите как сделать не сложнее статическим триггером? Я конечно понимаю что делать как у фрога ради анимации героя спустя 0.5 сек триггер с событием время истекло это глупость, но бывают случаи когда тебе нужно следить за конкретным юнитом особенно тщательно, события урона, смерти, получения приказов.
30
события урона, смерти, получения приказов
Все эти задачи решаются статическими триггерами не сложнее, чем динамическими.
32
Clamp, ну я же говорю, плз пример в студию, то бывают не совсем примитивные задачи, мне нужно точно узнать что юнит умер EVENT_WINGED_DETAH, проверить на полученный урон в 0 ед, а так же проверить приказ без указания цели, таких юнитов может быть одновременно до 10.
DracoL1ch, боятся за производительность, триггер же тяжелее таймера + евенты не удаляются.
Хотя я когда проверял на карте где 30 юнитов херачили друг-друга, плодились и умирали на протяжении 15 минут, проблем чето не заметил, ни с памятью ни с числом хендлов...
32
PT153, ну потому что события вешаются на обьект, к примеру на юнита, а не только на триггер. TriggerRegister*** возвращает triggerevent.
Ну подробнее DracoL1ch, поведает.
22
почему вы волнуете кто убил? если вы можете в хеш заносить последный занесеный игрок если умер узнаем последный игрока удара и узнаем убийцу.. Не ломай комедией!
16
у меня в доте тысячи временных триггеров, никаких проблем не видно. Даже если эти ивенты уходят, на игру они не влияют, так что даже замерять лень.
2
quq_CCCP:
PT153, ну потому что события вешаются на обьект, к примеру на юнита, а не только на триггер. TriggerRegister*** возвращает triggerevent.
Ну подробнее DracoL1ch, поведает.
А можно, пожалуйста, подробнее? Это получается динамические триггеры навешивают события на объекты и если объект постоянный, это руинит производительность? (Например триггер, который каждую секунду обновляет значения в игровой таблице)
А всё, увидел ответ Драколича, спасибо.
26
Gremlin222, по поводу обновления игровой таблицы недавно обсуждали. Карта Survival Chaos каждый раз медленнее загружается, пока игру не перезапустишь. Предположили, что дело в строках, так как они кэшируются и не удалятся. Типа как раз значения в игровой таблице являются строками, которые забивают кэш. Тем не менее в той карте проблемы возникали лишь с временем загрузки, а в самой игре всё нормально.
2
8gabriel8:
Gremlin222, по поводу обновления игровой таблицы недавно обсуждали. Карта Survival Chaos каждый раз медленнее загружается, пока игру не перезапустишь. Предположили, что дело в строках, так как они кэшируются и не удалятся. Типа как раз значения в игровой таблице являются строками, которые забивают кэш. Тем не менее в той карте проблемы возникали лишь с временем загрузки, а в самой игре всё нормально.
Survival chaos долго грузится, потому что там данные в w3u,w3a и так далее, после перевода этих данных в slk таблицы веджитайзером, карта в разы быстрее грузится. Так же в 3.0.1 автор понадобавлял новых лагучих эффектов,которые стоит по хорошему заменить.
Я это к чему, просто в карте LTD x10 на поздних волнах начинает падать ниже критического фпс и я ищу все возможные способы оптимизации этого.
26
Дело не в скорости загрузки карты вообще, а в увеличении времени загрузки карты каждый раз до перезапуска игры.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.