Не могу найти ошибку

Добавлен
function ReturnToMammy takes unit ua, unit ub returns nothing
 local location loca = GetUnitLoc( ua )
 local location locb = GetUnitLoc( ub )
 local unit unitb = ub
 local real r

 set r = DistanceBetweenPoints( loca, locb )
 if ( r >= 1000 ) then
 
  call IssuePointOrderLocBJ( unitb, "move", loca )
 //else 
  //call KillUnit( unitb )
  
 endif
 
 call RemoveLocation( loca )
 call RemoveLocation( locb )
 
 set loca = null
 set locb = null
 set unitb = null
 
endfunction
Если расстояние между "мамой" и юнитом больше 1000, юнит должен идти обратно к "маме". Только вот юниты сваливают на другой конец карты и не думают возвращаться.
Функция вызывается другим триггером. Если убрать "//", юниты исправно мрут находясь возле "мамы".

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

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-юнит
0
17
11 лет назад
Отредактирован Sergant1000
0
а где ты объявил юнита?
0
28
11 лет назад
0
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-юнит
Принятый ответ
1
8
11 лет назад
Отредактирован koreec49
1
nvc123:
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-юнит
не работает.
вызов функции через кастом скрипт
call ReturnToMammy( gg_unit_Ucrl_0005, GetEnumUnit() )
то есть я сначала пикаю юнитов
Извиняюсь за тревогу, перезапустил редактор - все нормально
Чтобы оставить комментарий, пожалуйста, войдите на сайт.