GroupEnumUnitsInRange(G, x, y, 1000, Base)
            loop
                E = FirstOfGroup(G)
                GroupRemoveUnit(G, E)
                exitwhen E == null
                if Condition_Base(p,E) then
                    SetUnitInvulnerable(E,false)
                    UnitRemoveBuffs(E,true,true)
                    UnitAddAbility(E,'A0WR')
                    UnitDamageTarget(u, E, dmg, false, false, null, null, null)
                    UnitRemoveAbility(E,'A0WR')
                endif
            endloop

function Condition_Base takes player p,unit e returns boolean
   return IsUnitEnemy(e,p) and IsUnitType(e,UNIT_TYPE_DEAD) == false and IsUnitType(e,UNIT_TYPE_STRUCTURE) == false
endfunction
Если во время нанесения урона кто-то умирает, цикл прерывается, как можно это исправить.

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

Если срабатывает событие смерти, и в триггере с событием смерти используется группа G, то группа перезапишется. Для событий прерывающих поток, используй отдельные группы.
0
20
9 лет назад
0
Condition_Base(p,E) в студию.
0
28
9 лет назад
0
PhysCraft, он в студии и так
хотелось бы дебаг ибо лично я не вижу проблем в коде
даже более того у меня аналогичный код в своё время работал без багов
0
19
9 лет назад
Отредактирован Vadik29
0
nvc123:
PhysCraft, он в студии и так
хотелось бы дебаг ибо лично я не вижу проблем в коде
даже более того у меня аналогичный код в своё время работал без багов
то что он дает и удаляет абилку даже не смотрите. У меня есть подобный код без этого, там одно нанесение урона и он также багается
Собственно стоят два героя, один умирает, второму не наносится урон вообще.
0
20
9 лет назад
0
Vadik29, поставь GroupRemoveUnit после if-endif.
0
19
9 лет назад
0
PhysCraft:
Vadik29, поставь GroupRemoveUnit после if-endif.
раньше стояло, я наоборот поменял.
0
28
9 лет назад
Отредактирован nvc123
0
Vadik29, причём тут абилка если я прошу дебаг
и попробуй под лупом поменять 1 и 2 строку местами
0
25
9 лет назад
0
А это нормально что не указаны типы урона и прочее?
Может изза этого и не работает.
0
28
9 лет назад
0
Ancient, это не влияет в данном случае
0
32
9 лет назад
0
У меня в карте сейчас подобная беда.
2
5
9 лет назад
2
Подозреваю, что при смерти юнита триггерится что-то другое, из-за чего и возникают проблемы.
0
32
9 лет назад
0
Vadik29, а координаты цели какие? Случаем не возле центра круга?
0
15
9 лет назад
0
>GroupEnumUnitsInRange(G, x, y, 1000, Base)
Экстрасенсы ведут расследование. Чекните условие выборки. Да и зачем перебор юнитов тогда?
0
29
9 лет назад
Отредактирован 16GB
0
Если срабатывает событие смерти, и в триггере с событием смерти используется группа G, то группа перезапишется. Для событий прерывающих поток, используй отдельные группы.
Принятый ответ
0
5
9 лет назад
0
loop
E = FirstOfGroup(G)
GroupRemoveUnit(G, E)
exitwhen E == null
это вообще чо за бред? разве не должно быть
loop
E = FirstOfGroup(G)
exitwhen E == null
какойто код...
GroupRemoveUnit(G, E)
endloop
0
25
9 лет назад
0
pusha1999, а какая черт возьми разница? o_O
0
5
9 лет назад
0
ну в jpng который без сджаза есть разница, может тот что отсюда скачаный и нет разницы и он все хавает, но там код компилируется так что если ты будешь писать в томже духе, то действий с юнитом вообще не будет. проверено)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.