Как убрать утечку в этой функции, что только не пробовал делать, все равно при использовании способности каждый раз прибавляется одна утечка. (А стандартно при использовании способности в 1 раз прибавляется 2 утечки, тоже интересно почему?) При этом если установить как последняя созданная группа или необъявленная переменная группы такого не будет. Проверял через функцию HandleCounter. Это баг проверки утечек или так и должно быть? Или нужно через джасс?

Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
6
Юниты в радиусе содержит такую функцию создающюю утечку группы
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
Делай как на втором скрине только в CustomScript добавляй вот эту функцию вместо(Юниты в радиусе)
GroupEnumUnitsInRangeOfLoc(group, whichLocation, radius, null)
А лучше используй GroupEnumUnitsInRange юзай не точки а координаты x,y
10
Tumart:
Юниты в радиусе содержит такую функцию создающюю утечку группы
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
Делай как на втором скрине только в CustomScript добавляй вот эту функцию вместо(Юниты в радиусе)
GroupEnumUnitsInRangeOfLoc(group, whichLocation, radius, null)
А лучше используй GroupEnumUnitsInRange юзай не точки а координаты x,y
А на гуи можно пожалуйста?
6
Lotus101, ну гуи только через CustomScript он же JassCode
Личный Сценарий GroupEnumUnitsInRangeOfLoc(udg_Group, udg_Point,200., null)
10
Tumart:
Lotus101, ну гуи только через CustomScript он же JassCode
Личный Сценарий GroupEnumUnitsInRangeOfLoc(udg_Group, udg_Point,200., null)
Я так понял надо так: call GroupEnumUnitsInRangeOfLoc(udg_Group, udg_Point, 200, null) Хотя и ваше тоже копировал, просто непонятно почему пробела перед 200 нет и после 200 точка. Все равно также прибавляется одна утечка.
6
Lotus101, ты удалил действие Установить Group=Юниты в радиусе?
10
Tumart:
Lotus101, ты удалил действие Установить Group=Юниты в радиусе?
Если я его удалю как тогда работать скил будет?
6
Lotus101, ты уже сделал то же самое через CustomScript сначала установи точку Point удали Установить Group... далее Личный Сценарий call GroupEnumUnitsInRangeOfLoc(udg_Group, udg_Point,200., null)
после все остальное как на 2 скрине
и незабывай обнулять udg_Group=null; udg_Point=null
28
2 скрин не вызывает утечки
только удалять юнитов из группы не обязательно
6
nvc123, вот в этой функции создается локальная группа и не обнуляется
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
но да ладно HandleCounter считает локации
Значит из за того что не обнулял.
10
Tumart:
nvc123, вот в этой функции создается локальная группа и не обнуляется
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
но да ладно HandleCounter считает локации
Значит из за того что не обнулял.
Сделал вот так, действие выбрать юнитов и цикл мне нужно обязательно, все равно прибавляется одна утечка (теперь иногда)
Загруженные файлы
6
Lotus101, ни че не понял зачем ты два раза делаешь одно и тоже? выбрал юнитов далее через ForGroup(udg_Croup,function нужная функция) лан в общем лучше делай как на втором скрине там незначительная утечка
10
Tumart:
Lotus101, ни че не понял зачем ты два раза делаешь одно и тоже? выбрал юнитов далее через ForGroup(udg_Croup,function нужная функция) лан в общем лучше делай как на втором скрине там незначительная утечка
Все все дошло, спасибо помогло. Поменял последняя группа юнитов на Group больше утечек нет вообще (хотя при первом использовании способности пропдают 2 утечки, потом прибавляется одна а дальше ничего не меняется, странно) Еще вопрос, все эти скрипты обязательно писать надо, может какие-то лишние?
6
Lotus101, хм ну можно и так ) нет получается лишних нет. А лучше сделал бы как на втором скрине просто убери удалить юнитов из группы и обнули
10
Tumart:
Lotus101, хм ну можно и так ) нет получается лишних нет. А лучше сделал бы как на втором скрине просто убери удалить юнитов из группы и обнули
А зачем в скрипте call GroupEnumUnitsInRangeOfLoc(udg_Group, udg_Point,200., null) после Point, нет пробела и после 200 точка это важно?
6
Lotus101, да нет. Точка означает что это реальное число пробел вапще ни че не значит
10
Вот как должен выглядеть полностью правильный триггер без утечек, единственная утечка создастся только при первом использовании, это я так понял переменная группы, ее обнулять нельзя, иначе скил будет работать только раз.
Загруженные файлы
Принятый ответ
20
удаляй группу, а потом используй действие set variable - группа такая-то
Чтобы оставить комментарий, пожалуйста, войдите на сайт.