Неправильное срабатывание групп.
Столкнулся с такой проблемой, вызов FirstOfGroup иногда возвращает null вместо юнита, который ДОЛЖЕН был быть в этой группе и у юнита остается сохраненная Boolean "YamatoSphere" и тестовый VertexColor 50 255 50.
Тобишь тут в очистке FirstOfGroup , скорее всего выдает null и не "видит" юнита в группе.
loop
set uTemp = FirstOfGroup(g)
exitwhen uTemp == null
call GroupRemoveUnit(g, uTemp)
call RSUBool(uTemp, "YamatoSphere")
call RemoveMagicResistGroup(uTemp, h)
call SetUnitVertexColor(uTemp, 255,255,255,255)
endloop
Долго искали вместе с напарником ошибке в коде, но не нашли, пришли к выводу что группы могут как-то шалить. У кого нибудь есть мысли по этому поводу или может быть кто нибудь сталкивался с этим и знает решение проблемы.
на 29 секунде Хаку жмет купол и у нее и у Кисаме не очистиласть Boolean и VertexColor
`
ОЖИДАНИЕ РЕКЛАМЫ...
16
который ДОЛЖЕН был быть в этой группе
что мешает добавить перед exitwhen логирование имени/номера юнита (или вообще вывод списка всех юнитов в одну строку) и проверить - есть ли он реально именно в момент возврата null ?
7
host_pi,
мешает потому что, по-другому кроме как если FirstOfGroup вернет null - то это никак не получится повторить
26
Отладка, отладка, и ещё раз отладка...
Добавить перед и после GroupAddGroup(g,gTemp) проверку на содержимое, выведи текстом кол-во и имена юнитов, которые находятся в g и gTemp до и после этой функции. Кроме как за это тут и зацепиться больше не за что.
function GroupAddGroup takes group sourceGroup, group destGroup returns nothing
    . . .
    set bj_groupAddGroupDest = destGroup
    call ForGroup(sourceGroup, function GroupAddGroupEnum
		{ call GroupAddUnit(bj_groupAddGroupDest, GetEnumUnit()) }
	)
	. . .
endfunction
1
Extremator, Выше уже скинули статью про эту надуманную проблему... Отлаживать тут нечего, всё так и должно работать...
26
DiZzicH, она не "надуманная", а "НЕочевидная". Для этого и надо делать отладку, что бы сначала увидеть сколько вообще юнитов в группе и уже после этого искать проблему.
32
Поэтому вместо цикла юзайте ForGroup, особенно если работайте с уже созданными группами в которых может удалились юниты каким то другим куском кода, цикл + FirstOfGroup хороши лишь для мгновенный действий к примеру в спеллах, всем в аое сразу дмг нанесли. А вот если вы храните в группе допустим всех кого задел спелл и повесил дебафф, то определенно ForGroup, так же проверяем чему равен GetEnumUnit(), в целом не было бы лишним в таких спеллах где вы храните всех юнитов под его действием добавляеть и событие триггера на диспел или смерть юнита, чтобы удалять таких юнитов из группы.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.