Вариант 1 или 2, как лучше? Или нет разницы?
Cкрин

SNART, утечка в BJ-функции. ты обо всех видимых утечках позаботился. А вот группу не удалил, не обнулил локалки. Это где "Юниты в радиусе в .... " - это группа создается при каждом вызове этой команды, и остается не удаленной, Не обнуляются внутри локалки
NazarPunk, ежесекундно утекает группа GetUnitsInRectAll(GetPlayableMapRect()), так как каждый раз создается новая группа, и будет огромное кол-во срзданных групп, и локалки не обнуляются
хотя никогда не пользовался set bj_wantDestroyGroup = true - надо видеть, где это работает
ссылка
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
32
Второе лучше, но там еще походу утечки. Так же не вижу удаление группы, да и что то не пойму что вы там заморозить хотите?
17
quq_CCCP:
Второе лучше, но там еще походу утечки. Так же не вижу удаление группы, да и что то не пойму что вы там заморозить хотите?
Заморозить: случайного юнита из группы юнитов - юниты в радиусе 350 от точки - позиция атакующий юнит - при условии - владелец юнита - совпадающий юнит - равно - противник.
28
SNART, второй вариант немного лучше
но утечек всеравно дофига
Этот комментарий удален
8
Раз тут такой разговор, то зачем очищать переменные для которых уже выделено место в памяти, разве они не будут просто перезаписываться?
21
Соблюдай 2 правила:
  • не плоди хендлы (обычно - локации)
  • удаляй ссылки (обнуляй переменные)
Для дебага можешь использовать небольшую
систему
library HandleCounter initializer Initialization

   globals
      leaderboard HandleBoard
   endglobals
   
   function HandleCounter_Update takes nothing returns nothing
      
      local integer i = 0
      local integer id
      local location array P
      local real result=0
      
      loop
      exitwhen i >= 50
         set i = i + 1
         set P[i] = Location(0,0)
         set id = GetHandleId(P[i])
         set result = result + (id-0x100000)
      endloop
      set result = result/i-i/2
      loop
          call RemoveLocation(P[i])
          set P[i] = null
          exitwhen i <= 1
          set i = i - 1
      endloop
      call LeaderboardSetItemValue(HandleBoard,0,R2I(result))
   
   endfunction


   function HandleCounter_Actions takes nothing returns nothing
       
      set HandleBoard = CreateLeaderboard()
      call LeaderboardSetLabel(HandleBoard, "Handle Counter")
      call PlayerSetLeaderboard(GetLocalPlayer(),HandleBoard)
      call LeaderboardDisplay(HandleBoard,true)
      call LeaderboardAddItem(HandleBoard,"Handles",0,Player(0))
      call LeaderboardSetSizeByItemCount(HandleBoard,1)
      call HandleCounter_Update()
      call TimerStart(GetExpiredTimer(),0.05,true,function HandleCounter_Update)

   endfunction

function Initialization takes nothing returns nothing

        call TimerStart(CreateTimer(),0,false,function HandleCounter_Actions)
        
endfunction

endlibrary

Эту библиотеку можешь закинуть в любое место вне функции/библиотеки/структуры.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.