this has been done before but i didnt really like any of the others ons so i made one myself.
Arrow Key Movement
1.0
1) Create 3 Variables , named "Up", "Right" , "Left". Make those 3 boolean arrays for the type and make a new variable called Players_Hero with type Unit Array. and another variable named TempPoint and its type point array.
2) Create a map init trigger and set some unit into the Players_Hero variable
3) Create a new trigger named "Up Pressed"
4) add this event to the trigger : Player - Player 1 (Red) Presses the Up Arrow key
5) add the variable up in the actions part and make it look like this
Set Up[(Player number of (Triggering player))] = True
6) Make that for all the arrow keys exept for down.
Example:
SPOILER
]Up Press
Events
Player - Player 1 (Red) Presses the Up Arrow key Player - Player 2 (Blue) Presses the Up Arrow key Player - Player 3 (Teal) Presses the Up Arrow key Player - Player 4 (Purple) Presses the Up Arrow key
Conditions Actions
Set Up[(Player number of (Triggering player))] = True
Right Press
Events
Player - Player 1 (Red) Presses the Right Arrow key Player - Player 2 (Blue) Presses the Right Arrow key Player - Player 3 (Teal) Presses the Right Arrow key
Conditions Actions
Set Right[(Player number of (Triggering player))] = True
Left Press
Events
Player - Player 1 (Red) Presses the Left Arrow key Player - Player 2 (Blue) Presses the Left Arrow key Player - Player 3 (Teal) Presses the Left Arrow key Player - Player 4 (Purple) Presses the Left Arrow key
Conditions Actions
Set Left[(Player number of (Triggering player))] = True
1.1
Now we are going to create the "release triggers" you will basicly be doing the same thing as the pressed ones but like this
Up Release
Events
Player - Player 1 (Red) Releases the Up Arrow key Player - Player 2 (Blue) Releases the Up Arrow key Player - Player 3 (Teal) Releases the Up Arrow key Player - Player 4 (Purple) Releases the Up Arrow key
Conditions Actions
Set Up[(Player number of (Triggering player))] = False Unit - Order PlayersHero[(Player number of (Triggering player))] to Stop
Now do that for all the arrow keys. exept dont add the Unit - Order Stop action in any of the other ones.
2.0
Create a new trigger named Movement. this trigger will be detecting the variables to order a unit to move. for example :
if the variable Up is = True then it will move that unit up.
1) create the event Time - Every 0.25 seconds of game time
2) add the action Player Group - Pick all players and do actions
Loop actions
3) in the loop actions part create an If/Then/Else action. so far it should look like this :
Untitled Trigger 001
Events
Time - Every 0.25 seconds of game time
Conditions Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions Then - Actions Else - Actions
in the If - Conditions part of the trigger add these conditions
Up[(Player number of (Picked player))] Equal to True Left[(Player number of (Picked player))] Equal to False Right[(Player number of (Picked player))] Equal to False
.
4) after that , create under the Then -Actions part the variable TempPoint like this
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))])
after that action were going to add the moving part of it it should look like this
Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees)
Now do the same thing in more loops for all the variables. it should look like this at the end :
SPOILER
Movement
Events
Time - Every 0.25 seconds of game time
Conditions Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Up[(Player number of (Picked player))] Equal to True Left[(Player number of (Picked player))] Equal to False Right[(Player number of (Picked player))] Equal to False
Then - Actions
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))]) Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Right[(Player number of (Picked player))] Equal to True
Then - Actions
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))]) Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards ((Facing of PlayersHero[(Player number of (Picked player))]) + -90.00) degrees)
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Left[(Player number of (Picked player))] Equal to True
Then - Actions
Set TempPoint[(Player number of (Picked player))] = (Position of PlayersHero[(Player number of (Picked player))]) Unit - Order PlayersHero[(Player number of (Picked player))] to Move To (TempPoint[(Player number of (Picked player))] offset by 90.00 towards ((Facing of PlayersHero[(Player number of (Picked player))]) + 90.00) degrees)
Else - Actions
You're still not done. now for the diaganol movement part. we wont be actually ordering the unit to move diaganol we will move him instantly to point. this is pretty simple so im just going to post the trigger for diaganols.
Stop Turn
Events
Time - Every 0.30 seconds of game time
Conditions Actions
Player Group - Pick every player in (All players) and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Up[(Player number of (Picked player))] Equal to True Left[(Player number of (Picked player))] Equal to True
Then - Actions
Unit - Make PlayersHero[(Player number of (Picked player))] face ((Facing of PlayersHero[(Player number of (Picked player))]) + 65.00) over 0.10 seconds Set TempPoint[(Player number of (Picked player))] = ((Position of PlayersHero[(Player number of (Picked player))]) offset by 10.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees) Unit - Move PlayersHero[(Player number of (Picked player))] instantly to TempPoint[(Player number of (Picked player))] Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Else - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
Up[(Player number of (Picked player))] Equal to True Right[(Player number of (Picked player))] Equal to True
Then - Actions
Unit - Make PlayersHero[(Player number of (Picked player))] face ((Facing of PlayersHero[(Player number of (Picked player))]) + -65.00) over 0.10 seconds Set TempPoint[(Player number of (Picked player))] = ((Position of PlayersHero[(Player number of (Picked player))]) offset by -10.00 towards (Facing of PlayersHero[(Player number of (Picked player))]) degrees) Unit - Move PlayersHero[(Player number of (Picked player))] instantly to TempPoint[(Player number of (Picked player))] Animation - Play PlayersHero[(Player number of (Picked player))]'s walk animation
Else - Actions
There you go you made an arrow key movement system. in case you didnt understand it or i didnt explain well take a look at the triggers your self in the demo map (Camera system is in demo map also). im pretty sure i spelled alot of things wrong so dont tell me about it. idk if im good or not at explaining things either soooo
Last edited by Wolverabid; 02-10-2008 at 02:18 AM.
Is [that] how button (hold) functions work? Hm. Need the pair of Press and Release event triggers.
Seems so obvious, and yet it never occurred to me before. Wonderful.
Not too keen on the rest of the code, but that's personal preference - easy to understand at least.
"People are as happy as they make up their mind to be" "Courage is not the absence of fear, but the triumph over it" "If you limit your choices only to what seems possible or reasonable, you disconnect yourself from what you truly want, and all that is left is a compromise"