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

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

компилятор зачищает утечку обнуляя локалку перед ретурном, возвращай результат через глобалку
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
2 года назад
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
27
2 года назад
Отредактирован MpW
0
мб дело в переменной playerCircle ? она не теряет ничего?

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

у вас внутри цикла u = playerCircles[playerid][j]
и снаружи unit playerCircle = getFreePlayerCircle(playerid)
а ну да, все норм вроде бы, показалось что одноименные заюзаны
3
20
2 года назад
Отредактирован biridius
3
компилятор зачищает утечку обнуляя локалку перед ретурном, возвращай результат через глобалку
Загруженные файлы
Принятый ответ
0
26
2 года назад
0
наверное включено flush locals в сижасс
0
37
2 года назад
0
return playerCircles[playerid][j]
Чтобы оставить комментарий, пожалуйста, войдите на сайт.