Есть два примера, один не вызывает утечки, второй вызывает.
1 пример:
Он не вызыввает утечек, хоть там и не стоит call DestroyGroup. Почему?
2 пример:
Вызывает утечки, почему? Как исправить?

Достаточно посмотреть как устроены эти бж функции и все будет понятно.
function OnlyAliveSourcess takes nothing returns boolean // эту функция в кастом код карты, в самом вверху.
    return GetUnitTypeId( GetFilterUnit( ) ) == 'hsor' and not ( GetWidgetLife( GetFilterUnit( ) ) < 0.405 or IsUnitType( GetFilterUnit( ), UNIT_TYPE_DEAD ) )
endfunction
//...
call GroupClear( udg_Group ) // это в кастом скрипт твоего триггера
call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, Condition( function OnlyAliveSourcess )) // это в кастом скрипт твоего триггера
Вот без утечек и локейшинов и прочих ненужных действий.
Далее уже делай что хочешь с юнитами в группе
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

ответ
Патиссончик, про центр области не заметил
точка каждый раз создаётся заново и это утечка
Патиссончик, есть прога на сайте для записи логов
так же есть дебаг через прелоад на сайте
вот счётчик утечек
ответ
тебе для начала надо научится пользоваться группами
прочти статьи ибо ты написал бред в вопросе
ответ
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
ответ
quq_CCCP:
Спасибо, понял что надо создавать форс единожды, чтобы утечек не было
Мдаа уж, оказывается все дело в том, что забыл поставить исходные позиции другим игрокам, хорошо хоть проверить догадался, засиделся за редактором
ответ
А зачем, мб альтернатива гуи? Ну она есть, jass.
Если использовать группы нормально, а не как нам предлагает гуи, не будет ни утечек, ни проблем.

10
Во втором примере утекает точка, которая создаётся при установлении группы. а в первом примере точка удаляется, а группа всего 1 одна, глобальная, поэтому и нет диких утечек
создавай группу через отдельную переменную-точку
потом удаляй
20
LordDracula:
Тоесть можно юзать второй вариант, и сильных утечек не будет?
10
KaneThaumaturge:
ну лучше через координаты делать, если триггер каждый сек работать будет
32
Достаточно посмотреть как устроены эти бж функции и все будет понятно.
function OnlyAliveSourcess takes nothing returns boolean // эту функция в кастом код карты, в самом вверху.
    return GetUnitTypeId( GetFilterUnit( ) ) == 'hsor' and not ( GetWidgetLife( GetFilterUnit( ) ) < 0.405 or IsUnitType( GetFilterUnit( ), UNIT_TYPE_DEAD ) )
endfunction
//...
call GroupClear( udg_Group ) // это в кастом скрипт твоего триггера
call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, Condition( function OnlyAliveSourcess )) // это в кастом скрипт твоего триггера
Вот без утечек и локейшинов и прочих ненужных действий.
Далее уже делай что хочешь с юнитами в группе
Принятый ответ
20
quq_CCCP:
Спасибо больше, функцию OnlyAliveSourcess вставить в вверх. А триггер сделать таким:
А первый пример можно юзать, если нужно не выбирать в регионе, а пикать радиусом?
quq_CCCP:
Да, я так понял функция фильтрует только волшебниц, но я сделал их для примера просто.
call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, null) Нельзя использовать ли это? А в условие ставить уже в цикле?
Загруженные файлы
32
ага, а тебе кого нужно? В функции есть строчка - GetUnitTypeId(GetFilterUnit()) == 'hsor'
Ну то что после == это есть ро код юнита, смотри в редакторе объектов нажав Ctr + D
20
quq_CCCP:
Да, я увидел, но я же не ограничиваюсь только этим услвоием, у меня куча триггеров с пиком, и все они вызывают утечки, и у всех разные условия. Исправляю мапу свою
call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, null) Нельзя использовать ли это? А в условие ставить уже в цикле?
32
Ну в радиусе нужны координаты, центра окружности и её радиус...
Вам я так понял координаты не даются...
KaneThaumaturge, не надо, это помедленнее в разы + пикать всех, включая дохлых плохая затея - могут быть баги.
Для этого делаются фильтры на все случаи жизни, штук 10, и используются во всех триггерах.
20
quq_CCCP:
Хорошо, тогда с ними разберусь уже как-то. Спасибо
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.