Интересная функция определаюшая как расположен рельеф перед юнитом в x рандже максимум
function MoveFindAngle takes real x,real y,real a,real s returns nothing основа где
x - Икс старта
y - Игрик старта
a - Направление градусы
s - Растояние максимально
Возврашает если рельеф горихонтальный то 2
Вертикальный то 1
+ функция абс ето модуль просто я ее всежда переделую
function MovePolarX takes real x, real range, real angle returns real
return x + Cos(angle * 0.017453277)*range
endfunction
function MovePolarY takes real y, real range, real angle returns real
return y + Sin(angle * 0.017453277)*range
endfunction
function MoveCheckVertical takes real x,real y,real a,real s returns integer
local real in = 0.00
local real nx = x
loop
exitwhen IsTerrainPathable(x,y,PATHING_TYPE_WALKABILITY) == true or in > s
set in = in + Abs(nx - MovePolarX(nx,5.00,a))
set nx = MovePolarX(nx,5.00,a)
if IsTerrainPathable(nx,y,PATHING_TYPE_WALKABILITY) == true then
return 1
endif
endloop
return 0
endfunction
function MoveCheckGorizontal takes real x,real y,real a,real s returns integer
local real in = 0.00
local real ny = y
loop
exitwhen IsTerrainPathable(x,ny,PATHING_TYPE_WALKABILITY) == true or in > s
set ny = MovePolarY(ny,5.00,a)
if IsTerrainPathable(x,ny,PATHING_TYPE_WALKABILITY) == true then
return 2
endif
set in = in + Abs(ny - MovePolarY(ny,5.00,a))
endloop
return 0
endfunction
function MoveFindAngle takes real x,real y,real a,real s returns integer
//local real nx = x
//local real ny = y
local integer b
//loop
//exitwhen IsTerrainPathable(nx,ny,PATHING_TYPE_WALKABILITY) == true
//set nx = MovePolarX(nx,5.00,a)
//set ny = MovePolarY(ny,5.00,a)
//endloop
set b = MoveCheckGorizontal(x,y,a,s)
if b == 0 then
set b = MoveCheckVertical(x,y,a,s)
endif
// call CreateTextTagLocBJ( I2S(b), Location(nx,ny), 0, 10, 100, 100, 100, 0 ) - text kak proverka
return b
endfunction
Делал для себя меби кому понадобитса фунцкия изменения полета унита если повторяюсь сорь незаметил надеюсь комуто понадобитса :):
// Функция измененя полета юнита SetFlyHeight(unit witch unit, real height, real speed change height,boolen on/off)
function SetFlyHeight takes unit f , real h , real s, boolean onof returns nothing
if onof == true then
call UnitAddAbilityBJ('Amrf', f )
call UnitRemoveAbility( f, 'Amrf')
call SetUnitFlyHeightBJ( f, h, s )
call SetUnitPathing(f,false)
else
call SetUnitFlyHeightBJ( f, 0, s )
call SetUnitPathing(f,true)
endif
endfunction
» WarCraft 3 / Библиотека функций
function MoveFindAngle takes real x,real y,real a,real s returns nothing основа где
x - Икс старта
y - Игрик старта
a - Направление градусы
s - Растояние максимально
Возврашает если рельеф горихонтальный то 2
Вертикальный то 1
+ функция абс ето модуль просто я ее всежда переделую
» WarCraft 3 / Библиотека функций