Создал систему отрядов, обратился на этот ресурс за помощью на этот ресуср в результате чего была выявлена новая более страшная опасность для карты, это большое количество утечек со старта игры на карте через UjAPI: Handle Counter, при загрузке карты были обнаружены 10 000 утечек, не могу выявить и даже не знаю как причины этих утечек и устранить их, может кто то может помочь. Помогите установить причину хэндл утечек со старта игры и устранить их.
Извиняюсь за первую версию карты, она была не правильной.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
Насколько я помню, в JNGP ещё не пробросили создание юнита нативкой. Посему придётся создавать юнита в Location, которая скорей всего утечёт.
function CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group
    call GroupClear(bj_lastCreatedGroup)
    loop
        set count = count - 1
        exitwhen count < 0
        call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
        call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
    endloop
    return bj_lastCreatedGroup
endfunction
function CreateUnitAtLocSaveLast takes player id, integer unitid, location loc, real face returns unit
    if (unitid == 'ugol') then
        set bj_lastCreatedUnit = CreateBlightedGoldmine(id, GetLocationX(loc), GetLocationY(loc), face)
    else
        set bj_lastCreatedUnit = CreateUnitAtLoc(id, unitid, loc, face)
    endif

    return bj_lastCreatedUnit
endfunction
И или присваивать результат группе, которая скорей всего утечёт или создавать по одному и забирать через bj_lastCreatedUnit. Можно конечно воспользоваться CustomCode, но тогда весь гуй превратится в текстовый файл с неудобным редактированием. Оно тебе надо?
28
вар крашается если что примерно на 1.2кк утечек (а точнее реальной нагрузки на вар, 1.2к мб), так что 10к это мелочь и вероятно это тупо деструкты, юниты, предметы и глобальные переменные которыми всегда пользуешься, тут не над чем париться, главное, как указали выше, следить за динамикой роста
6
Посему придётся создавать юнита в Location, которая скорей всего утечёт.
Подозреваю что, как писал выше, после иничтожения отряда падает кол во хэндлов но все равно остается на 11 больше прежнего значения до создания этого отряда из 12 юнитов, это 11 остающихся хэндлов и есть юниты не командиры 12 юнитового отряда где 12й это командир, которые добавляются созданному юниту командиру триггерно, но они добавляются на точку рядом с командиром которая выше у меня установленна в переменную и удаляется сразу после действия создания юнита в этой точке, так почему же ее хэндл не удаляется?

12 хэндл, по всей видимости от командира который создается в строении естественным путем, как появляется, так и исчезает после разложения его скелета после смерти, скелеты в моей системе лежат 5 сек, это для значительного снижения нагрузки на движ вара.

вар крашается если что примерно на 1.2кк утечек (а точнее реальной нагрузки на вар, 1.2к мб)
крашится, ты имеешь в виду только начинает лагать, или вылетает?
30
но они добавляются на точку рядом с командиром которая выше у меня установленна в переменную и удаляется сразу после действия создания юнита в этой точке
Гуй. Без конвертации в код и оптимизации дать точный ответ невозможно.
28
крашится, ты имеешь в виду только начинает лагать, или вылетает?
краш значит краш, если я говорю лаги/просадка фпс и т.п., значит лаги, просадка фпс и т.п.
ничего другого я не имею ввиду)
краш это когда ты видишь окно с фатал еррором
Загруженные файлы
6
краш значит краш, если я говорю лаги/просадка фпс и т.п., значит лаги, просадка фпс и т.п.
ничего другого я не имею ввиду)
краш это когда ты видишь окно с фатал еррором
В любом случае лаги это уже серьезная угроза, не менее чем краш.
6
в общем при создании командира, ему добавляется еще 11 юнитов солдат, проверял, изменял триггер ''для каждого числа А выполнять от 1 до 11" на "для каждого числа А выполнять от 1 до 1" и выявил что один добавленный юнит дает прибавку +3 хэндла, а после уничтожения отряда забирает -2. В первом варианте где "1 до 11" добавленные 11 юнитов дают прибавку + 23 хэндла, а после уничтожения отряда -12 , в связи с чем 11 лишних хэндлов остается. Я не знаю в чем причина.
30
для каждого числа А выполнять от 1 до 11
Ещё раз повторю. Если ты хочешь настолько глубоко погрузиться в хэндлы, то переходи на код. На гуях это бессмыленно.
6
еще я убедился, что функция call RemoveLocation (upg_название переменной) которая удаляет точку в которой создается солдат, выполняет свою функцию т к при ее удалении хэндлов при старте и создании отряда гораздо больше.
23
blackmaker, Правильно говорит nazarpunk, переходи на код. Там вообще никакие точки не понадобятся. И он не страшный. Учится максимум 2 месяца, по статьям из хгм. Просто немного придётся с переводчиком гугл посидеть. Зато взамен получишь кучу ништяков для работы... И не надо будет ломать голову над лишними механиками.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.