Точное название функций мог перепутать) Суть проблемы такая есть абила свыбором цели которая кастуется на область и ресает случайного героя. В этой области при помощи GetUnitsInRange ( условие которая принимает функция чуть ниже ) я добовляю в группу откуда потом беру случайного героя. Но группа остается пустой. Способность воскрешает героя только во время анимации его смерти а если он уже так сказать полежал то условие не видит его.
Есть какой-нибудь способ все таки ловить мертвых героев или что я делаю не так помоги пожалуйста.
Есть какой-нибудь способ все таки ловить мертвых героев или что я делаю не так помоги пожалуйста.
Условие.
p.s: за синтаксис не ручаюсь так как писал в посте а не копировал с мапы
p.s: за синтаксис не ручаюсь так как писал в посте а не копировал с мапы
function SoulLantern takes nothing returns boolean
return ( IsUnitType ( GetFilterUnit (), UNIT_TYPE_HERO ) and IsUnitType ( GetFilterUnit (), UNIT_TYPE_DEAD ) )
endfunction
Принятый ответ
Ну как сказать, юнит является юнитом секунды 3 после смети (или сколько там установлено время смерти), потом его уже нету на карте, поэтому можно и не искать, но герои сидят в памяти пока их не удалят, в отличии от обычных юнитов, но всеравно их уже не существует в понимании движка на уровне бегающих и дерущихся юнитов.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Мне нужно мертвого героя найти в обласи и добавить в группу при использовании способности.
Как вариант на крайняк. При смерти героя заносишь его в стек. Запоминаешь отдельно его координаты в паралелльном массиве. И при касте абилки пробегаешься по массиву юнитов. И делаешь выборку из тех, чьи координаты подошли.
Отредактирован EvilPenguin
Для меня до сих пор загадка почему GetUnitsInRange не видит мертвых героев. Условие вроде правильное. А ловить юнитов проверкой хп <=0 не вариант я от нее вообще отказался. Например у меня есть герой которому я постоянно даю и меняю "зеленую" силу и в итоге если он умирает то его здоровье больше нуля и он даже начинает регенится ( он мертвый при этом ) это было наглядно видно в мультиборде куда я вывожу хп. В итоге проверка на хп < 0 не даст эффекта потому что хп > 0 но герой при этом мертвый кстати если поставить мертвому юниту хп >0 то поидеи он как раз начинает ловится функцией GetUnitsInRange. Я замечал это на одном своем скиле где на месте некоторых мертвых юнитов появлялись эффекты. Так как раз для отсева живых от мертвых я юзал ( GetWidgetLife ( GetFilterUnit () ) > 0.405 )
Отредактирован MpW
Вот как я сделал респаун и GetUnitX и GetUnitY нормально ловят координаты дохлого героя.
p.s: в коде много функций из моей либы и не только так что не пугайтесь