(Keeps Hive Alive)
Go Back   The Hive Workshop - A Warcraft III Modding Site > Warcraft III Tutorials > Trigger (GUI) Editor Tutorials

Trigger (GUI) Editor Tutorials Contains tutorials concerning the usage of GUI features.
Read the Rules before posting.

Reply
 
LinkBack Thread Tools Display Modes
Old 11-15-2007, 06:32 AM   #1 (permalink)
 
OneEight7even's Avatar

User
 
Join Date: Oct 2007
Posts: 25

OneEight7even has little to show at this moment (2)


Arrow Key Movement / Camera System

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
Attached Files
File Type: w3x 187 Arrow Key Movement 1.1.w3x (32.0 KB, 559 views)

Last edited by Wolverabid; 02-10-2008 at 02:18 AM.
OneEight7even is offline   Reply With Quote
Old 11-15-2007, 04:58 PM   #2 (permalink)
 
madcat2's Avatar

I'm, Mad like a Cat.
 
Join Date: Aug 2005
Posts: 1,207

madcat2 is on a distinguished road (85)madcat2 is on a distinguished road (85)


Good Tutorial but it'd probably be better with some pictures here and there.

~/\/\@D
__________________
One of My favorite bible verses;"Everyone who calls on to the name of the lord will be saved. Romans 10:13."

If you need any help with skinning I'm, always here.
madcat2 is offline   Reply With Quote
Old 11-17-2007, 12:13 AM   #3 (permalink)

iRawr
 
Join Date: Dec 2005
Posts: 8,908

PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)

Respected User: This user has been given the respected user award. Map Development Mini-Contest #1 Winner: Stand of the Elements 

I suggest replacing the [code] tags with [trigger] tags, which are specifically built for GUI.

For the spoilers, you could use [hidden=Spoiler](content)[/hidden], which would produce:

Spoiler

(content)



Also, Unit - Move Unit (Instantly) resets animations as far as I know, so that would look a little jumpy.
PurplePoot is offline   Reply With Quote
Old 11-17-2007, 09:03 PM   #4 (permalink)

User
 
Join Date: Jun 2007
Posts: 9

SoCal_420 is an unknown quantity at this point (0)


nice system i could use it.
SoCal_420 is offline   Reply With Quote
Old 11-24-2007, 02:42 AM   #5 (permalink)
 
Kieve's Avatar

Void Mage
 
Join Date: Nov 2007
Posts: 8

Kieve has little to show at this moment (1)


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.
__________________

Be constructive, or be silent.
Kieve is offline   Reply With Quote
Old 11-25-2007, 06:14 PM   #6 (permalink)
 
Need_O2's Avatar

Recovering his brain
 
Join Date: Aug 2007
Posts: 2,522

Need_O2 is a jewel in the rough (168)


would be better with JASS
hey dont look at me like that Im a Lamer
My job is causing annoying situations

Ups including much leaks too
Need_O2 is offline   Reply With Quote
Old 12-06-2007, 01:22 AM   #7 (permalink)
 
CombatTheWombat's Avatar

Dont make me rape you!
 
Join Date: Jul 2007
Posts: 721

CombatTheWombat is on a distinguished road (64)CombatTheWombat is on a distinguished road (64)


hmmmm, dont use jass for anything you can do in gui, as the saying goes, "don't fix what isn't broken"
__________________
CombatTheWombat is offline   Reply With Quote
Old 12-07-2007, 09:38 PM   #8 (permalink)

iRawr
 
Join Date: Dec 2005
Posts: 8,908

PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)PurplePoot is a name known to all (737)

Respected User: This user has been given the respected user award. Map Development Mini-Contest #1 Winner: Stand of the Elements 

Quote:
hmmmm, dont use jass for anything you can do in gui, as the saying goes, "don't fix what isn't broken"
That's absolutely not true, but on the other hand, some people use GUI too, so GUI tuts are useful too...
PurplePoot is offline   Reply With Quote
Old 02-10-2008, 02:15 AM   #9 (permalink)
Overall Site Manager
 
Wolverabid's Avatar

 
Join Date: Oct 2006
Posts: 8,756

Wolverabid has much of which to be proud (1208)Wolverabid has much of which to be proud (1208)

Respected User: This user has been given the respected user award. User of the Year: 2007 

Thumbs up Tutorial Approved!

Map makers should find this tutorial helpful and useful.

~ Thread moved to Trigger (GUI) Editor Tutorials.
Wolverabid is offline   Reply With Quote
Old 02-15-2008, 02:07 PM   #10 (permalink)

Here to Help
 
Join Date: Dec 2007
Posts: 409

deathcom3s is on a distinguished road (64)deathcom3s is on a distinguished road (64)


Nice tut, I'm going to use this in my RPG.
__________________
"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"
Condemned Entertainment Community Manager, Webmaster, Programmer and 3D Artist
Advent of Evolution Moderator
deathcom3s is offline   Reply With Quote
Old 02-15-2008, 10:44 PM   #11 (permalink)
 
~Void~'s Avatar

3 Blue gems!
 
Join Date: Jul 2007
Posts: 3,420

~Void~ is a glorious beacon of light (452)~Void~ is a glorious beacon of light (452)~Void~ is a glorious beacon of light (452)


Quote:
Originally Posted by CombatTheWombat View Post
hmmmm, dont use jass for anything you can do in gui, as the saying goes, "don't fix what isn't broken"
But GUI is leaktastic!
__________________
"The minute you settle for less than you deserve, you get less than you settled for."

"When life gives you lemons, make grape juice, and sit back while everyone asks you how the hell you did that."
~Void~ is offline   Reply With Quote
Old 03-18-2008, 01:04 AM   #12 (permalink)
 
underscore's Avatar

Soldier
 
Join Date: Mar 2008
Posts: 163

underscore has little to show at this moment (6)


Thank you for the tutorial. It helped me make my Role-playing a little nice. 5/5
__________________
Quote:
Community Friendliness
The Hive is a friendly community: all users are expected to treat one another with dignity and respect.