Как я помню, код, подсвеченный красным цветом, вызывает утечки, чем можно заменить данный фрагмент кода?
Предполагаю, что нужен таймер, но не понимаю, как создать условие, под которое он создастся после начала игры (скриншот с обычного GUI ниже):

Accepted answer

Как я помню, код, подсвеченный красным цветом, вызывает утечки
Абсолютно точно нет.

Ничем не заменять, абсолютно безвредная функция.
function TriggerRegisterTimerEventPeriodic takes trigger trig, real timeout returns event
    return TriggerRegisterTimerEvent(trig, timeout, true)
endfunction

function TriggerRegisterTimerEventSingle takes trigger trig, real timeout returns event
    return TriggerRegisterTimerEvent(trig, timeout, false)
endfunction
`
LOADING AD...

Only a small set of comments around the pointed one shown. Go to actual.
1
20
2 months ago
1
Нативная от нее вот же?
То есть можно воткнуть
call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)
Если я понял, то в скобках название триггера, игрок, эвент и ноль.
Хотя меня уверяли что она сама по себе безвредная
0
10
2 months ago
0
Нативная от нее вот же?
То есть можно воткнуть
call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)
Если я понял, то в скобках название триггера, игрок, эвент и ноль.
Хотя меня уверяли что она сама по себе безвредная
Скорее всего от него нативка, но тут связано с таймером от начала игры, да и раз уж она безвредная, то думаю стоит её так оставить.
1
20
2 months ago
1
Хм, а как понять, что функция "вредна" и создаёт утечки? У меня карта напичкана много чем на GUI и после 15 минут игры вылетает. Предположил, что это из-за накопления утечек.
))
Это как минимум двойная работа для системы, потому что сначало идет родная нативная функция, потом ее обрабатывают в bj которая делает "по своему" и не всегда логично. Дело даже не в утечках, а в странном подходе, например, если ты создаешь одного юнита через триггер, на самом деле bj делает целую группу из одного юнита. Короче все учим Джасс или хотя бы толкаем custom script , забываем про использование вейтов и чаше юзаем локалки!)))
0
10
2 months ago
0
Nneshan:
Это как минимум двойная работа для системы, потому что сначало идет родная нативная функция, потом ее обрабатывают в bj которая делает "по своему" и не всегда логично. Дело даже не в утечках, а в странном подходе, например, если ты создаешь одного юнита через триггер, на самом деле bj делает целую группу из одного юнита. Короче все учим Джасс или хотя бы толкаем custom script , забываем про использование вейтов и чаше юзаем локалки!)))
Какой ужас, но суть понял, перелопачивать весь GUI к чертям и переходить на Jass. Благодарю.)
2
23
2 months ago
Edited by konvan5
2
Короче все учим Джасс или хотя бы толкаем custom script , забываем про использование вейтов и чаше юзаем локалки!)))
Замечательная мысль! Поддерживаю, как раз меньше вопросов будет по основам jass и + человек, который сможет на них отвечать :D
1
28
2 months ago
Edited by PT153
1
Хм, а как понять, что функция "вредна" и создаёт утечки?
Создают утечку не функции, а автор карты. Надо просто следить за созданием объектов и ненужные удалять.

Если вы на рефе, есть либа, которая исправит все утечки.
1
29
2 months ago
1
Создают утечку не функции, а автор карты.
Локалки, написанные ногами возникли конечно из-за автора карты....
1
28
2 months ago
1
nazarpunk, этим можно пренебречь в контексте гуи. Сначала убираем валидные утечки, потом, если всё ещё есть проблемы, уже убираем из-за JASS.
1
20
2 months ago
1
PT153:
Если вы на рефе, есть либа, которая исправит все утечки.
А я дурак, наивно надеялся, что на рефордже давно удалили все утечки!
1
29
2 months ago
1
что на рефордже давно удалили все утечки!
Утечки от созданных объектов ты никак не удалишь. Можно конечно писать код руками...
1
20
2 months ago
1
что на рефордже давно удалили все утечки!
Утечки от созданных объектов ты никак не удалишь. Можно конечно писать код руками...
И я знаю, почему. Потому что приказы в варкрафте это хэндлы. То есть ничего не дается напрямую, а как бы через посредника и конечно остается мусор в памяти. Такое могут поправить только сами близзы, но им пох!
Only a small set of comments around the pointed one shown. Go to actual.
To leave a comment please sign in to the site.