Нужно поместить юнита после каста способности на основе эликсира ярости в глобалку. Так как по механике варика происходит замена юнита, любые Triggering unit или Casting unit к нему уже не относятся.
Сейчас сделано через пик в отряд и проверки на другую способность, что через заднее место. Есть ли какая-нибудь функция, чтобы захватить замененного юнита в переменную?

Impertus, не знаю точно как сработает с "Эликсиром ярости", но handleID при морфе Ворона не изменяется. Возможно, и с остальными морфами тоже. Обращайся к юниту через его ID. Как находить этот ID и что это такое можешь почитать ТУТ
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
Принятый ответ
Impertus, не знаю точно как сработает с "Эликсиром ярости", но handleID при морфе Ворона не изменяется. Возможно, и с остальными морфами тоже. Обращайся к юниту через его ID. Как находить этот ID и что это такое можешь почитать ТУТ
18
Баф не додумался проверить на герое?
самый легкий способ говорят...
11
Можно баф, можно способность (все равно у героя изначально 2 уник способности), но и для того и для того нужен вейт в 0.1 сек, чего желательно избежать.
З.Ы. Сейчас работает нормально, но хочу оптимизировать и убрать вейт.
18
Бери таймер
Иль в кеш сохраняешь героя по ид
Затем при касте он у тебя уже сохранен
Тупо загружаешь и все...
Ну вот кастуешь и потом делаешь че те надо
cast = getspellabilityunit
call saveunithande(hash,h,1,cast)
local unit u = loadunithande(hash,h,1)
вот теперь юнит никогда не потеряется
11
Это будет не оптимизация, а варианты, я же хочу обойтись без задержек вообще.
11
Кастера отловить не проблема, проблема в том, что по механике варика (как написано в стартпосте) при Эликсире кастер заменяется другим юнитом, и все триг юнит, каст юнит и т.д. не относятся к нему. А мне нужно отловить итогового юнита и к нему применять действия (в моем случае периодик дамаг раз в 0.5 сек по 2% от текущего хп)
18
Я тебе написал в кеш грузи превращеного, после каста наносишь дамаг нечего сложного..
21
Impertus, в таком случае - создавай не периодический таймер с задержкой 0 сек., сохраняй юнита в хеш с ключем в ID таймера. В функции, которою запустит таймер - загружай юнита под ключем в ID истекающего таймера, и делай действия. Когда ты выгрузишь юнита из хеша в какую-либо переменную - сможешь изменять его параметры (хп/мп и всё что ты хотел). Если не знаешь как, то: либо читаешь статью, ссылку на которую я дал выше, либо пишешь СЮДА
11
Я уже почитал, понял и сделал (не хочется конечно хэш-таблами грузить, их уже 5)
Спрашивал только на предмет возможно упущенной стандартной функции, раз такими окольными путями приходится идти.
21
Голова идёт оборотом. Может объяснишь что ты хотел сделать?
Так как по механике варика происходит замена юнита, любые Triggering unit или Casting unit к нему уже не относятся.
Вот это странно звучит
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.