Одну не знаю как удалить, а вторую не могу найти, подробности на скрине.

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

Alexey103, посмотрел карту которую ты скинул
отключая по строчке выяснил что утечка возникает при установке переменной playergroup
т.е. утекает группа игроков
это происходит из за не обнулённой переменной в бж функции
чтобы исправить надо не использовать эту бж функцию
желательно перейти на джасс

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
23
6 лет назад
0
Само событие утекает. Оно реагирует абсолютно на всех юнитов, которые "отдают" приказ в цель (даже если поставить условие). Для этих событий желательно устанавливать конкретного юнита, это меньшее зло.
4
21
6 лет назад
4
Obelick, впервые такое слышу..
2
29
6 лет назад
2
Obelick:
Само событие утекает. Оно реагирует абсолютно на всех юнитов, которые "отдают" приказ в цель (даже если поставить условие). Для этих событий желательно устанавливать конкретного юнита, это меньшее зло.
Как событие может утекать то? Событие происходит и дёргает всех "слушателей" которые на него повешены. И чем больше "слушателей", тем хуже.
Мне вот интересно, когда нейтрально пассивный Order("smart") отдаёт?
0
12
6 лет назад
0
biridius:
код этой гуишной функции которая поворачивает юнита к точке (отключенная на скрине под коментом "тут утечка как удалить")
как видно на скрине не обнуляется локалка
как исправить - заменить на установку угла поворота равным углу между точками вместо этой функции
как всегда не редактируются вложения ну почините уже плиз
Еще надо не забыть удалить оба эти Position of (unit), т.к. они тоже точки создают. На ГУИ проще всего будет сперва записать их в переменные типа Temp_Loc1, Temp_Loc2, произвести действия триггера, а затем их удалить.
0
17
6 лет назад
0
Sergarr, Это очевидно, и не нужно создавать переменных, они у меня уже там созданы
NazarPunk, Там же нейтрально пассивный цель отданного приказа.
2
29
6 лет назад
Отредактирован Msey
2
впервые такое слышу..
    private function init takes nothing returns nothing
     local trigger t=CreateTrigger()
        call TriggerAddCondition(t, Condition( function spellIdMatch) )
        call TriggerAddAction(t,    function onSpellCast)
        call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_CAST )

     set t=null
    endfunction
Возможно он имел ввиду триггер, который висит в памяти, после регистрации событий и условий с действиями соответственно. Код выше его обнуляет, чего в гуи нет.
0
17
6 лет назад
0
Obelick, Ты не прав, я проверил заменив детектор расстояния между юнитами сообщением в чат, события и условия не утекают.
biridius, NazarPunk, Obelick, ScopteRectuS, Sergarr, Msey,
Путём исключения безутечных частей триггера удалось локализовать область поиска утечек до вот такого маленького участка, кто-нибудь может теперь понять что там не так, или просто написать джасс замену этого участка без утечек, хотя там и так всё на кастом скрипте. Я вообще удивляюсь, у меня такая-же проблема была в аналогичном триггере только в системе генерации мобов для карты, и там тоже никто толком не помог. Видимо гет енам юнитс нифига не безутечный, судя по хендл каунтеру. Или я не знаю как обьяснить его рост.
Загруженные файлы
2
29
6 лет назад
2
Alexey103:
Obelick, Ты не прав, я проверил заменив детектор расстояния между юнитами сообщением в чат, события и условия не утекают.
biridius, NazarPunk, Obelick, ScopteRectuS, Sergarr, Msey,
Путём исключения безутечных частей триггера удалось локализовать область поиска утечек до вот такого маленького участка, кто-нибудь может теперь понять что там не так, или просто написать джасс замену этого участка без утечек, хотя там и так всё на кастом скрипте. Я вообще удивляюсь, у меня такая-же проблема была в аналогичном триггере только в системе генерации мобов для карты, и там тоже никто толком не помог. Видимо гет енам юнитс нифига не безутечный, судя по хендл каунтеру. Или я не знаю как обьяснить его рост.
Внесите проблемный триггер в отдельную карту и прикрепите сообщение. Сложно разбираться по картинкам.
NazarPunk, Там же нейтрально пассивный цель отданного приказа.
Что-то недоглядел.
0
21
6 лет назад
Отредактирован scopterectus
0
Msey, эту локальную переменную можно не обнулять, она ссылается на статичный триггер, который будет висеть в памяти до конца игры. Другое дело, если бы это был динамичный триггер...
0
29
6 лет назад
0
ScopteRectuS:
Msey, эту локальную переменную можно не обнулять, она ссылается на статичный триггер, который будет висеть в памяти до конца игры. Другое дело, если бы это был динамичный триггер...
И зачем вам лишний handle, который вы не сможете дальше использовать?
0
21
6 лет назад
0
NazarPunk, ну так set t = null не освободит handle. Handle освободится, когда объект будет удалён и всё ссылки на него стёрты. А так как триггер статичный, он будет висеть в памяти до конца игры.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.