Функция не возвращает юнита. Снизу код с самой функцией и там, где она вызывается. В самой функции юнит есть, а в возвращённом значении уже нет. В чем проблема?
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)
На скрине срабатывание этого кода.

Answer

компилятор зачищает утечку обнуляя локалку перед ретурном, возвращай результат через глобалку

Views: 72

0
Голосов: 0
XGM Bot 488637 - 4 days ago
0
Голосов: 0
Похожие вопросы:

» ответ
Написать 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?

0
Голосов: 0
0
Голосов: 0
мб дело в переменной playerCircle ? она не теряет ничего?

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

у вас внутри цикла u = playerCircles[playerid][j]
и снаружи unit playerCircle = getFreePlayerCircle(playerid)
а ну да, все норм вроде бы, показалось что одноименные заюзаны
3
Голосов: 3
ANSWER
biridius 488648 - 3 days ago (изм. )
3
Голосов: 3
компилятор зачищает утечку обнуляя локалку перед ретурном, возвращай результат через глобалку
Uploaded files
0
Голосов: 0
Hate 488659 - 3 days ago
0
Голосов: 0
наверное включено flush locals в сижасс
0
Голосов: 0
ScorpioT1000 488669 - 3 days ago
0
Голосов: 0
return playerCircles[playerid][j]