Имеется такой фрагмент кода:
lvl = GetUnitAbilityLevel(target,'BHad');
        if (lvl>0)
        {
            maxhp = GetUnitState(target,MAXHP);
            hp = GetUnitState(target,HP);
            if (hp<maxhp)
            {
                SetUnitState(target,HP,hp+I2R(lvl+1));
                Text(lvl+1,GetUnitX(target),GetUnitY(target),Heal);
            }
        }
Больше
	local unit target;
    local group gp = new group;
    local int lvl;
    local real hp;
    local real maxhp;
    GroupEnumUnitsInRect(gp,bj_mapInitialPlayableArea,null);
    loop
        target = FirstOfGroup(gp);
        lvl = GetUnitAbilityLevel(target,'BHad');
        if (lvl>0)
        {
            maxhp = GetUnitState(target,MAXHP);
            hp = GetUnitState(target,HP);
            if (hp<maxhp)
            {
                SetUnitState(target,HP,hp+I2R(lvl+1));
                Text(lvl+1,GetUnitX(target),GetUnitY(target),Heal);
            }
        }
        GroupRemoveUnit(gp,target);
    endloop
    gp = null;
    target = null;
Суть в том, чтобы хилить всех юнитов под аурой "Доспехи Веры" на 1 ед. + уровень способности "Доспехи Веры". Вот только хилит всегда на 2 ед., т.е. уровень баффа всегда == 1. В чём же беда?

Принятый ответ

Audes, как раз-таки ты ошибаешься.
Audes:
Это уже интереснее.
при касте проверяешь уровень скилла у кастера и заносишь в переменную[custom value цели] эту цифру. - Для баффов
для аур всё ещё веселее - либо через unit within range либо пиком всех юнитов в раиусе такм-то каждые 0.5 сек проверяешь у кого самый большой лвл способности, пикаешь всех союзных вокруг него и заносишь в переменную[custom value picked unit] эту цифру. Карта повиснет нахер и играть в неё будет невозможно.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
23
9 лет назад
Отредактирован SomeFire
0
GetUnitAbilityLevel разве смотрит на баф, а не на абилку? Хотя в таком случае он и в иф входить не должен...
0
15
9 лет назад
0
SomeFire, ну 0 же не возвращает.
0
24
9 лет назад
0
Уровень баффа напрямую взять нельзя. Уже обсуждалось недавно, делается грузящими костылями.
Audes:
SomeFire, ну 0 же не возвращает
ну дык мб у него способность эта и есть?)
0
15
9 лет назад
Отредактирован Audes
0
Melissa, нет, на всех юнитах работает, а не только на паладине. И если не ошибаюсь, то условие типа "Юнит имеет бафф Х" переводится в "Уровень способности Х > 0", значит всё же можно?
Уже обсуждалось недавно, делается грузящими костылями.
Это уже интереснее.
0
24
9 лет назад
0
Audes, как раз-таки ты ошибаешься.
Audes:
Это уже интереснее.
при касте проверяешь уровень скилла у кастера и заносишь в переменную[custom value цели] эту цифру. - Для баффов
для аур всё ещё веселее - либо через unit within range либо пиком всех юнитов в раиусе такм-то каждые 0.5 сек проверяешь у кого самый большой лвл способности, пикаешь всех союзных вокруг него и заносишь в переменную[custom value picked unit] эту цифру. Карта повиснет нахер и играть в неё будет невозможно.
Принятый ответ
0
25
9 лет назад
0
Каждому уровню свой бафф. Внешне одинаково. Разница только в названии для редактора.
0
24
9 лет назад
0
Nosferoh, опять же текст текст текст. У баффов.
0
25
9 лет назад
Отредактирован Nosferoh
0
Или переменную держать для подсчёта уровня при очередном повышении.
А, да это в Джасс не нужно...
0
24
9 лет назад
0
А приближение/отдаление целей?)
0
25
9 лет назад
0
Melissa, ты кому? И о чём?
0
24
9 лет назад
Отредактирован Melissa
0
Nosferoh, тебе так-то. И всё о том же. Ты возьмёшь и отслеживаешь уровень ауры у палладина, а если ещё такая аура у кого.
0
25
9 лет назад
0
Melissa, два пала у одного игрока?
2
27
9 лет назад
2
только костыли с реализацией ауры полностью в вашем коде.
0
24
9 лет назад
0
Nosferoh, или властитель у того же игрока или львиный рог. Если уж говорим о стандартной melee
0
25
9 лет назад
Отредактирован Nosferoh
0
Ловим Героев, изучающих ауру и придерживаем для них целочисленную с массивом и привязываем к переменной типа "боевая единица" с массивом, ловим Героев с предметом и нужные виды юнитов. Пикаем юнитов союзника вокруг них и заносим в отряды. Если отряды пересекаются, то лишние юниты из отряда около хозяина очередных Доспехов Веры — более слабых — отнимаются.
2
24
9 лет назад
Отредактирован Melissa
2
гоню
Не, ну ет-то понятно) Можно вообще не ловить героев, а только способности и числа(уровни),а у юнитов, имеющих нужный баф, брать союзных игроков и проверять самую большую цифру этого бафа... Не нужны будут отряды, меньше загрязнения памяти...
Хотя нет, стоп, гоню, всё равно придётся всё сравнивать.
В смысле кто подошёл, кто отошёл
0
23
9 лет назад
0
Самый изи способ - пикать всех юнитов с аурой, а потом уже для каждого из них пикать свою аудиторию и лечить.
0
24
9 лет назад
Отредактирован Melissa
0
а если уж речь идёт конкретно о регенерации - давать ауру смерти в спеллбуке и апать её лвл при прокачке ауры преданности.
0
15
9 лет назад
0
Всем спасибо, столько вариантов появилось, но попробую сначала через разные баффы для каждого уровня, а там уж и извращаться буду)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.