Здравствуйте. На ваш взгляд, что может вызвать утечки в этой системе инкома и потребления? Прилагаю довольно много скринов. Понимаю, объем большой, просто прошу хотя бы глазами пробежаться, вдруг что очевидное не понимаю (статьи перечитывал, но кроме групп, точек и не удаленных спецэффектов не особо что-то понял)
Группу ALLPlayers я в инициализации занес.
Скрин икома золота
Скрин икнома древесины
Скрин системы потребления
Скрины запуска их систем, которые работают по таймеру.
Если нужно еще больше информации, пишите, очень хочется основу хотя бы проверить на оптимизацию)
Заранее спасибо.

Ну вроде так двигаюсь. Ща протестирую, в теории должно работать.

Да, утечек нет. Вот просто огромное спасибо, задача и так висела более года, без вас бы прорыва не было. В решение закреплю пост с окончательным решением, так как по сути тут ответ постепенно развивался по всем сообщениям, чтобы в итоге триггер пришел к таковому виду.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
quq_CCCP, работа с группами не утекает же в данном случае, юзаются темповые глобалки которые уничтожаются

Сам утечек не обнаружил, автор просто хочет найти изъяны в системе или у него карта вылетает после продолжительной игры? Можешь закинуть счётчик хэндлов для этого триггера, он в состоянии определить утечки на гуи
14
Скажем так, карта очень огромная во всех планах, в том числе и триггерах, поэтому иду методом исключения. Если приду к выводу, что вот эта система надежная, переключусь на другие триггеры (скорее всего тут тоже буду выкладывать). А так, да, карта вылетает после продолжительной игры. Счетчик хендлов давно стоит(на старте 8к, но потом может даже при бездействии скакнуть до 52к).
Хотя первостепенно конечно задача самому научиться находить утечки, их типы (вдруг чего по теме не понял). И вот такой разбор примера на практике очень поможет.
28
quq_CCCP, а, да, точно
function GetUnitsInRectMatching takes rect r, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRect(g, r, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
локалка не обнуляется в создании группы
14
Так, значит проблема в создании групп? Я гуишник, мой максимум это локальные переменные через кастомскрипт.
Потому, что кроме call destroygroup я должен сделать? Если спрашиваю очевидное, можете в статью какую-нибудь отправить.
UPD: на отдельной версии снес почти все остальные триггеры, скачок с 8 до 52 сохранился. Так что либо проблема тут, либо вообще может не в триггерах.
28
VinerX, делать выбор группы через кастомскрипт

т.к. ты гуишник могу посоветовать в редакторе переменных создать переменную булекспра (она в самом низу списка где-то находится), потом через кастом скрипт call GroupEnumUnitsInRect( udg_Group, bj_mapInitialPlayableArea, udg_Boolexpr ), можешь дальше обращаться к этой группе на гуи, очистив потом

в данном случае оно выбирает всех юнитов на карте, но через условия указанные в твоём булекспре

есть так же
native GroupEnumUnitsOfPlayer takes group whichGroup, player whichPlayer, boolexpr filter returns nothing
это выбор всех юнитов игрока

ну и
native GroupEnumUnitsInRangeOfLoc takes group whichGroup, location whichLocation, real radius, boolexpr filter returns nothing

остальное смотри уже сам, по необходимости
14
Перечитал несколько раз, чет нету. В рефордже она остается?
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.