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

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

Ничем не заменять, абсолютно безвредная функция.
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...
28
Как я помню, код, подсвеченный красным цветом, вызывает утечки
Абсолютно точно нет.

Ничем не заменять, абсолютно безвредная функция.
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
Accepted answer
10
Ничем не заменять, абсолютно безвредная функция.
Хм, а как понять, что функция "вредна" и создаёт утечки? У меня карта напичкана много чем на GUI и после 15 минут игры вылетает. Предположил, что это из-за накопления утечек.
21
Нативная от нее вот же?
То есть можно воткнуть
call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)
Если я понял, то в скобках название триггера, игрок, эвент и ноль.
Хотя меня уверяли что она сама по себе безвредная
10
Нативная от нее вот же?
То есть можно воткнуть
call TriggerRegisterPlayerUnitEvent(trig, Player(index), whichEvent, null)
Если я понял, то в скобках название триггера, игрок, эвент и ноль.
Хотя меня уверяли что она сама по себе безвредная
Скорее всего от него нативка, но тут связано с таймером от начала игры, да и раз уж она безвредная, то думаю стоит её так оставить.
21
Хм, а как понять, что функция "вредна" и создаёт утечки? У меня карта напичкана много чем на GUI и после 15 минут игры вылетает. Предположил, что это из-за накопления утечек.
))
Это как минимум двойная работа для системы, потому что сначало идет родная нативная функция, потом ее обрабатывают в bj которая делает "по своему" и не всегда логично. Дело даже не в утечках, а в странном подходе, например, если ты создаешь одного юнита через триггер, на самом деле bj делает целую группу из одного юнита. Короче все учим Джасс или хотя бы толкаем custom script , забываем про использование вейтов и чаше юзаем локалки!)))
10
Nneshan:
Это как минимум двойная работа для системы, потому что сначало идет родная нативная функция, потом ее обрабатывают в bj которая делает "по своему" и не всегда логично. Дело даже не в утечках, а в странном подходе, например, если ты создаешь одного юнита через триггер, на самом деле bj делает целую группу из одного юнита. Короче все учим Джасс или хотя бы толкаем custom script , забываем про использование вейтов и чаше юзаем локалки!)))
Какой ужас, но суть понял, перелопачивать весь GUI к чертям и переходить на Jass. Благодарю.)
25
Короче все учим Джасс или хотя бы толкаем custom script , забываем про использование вейтов и чаше юзаем локалки!)))
Замечательная мысль! Поддерживаю, как раз меньше вопросов будет по основам jass и + человек, который сможет на них отвечать :D
28
Хм, а как понять, что функция "вредна" и создаёт утечки?
Создают утечку не функции, а автор карты. Надо просто следить за созданием объектов и ненужные удалять.

Если вы на рефе, есть либа, которая исправит все утечки.
30
Создают утечку не функции, а автор карты.
Локалки, написанные ногами возникли конечно из-за автора карты....
28
nazarpunk, этим можно пренебречь в контексте гуи. Сначала убираем валидные утечки, потом, если всё ещё есть проблемы, уже убираем из-за JASS.
21
PT153:
Если вы на рефе, есть либа, которая исправит все утечки.
А я дурак, наивно надеялся, что на рефордже давно удалили все утечки!
30
что на рефордже давно удалили все утечки!
Утечки от созданных объектов ты никак не удалишь. Можно конечно писать код руками...
21
что на рефордже давно удалили все утечки!
Утечки от созданных объектов ты никак не удалишь. Можно конечно писать код руками...
И я знаю, почему. Потому что приказы в варкрафте это хэндлы. То есть ничего не дается напрямую, а как бы через посредника и конечно остается мусор в памяти. Такое могут поправить только сами близзы, но им пох!
28
SсRealm, в смысле приказ это хэндл? Есть ли статья, подтверждающая твои слова?
28
rsfghd, нет, приказ это число или строка.
30
приказ это число или строка.
А так же приказ это событие.
To leave a comment please sign in to the site.