T
Tinkerhead
Guest
How do I make units move a distance via JASS so I don't have to make a new trigger via GUI for every region? For example: I press right and it moves right a certain distance.
function Release takes nothing returns nothing
local integer i = GetPlayerId(GetTriggerPlayer())+1
set udg_InsLR[i] = 0
endfunction
function ReUp takes nothing returns nothing
local integer i = GetPlayerId(GetTriggerPlayer())+1
set udg_InsWalk[i] = false
call IssueImmediateOrder( udg_InsUnit[i], "stop" )
endfunction
function Up takes nothing returns nothing
local integer i = GetPlayerId(GetTriggerPlayer())+1
local unit u = udg_InsUnit[i]
local real x
local real y
local real v = GetUnitDefaultMoveSpeed(u)
set udg_InsWalk[i] = true
loop
exitwhen udg_Insight[i] == false
exitwhen udg_InsWalk[i] == false
set x = GetUnitX(u) + 2*v* Cos((GetUnitFacing(u) + udg_InsLR[i] * 30)* bj_DEGTORAD)
set y = GetUnitY(u) + 2*v* Sin((GetUnitFacing(u) + udg_InsLR[i] * 30)* bj_DEGTORAD)
call IssuePointOrder(u, "move", x, y )
call TriggerSleepAction(0.7 )
endloop
set u = null
endfunction
function Down takes nothing returns nothing
local integer i = GetPlayerId(GetTriggerPlayer())+1
call SetUnitFacingTimed( udg_InsUnit[i], ( GetUnitFacing(udg_InsUnit[i]) + 180.00 ), 0.80 )
endfunction
function Left takes nothing returns nothing
local integer i = GetPlayerId(GetTriggerPlayer())+1
if udg_InsWalk[i] == true then
set udg_InsLR[i] = 1
else
call SetUnitFacingTimed( udg_InsUnit[i], ( GetUnitFacing(udg_InsUnit[i]) + 45.00 ), 0.50 )
endif
endfunction
function Right takes nothing returns nothing
local integer i = GetPlayerId(GetTriggerPlayer())+1
if udg_InsWalk[i] == true then
set udg_InsLR[i] = -1
else
call SetUnitFacingTimed( udg_InsUnit[i], ( GetUnitFacing(udg_InsUnit[i]) - 45.00 ), 0.50 )
endif
endfunction
function InsLock takes player p, unit tar, camerasetup cam0 returns nothing
local integer j = GetPlayerId(p) + 1
local trigger TReUp
local trigger TRelease
local trigger TUp
local trigger TDown
local trigger TLeft
local trigger TRight
set TReUp = CreateTrigger()
call TriggerRegisterPlayerKeyEventBJ( TReUp, Player(j-1), bj_KEYEVENTTYPE_RELEASE, bj_KEYEVENTKEY_UP )
call TriggerAddAction( TReUp, function ReUp )
set TRelease = CreateTrigger()
call TriggerRegisterPlayerKeyEventBJ( TRelease, Player(j-1), bj_KEYEVENTTYPE_RELEASE, bj_KEYEVENTKEY_LEFT )
call TriggerRegisterPlayerKeyEventBJ( TRelease, Player(j-1), bj_KEYEVENTTYPE_RELEASE, bj_KEYEVENTKEY_RIGHT )
call TriggerAddAction( TRelease, function Release )
set TUp = CreateTrigger()
call TriggerRegisterPlayerKeyEventBJ( TUp, Player(j-1), bj_KEYEVENTTYPE_DEPRESS, bj_KEYEVENTKEY_UP )
call TriggerAddAction( TUp, function Up)
set TDown = CreateTrigger()
call TriggerRegisterPlayerKeyEventBJ( TDown, Player(j-1), bj_KEYEVENTTYPE_DEPRESS, bj_KEYEVENTKEY_DOWN )
call TriggerAddAction( TDown, function Down )
set TLeft=CreateTrigger()
call TriggerRegisterPlayerKeyEventBJ( TLeft, Player(j-1), bj_KEYEVENTTYPE_DEPRESS, bj_KEYEVENTKEY_LEFT )
call TriggerAddAction( TLeft, function Left)
set TRight=CreateTrigger()
call TriggerRegisterPlayerKeyEventBJ( TRight, Player(j-1), bj_KEYEVENTTYPE_DEPRESS, bj_KEYEVENTKEY_RIGHT )
call TriggerAddAction( TRight, function Right)
//...more script in here which I cut out to simplify
call DestroyTrigger(TReUp)
call DestroyTrigger(TRelease)
call DestroyTrigger(TUp)
call DestroyTrigger(TDown)
call DestroyTrigger(TLeft)
call DestroyTrigger(TRight)
set udg_InsUnit[j] = null
set tar = null
set p = null
endfunction