Функция не возвращает юнита. Снизу код с самой функцией и там, где она вызывается. В самой функции юнит есть, а в возвращённом значении уже нет. В чем проблема?
static method getFreePlayerCircle takes int playerid returns unit

   int j = 0
   unit u = null
   loop
      exitwhen j == 8
      u = playerCircles[playerid][j]
      if GetUnitUserData(u) == 0{
         BJDebugMsg("inside "+I2S(GetHandleId(u)))
         return u
      }
      j += 1
   endloop
   
   return null

endmethod
unit playerCircle = getFreePlayerCircle(playerid)
BJDebugMsg("outside: "+I2S(GetHandleId(playerCircle)))
addUnitToPlayerCircle(spell_u, playerCircle)
На скрине срабатывание этого кода.

компилятор зачищает утечку обнуляя локалку перед ретурном, возвращай результат через глобалку
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Написать return false
ответ
bj убери для начала
[code]
function ret takes unit m,unit u returns nothing
local location lm=GetUnitLoc(m)
local location lu=GetUnitLoc(u)
local real dx=GetLocationX(lm) - GetLocationX(lu)
local real dy=GetLocationY(lm) - GetLocationY(lu)
local real r=SquareRoot(dx*dx+dy*dy)
if r>=1000 then
call IssuePointOrderLoc( u, "move", lm )
endif
call RemoveLocation(lm)
call RemoveLocation(lu)
endfunction
[/code]
m-мама
u-юнит
ответ
На хайве получил ответ, надо было писать evaluate
ответ
Независимо от того SaveReal там или SaveUnitHandle, ты записываешь значения в одну и ту же таблицу.
Ты просто SaveReal(h, id, 0, x_c) перезаписываешь этим - SaveUnitHandle(h, id, 0, u_c) и этим - SaveEffectHandle(h, id, 0, e)
ответ
зачем внешние очишаеш структуру?
Порой это нужно.

Замени GetTriggerUnit() на GetSpellAbilityUnit().
ApaxHoqpuJL:
call SetUnitAnimationReverseFollowed(u, 3, 1, 1, true, FollowUpFunc.AnimationTimerFollowup, animData)
А это что такое? Что за FollowUpFunc.AnimationTimerFollowup?

27
мб дело в переменной playerCircle ? она не теряет ничего?

пробуй так:
BJDebugMsg("outside: "+I2S(getFreePlayerCircle(playerid)))
тут уже вряд чем еще могу помочь. примитив. логически все просмотрел.

у вас внутри цикла u = playerCircles[playerid][j]
и снаружи unit playerCircle = getFreePlayerCircle(playerid)
а ну да, все норм вроде бы, показалось что одноименные заюзаны
22
Принятый ответ
компилятор зачищает утечку обнуляя локалку перед ретурном, возвращай результат через глобалку
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.