Следующая строка вызывает утечки, как избавиться от них? По-моему GetUnitsSelectedAll().
set udg_InfoPick[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsSelectedAll(GetTriggerPlayer()))

GetUnitsSelectedAll не освобождает хендл, но это не утечка.
С помощью set bj_wantDestroyGroup = true созданная в GetUnitsSelectedAll группа удаляются, но хендл не освобождается. Это не так страшно, но лучше сделать вот так.
globals
    group TempGroup
endglobals

function GetUnitsSelectedAllFixed takes player whichPlayer returns group
    set TempGroup = CreateGroup()
    call SyncSelections()
    call GroupEnumUnitsSelected(TempGroup, whichPlayer, null)
    return TempGroup
endfunction

...

set bj_wantDestroyGroup = true
set udg_InfoPick[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsSelectedAllFixed(GetTriggerPlayer()))
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
20
NazarPunk, сорре, я слишком тупой. поясни.
NazarPunk, мне нужно указать set bj_wantDestroyGroup = true?
Перед вызовом, да?
26
Поставь перед строкой
set bj_wantDestroyGroup = true
Ну ты догадался)
20
8gabriel8, поставил, но утечки все равно остались, хоть их и стало меньше вроде. (Проверял, другие триггеры не влияют)
30
KaneThaumaturge, попробуйте так
set bj_wantDestroyGroup = true
set udg_InfoPick[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsSelectedAll(GetTriggerPlayer()))
20
NazarPunk, Я уже написал так, но утечки все равно появляются, при этом триггере.
28
утечки все равно появляются
Откуда такая уверенность?
18
Это же конвертация из гуи, верно понимаю?)
Если игровой процесс в твоей карте не занимает больше 20-30 минут и утекает не очень сильно - то тебе не нужно волноваться по поводу каждой утечки
30
8gabriel8:
Наверное, дело в GetUnitSelectedAll.
Проморгал я работу с выбором
function GetUnitsSelectedAll takes player whichPlayer returns group
    local group g = CreateGroup()
    call SyncSelections()
    call GroupEnumUnitsSelected(g, whichPlayer, null)
    return g
endfunction
28
GetUnitsSelectedAll не освобождает хендл, но это не утечка.
С помощью set bj_wantDestroyGroup = true созданная в GetUnitsSelectedAll группа удаляются, но хендл не освобождается. Это не так страшно, но лучше сделать вот так.
globals
    group TempGroup
endglobals

function GetUnitsSelectedAllFixed takes player whichPlayer returns group
    set TempGroup = CreateGroup()
    call SyncSelections()
    call GroupEnumUnitsSelected(TempGroup, whichPlayer, null)
    return TempGroup
endfunction

...

set bj_wantDestroyGroup = true
set udg_InfoPick[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsSelectedAllFixed(GetTriggerPlayer()))
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.