Хотел бы узнать, почему ф-ция Matching unit утечна, и какие есть способы, чтобы ее обойти?

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

короче вопрос закрываю ибо все ответы даны а обсуждение отошло от темы
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
28
8 лет назад
2
пруф в студию
0
15
8 лет назад
Отредактирован EnergyFrost
0
Не понял, что это за функция. Но в поиске глянул, какие функции имеют слово Matching. Это все BJ функции.
К примеру:
function GetUnitsInRangeOfLocMatching takes real radius, location whichLocation, boolexpr filter returns group
    local group g = CreateGroup()
    call GroupEnumUnitsInRangeOfLoc(g, whichLocation, radius, filter)
    call DestroyBoolExpr(filter)
    return g
endfunction
Честно сказать, код можно было бы и без моего участия раздобыть.
А что касается "почему ф-ция Matching unit утечна, и какие есть способы, чтобы ее обойти", то вам следует пройти в раздел "Статьи". Клац и клац. Мне кажется, что вам лучше самому прочитать, чем я буду копипастить статью целиком
Если я неверно понял, о какой функции идет речь, то поправьте меня
6
28
8 лет назад
6
EnergyFrost, Matching unit это гуишное название
в джасс она называется так
constant native GetFilterUnit takes nothing returns unit
как видно из прототипа это нативка
поэтому я прошу пруф
в каком месте она создаёт утечку
ибо на данный момент вопрос афтара звучит так
"почему крокодилы летают на крыльях и как это исправить"
у меня есть только 1 ответ на подобный вопрос
вы курите слишком много травы
0
15
8 лет назад
0
nvc123, а вот оно что. Ну тогда вообще хз, откуда такой вопрос у автора
2
28
8 лет назад
2
и другого не будет пока не увижу летающего крокодила
либо пока сам не курну травы
2
15
8 лет назад
Отредактирован EnergyFrost
2
nvc123, кажется, я понял, что автор имел в виду. Он неверно задал вопрос. Утечка кроется не в MatchingUnit. А утечка кроется, в каком месте используют её.
Обычно ее используют при отсеивании юнитов в группе. А от в гуи это как раз то, отрывок чего я присоединил. То есть утечку создает группа.
0
32
8 лет назад
0
Просто не юзайте бж функции с группами, там ни локейшены ни сами группы не удаляются, ни говоря о не обнуленных локалках.
0
28
8 лет назад
0
quq_CCCP, у него нативка утекает а не бж (по его словам)
0
12
8 лет назад
0
EnergyFrost:
А что касается "почему ф-ция Matching unit утечна, и какие есть способы, чтобы ее обойти", то вам следует пройти в раздел "Статьи". Клац и клац.
Забавный факт, но именно в этой статье есть комментарий:
Liebendig1993:
Просто кудабы ни зашел, везде пишут ток одно и то же...для новичков полно статей на разных сайтах типа copy-past...я тож новичек в этом деле, и сделав все, что написано в этой статье у меня все-равно карта жрет по 50 кб в сек(((
Почему совершенно случайно узнаешь что triggering unit нельзя использовать после wait? Почему нигде не написано, что matching unit утечна? Ради интереса можете поискать в инете статьи об утечках...везде слизана одна и та же статья
В свое время этот комментарий породил у меня тот же вопрос.
0
28
8 лет назад
0
vincent_freeman, одни нубы ссылаются на бред других нубов
0
32
8 лет назад
0
Наверное так называемый Новичок начал удалять локейшены но забыл не юзать бж функции где эти локейшены создаются и не удаляются, видя что оптимизация не помогла он начал грешить на Matching unit, прост так, с потолка...
GetFilterUnit() не вызывает утечки, ибо возвращает только существующего на карте юнита, а не плодить нового как GetUnitLoc() которая каждый раз плодит по локейшену, но это многие не помнят.
Ах да чуть не забыл, там половина гуи действий с группами вызвывает утечки то локейшены то группы, именно функция типа GetUnitsInRectMatching, вот тут да, не удаляется группа.
0
15
8 лет назад
Отредактирован EnergyFrost
0
vincent_freeman, было время, когда у меня не было вообще никакого скилла, как и у многих, но тем ни менее как-то научились. А научились из 10-14 вопросов в Q/A, статей с сайта и практикой в редакторе JNGP. Другого способа не существует.
2
12
8 лет назад
2
EnergyFrost, ты это лучше nvc скажи, а то он отпугнет последних энтузиастов от вар3)
2
29
8 лет назад
2
udg_G глобальная переменная типа группа
call GroupEnumUnitsInRange(udg_G,x,y,200.,null)
loop
set u = FirstOfGroup(udg_G)
if Условия подбора юнита u then
endif
call GroupRemoveUnit(udg_G,u)
exitwhen u == null
endloop
можешь использовать вот такую конструкцию, чтобы избежать вызовов функции с matching unit
0
28
8 лет назад
0
короче вопрос закрываю ибо все ответы даны а обсуждение отошло от темы
Принятый ответ
0
15
8 лет назад
0
16GB, да мне-то ты что рассказываешь) я уже свою карту сделал
Чтобы оставить комментарий, пожалуйста, войдите на сайт.