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

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

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

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

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