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

Impertus, не знаю точно как сработает с "Эликсиром ярости", но handleID при морфе Ворона не изменяется. Возможно, и с остальными морфами тоже. Обращайся к юниту через его 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
Для чего нужна глобалка? Эх.Дождись вечера.
11
Не обязательно глобалка, локалка тоже не захватывает. Кого дамажить-то, если без перменной?)
21
Impertus, ремонтируй эдитор, ибо
Так как по механике варика происходит замена юнита, любые Triggering unit или Casting unit к нему уже не относятся.
из пальца высосано.
Загруженные файлы
18
Код очень печален, нече немного опыта и все получится)
11
Странно, дома под рукой свежую версию не взял, может с чем-то конфликтует, может модель не та и прочее. Завтра переберу все заново.
ЗЫ уже было такое, что на чистой карте работает отлично, а на основной конфликты непонятно с чем.
Нда, действительно, сейчас нормально работает. Хотя я уже его столько раз менял, что мог сам исправить незаметно ошибку.
Один вопрос: что это было? Не захватывало из триг\каст юнит. Какая-то ошибка редактора реальна?
21
Impertus, это кое-кто решил что к юниту нельзя обратится, используя эти переменные. Будь внимательней в следующий раз и не пиши поспешно.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.