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

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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
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 к нему уже не относятся.
Вот это странно звучит
11
Так как по механике варика происходит замена юнита, любые Triggering unit или Casting unit к нему уже не относятся.
Вот это странно звучит
Странно, но это так: пробовал эффектом отследить, пробовал с дебагом. Если просто пикать юнитов без задержки, то в массив вносится два юнита, причем по первому урон всегда 0. Эффект без задержки не появляется на юните. С задержкой все ок (переход около 0.1 сек, меньше не пробовал). Еще прикол, что если дамажить кодом типа
function BRDamage takes integer i2 returns nothing
    local unit u = udg_BRCaster[i2]
    local real h = GetUnitStateSwap(UNIT_STATE_LIFE, u)

    if udg_BRCount[i2] <= 20 then
        call SetUnitLifeBJ( u, ( h - ( 0.02 * h ) ) )
        call DisplayTextToForce( bj_FORCE_PLAYER[0], ( R2S(h) + " - " + I2S(udg_BRCount[i2]) ) ) // дебаг
        set udg_BRCount[i2]=udg_BRCount[i2]+1
    else
        set udg_BRCaster[i2]=udg_BRCaster[udg_BRC]
        set udg_BRCount[i2]=udg_BRCount[udg_BRC]
        set udg_i2=udg_i2-1
        set udg_BRC=udg_BRC-1
    endif
    set u = null
    set h = 0
endfunction
и ивент "приводит способность в действие", то после окончания Эликсира первого юнита продолжает дамажить те же 10 сек. С "начинает направлять способность" такого нет. Т.е. Эликсир действует 2 раза - сначала меняет юниты один раз, по окончанию, снова переводит из 2 в 1. Вот такая особенность Эликсира ярости.
Суть способности: абила юзается, юнит заменяется другим с другим типом атаки, уроном и пр., но он получает дамаг в виде 4% от текущего хп в сек (я сделал по 2% каждые 0.5 сек, можно и меньше). Действует 10 сек.
21
Для чего нужна глобалка? Эх.Дождись вечера.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.