Насколько я понимаю если сделать так, то локация утекает:
function Func takes nothing returns nothing
	call CreateUnitAtLoc(p, id, GetUnitLoc(UNIT), 0) 
endfunction
А если сделать вот так то утечки не будет:
function Func takes nothing returns nothing
	local location loc = GetUnitLoc(UNIT)
	call CreateUnitAtLoc(p, id, loc, 0) 
	call RemoveLocation(loc)
	set loc = null
endfunction
Так ли это на самом деле?
И почему стоит избегать локаций?

Да, утекает, потому что функция get unit loc returns location, создаёт точку. Нет нужды их делать, потому что есть функционал для х и у, безутечный, ведь числа же, и не надо делать лишнюю работу.
только пару раз видел, где точки юзаются обязательно - это handle counter, и синхронизация триггера в мультиплеере, где сдвигается точка под координаты камеры и делается автовыбор даммика
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
Как правильно юзать локации?
Никак.
И почему стоит избегать локаций?
Потому что это хэндл. А хэндлы лучше не плодить.
Ответы (3)
28
nazarpunk, то, что я написал, и так являются нативками, только ещё и на ванилке любимой
16
... в случае если вы создаёте объект и присваиваете его локалке, или же создаёте какой-либо объект внутри функции и присваиваете его локальной переменной, то её ОБЯЗАТЕЛЬНО нужно обнулить, в случае если созданный объект не был удалён и вы продолжаете его использовать, то всё что нужно - это присвоить его какой-нибудь глобальной переменной и вернуть её.
13
Используй всегда координаты. пример GetUnitX(Unit), GetUnitY(Unit), в 99% случаев location вообще не нужен.
23
Да, утекает, потому что функция get unit loc returns location, создаёт точку. Нет нужды их делать, потому что есть функционал для х и у, безутечный, ведь числа же, и не надо делать лишнюю работу.
только пару раз видел, где точки юзаются обязательно - это handle counter, и синхронизация триггера в мультиплеере, где сдвигается точка под координаты камеры и делается автовыбор даммика
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.