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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
10
При воскрешении героя искать ближайший к нему алтарь. Я бы сделал так (если действительно нет вариантов сделать нормально)
11
  1. Делать триггерное воскрешение.
  2. Как вариант добавлять абилку при начале строительства, но с отменой и завершением удалять.
С помощью этой абилки и проверять.
Можно определить триггерами, только кто начал строить или закончил, если не ошибаюсь.
Или же делать свою триггерное строительство.
30
Думал можно отловить ордер - но ордера воскрешения вообще нет.
Насколько я помню, алтарю будет отдан приказ с равкодом героя.
По идее, можно отлавливать приказы и писать в хт состояния юнитов.
5
Slonick, как написал - алатрей может быть много. Нужно достоверное определение
Darkmen500,
1. Делать триггерное воскрешение - над этим можно подумать, хотя чувствую, что очень геморно это и цель не оправдает средства - это надо делать свою абилку алтаря для каждого героя (добавляя её всем алтарям по событию "EVENT_PLAYER_HERO_REVIVABLE" и убирая по событию "EVENT_PLAYER_HERO_REVIVE_START" и возвращать по событию "EVENT_PLAYER_HERO_REVIVE_CANCEL" - но тогда придётся ещё как-то эмулировать сам процесс воскрешения - начиная от правильного определения ресурсов и времени (причём в подсказке текстом это заранее не показать) и до полосы прогресса (стандартный не сделать) и обработки отмены.
Хотя нет, события "EVENT_PLAYER_HERO_REVIVE_*" не подойдут – если эмулировать сам процесс воскрешения (их не будет), да и обрабатывать нужно именно события самой аблики (ведь именно событие абилки будет на алтаре).
Выполнить процесс воскрешение на подставном алтаре видимо тоже не получится – такой команды (и нативной функции), судя по всему, просто нет. А функция ReviveHero воскрешает немедленно!
2. Как вариант добавлять абилку при начале строительства, но с отменой и завершением удалять - вот тут не понял о чём речь. Причём здесь строительство? Герой как и алтарь могут вообще быть на карте не от строительства.
nazarpunk, "Насколько я помню, алтарю будет отдан приказ с равкодом героя" - только при найме, при воскрешении нет приказа :-( Есть события - но все он от героя, который остаётся даже лежать где пал, а не переносится к алтарю (собственно первым делом и хотелось бы сделать этот самый перенос горя к алтарю)
Вот мом размышления "на свежую голову":
Найти алтарь, выполняющий воскрешение, наверное, не большая проблема - достаточно пройтись по всем живым алтарям, программно добавить им дамми-абилку и попробовать дать ей команду - думаю, что занятый алтарь не выполнит команду - это можно отследить (но не факт, что не выполнит); останется отфильтровать только алтари, занятые процессом найма (но это как раз отслеживается по команде найма).
Проблема в том, что если будет несколько алтарей, одновременно воскрешающих героя - то как определить нужный?
Но, думаю это тоже решаемо - алтари же не начинают этот процесс одновременно - всё-равно сначала начнёт один, затем начнёт второй и т.д.
Поэтому надо отслеживать, указанным мною способом, алтарь, который только что начал воскрешение, и помечать его занятым, при следующей "команде" на воскрешение исключать его до завершения воскрешения.
Остаётся понять какого героя алтарь начал воскрешать (если мёртвых было несколько)?
Но это уже по событию "EVENT_PLAYER_HERO_REVIVE_START" определить можно (отмену тоже надо отслеживать) - собственно с него и надо начинать - сразу получаем героя, ищем занятный (но ещё не обработанный/связанный с другим героем - воскрешаемым или нанимаемым) алтарь через дамми-абилку, вуа-ля - нашли нужный алтарь - связали его с нужным героем. По событиям "EVENT_PLAYER_HERO_REVIVE_CANCEL" и "EVENT_PLAYER_HERO_REVIVE_FINISH" освобождаем связь алтаря и героя (находя её по герою).
Осталось проверить сработает ли приказ дамми-абилки на занятом воскрешением алтаре - какую лучше абилку для этого взять, посоветуете?
Ну и система обработки событий сразу двух триггеров параллельно выходит не очень простая (события от героя и от дамми-аблики, что нужно совместить с одним набором данных)
10
Darklight, Алтарей может быть много, но ближайший к воскрешенному герою - один
30
Darklight, Алтарей может быть много, но ближайший к воскрешенному герою - один
А как ты определишь случай, когда этот алтарь застроен, и героя бросило к другому алтарю?
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.