.::[Tutorial/FAQ]::.

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
***Ultimate Tutorial Thread***

note: these are not MY tutorials, i have merley copied them and am sharing them with the warcraft community, Enjoy!
[glow=purple]more tutorials will be added as time progresses![/glow]​

CHANGING EXPIRATION TIMERS-Kane635

Ok, it is quite easy to do, first, find a copy of Shadow Flare's MPQ opener, search yahoo. You also need visual basic run time files, which should be put in the MPQ openers directory. Now, open the "War3patch" found in your WCIII directory. Next, find out what race the spell you wish to edit is on. In this example, I will use the water elemental. Look through for "Units\(Race)abilitystrings.txt. Then, copy the file to your desktop. Do NOT save your MPQ. Extract that specific file to your desktop. Scan through the file, and find your spell name you wish to edit. Now, a spell will immediately follow that summon spell. In that following spell, look for "BuffertipSummoned Unit Name)". Change this field to what you wish the expiration timer to be! Then, import this into the import manager, and change the path to the path in the MPQ and whoa... its magic, it works!

____________________________________________

KICK PLAYER FUNCTION-Sopho

- INTODUCTION -

A kick feature is easy and you do not need to be a real Map pro creator to do it. A few triggers will do the job no other complicated things necessary. Even if you just perchased
Warcraft III and just started to look at trigger editor for your first time. Kicking a player can be harsh and unnecessary but recommended if hes doing something real bad that will disrupt people in the game. This simple step-by-step tutorial will show you easily and quickly on a kick feature. Just follow the steps and you have done it sucessfully!

- GETTING STARTED -

You will need to following thing(s):

Warcraft III/TFT World Editor (Not demo)
Latest patch if necessary (1.14 currently)

Open up World Editor.
Start a new map or open your existing one you've been working on lately.
Go to trigger editor

- STARTING -

Once your in Trigger editor, create a new folder titled ' Red kicks ' the trigger names when you create one dont have to be titled Kick blue [recommended though] can be just 001 untilted trigger.

Now follow these triggers VERY carefully to avoid errors, I am doing it now as I speak so there should be no thoughts such as red says kick blue but a more detailed instruction

- ADDING THOSE KICK TRIGGERS -

[O] Untitled Trigger 001
- Events
- Actions

Right click - Events
New event
Event type can be - All or - Player
Player - Chat message
Player 1 (red) types a message containing -kick blue as an exact match

Conditions - Dont need any!

Actions - Game - Defeat
Defeat Player 2 (blue) with the message: You have kicked

Copy this more times depedening on how many players are in your game. Just change Player 2 (blue) with someone else who will be kicked when host says so.

Test the map should work!

___________________________________________
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
TRIGGER ENHANCED SPELLS-blizzard_fan900

Required tools:
Warcraft World Editor or UMSWE
Trigger and spell Experience.

#1:
First choose what you want to do, is this an ultimate or not? What is its raw power? For this we will make 4 Spells (wonder why?) None of which is an aura cause I don't think they can be enhanced.

#2:
#2-1
The Dummy spell. Probably wondering what that is huh? A dummy spell is just effects, and sometimes damage and never stuns, Buff only as if you want to. For this tutorial I’m make a dummy spell for Void (off inferno no damage, Keep ultimate probably.), Berserk Thoughts (charm maybe?), 1 minute Explosion (fire storm, 0 damage, Make Sure Duration is 60 SECONDS! with buff: This unit will die in 1 minute.), And Fire Shapes (war stomp 0 damage,) also for fire shapes, create an permanent immolation doing whatever damage you think this spell should do (3 immolations if more damage each level) and equip 'em to a building that does nothing, model fire called fire (3 fires if 3 different damages)!.
#2-2
Good AOE's for ultimate: 250-1000 exception: void ability it is so powerful That 200 will work.
Good AOE's for normal: Lv.1: 100-250, Lv.2: 250-500, Lv.3: 250-900.
Make sure the Effects look right:
Suggestions:
1-minute explosion normal: Skull or anything that looks like they will die. Buff: Void walker missile overhead.
Berserk thoughts: something evil mwhahaha... sorry.
Void: something being sent or absorbed into a hole.
Fire Shapes: no effect is best!
#2-3:
Tooltips let's see...
Void: Takes a chunk of land with all non-heroes there with it!
1 Minute Death: nuff said, each level AOE goes up.
Fire shapes: creates shapes with fire that does damage. Lv.1 A line, Lv.2 a Square, Lv.3 an X!
Berserk thoughts: turns a unit against all for 10/20/30 Seconds

#3:
Equip 'em duh!

#4:
The Trigger Editor. Better separate this into mini sections:
#4-1:
Setting Variables. For each non-ultimate spell make a real variable for it's level OR if you make a note with each number use an array called "ABLevel". Next are the variables to store spell info. For Void you have none (spooky!). For Fire shapes none. 1 minute death we have death_unit(unit ARRAY) + death_number. Berserk thoughts: guess who's back? Beserk_unit(unit ARRAY) + Beserk_number, but also Beserk_player[player Array] and BPnumber
#4-2:
The LEARN trigger:
Event: Generic unit learns a skill
condition: Learned skill = (Trigger Enhanced Spell)
Actions: Set variable: (Trigger Enhanced Spell)_level = (Trigger Enhanced Spell)_level + 1.00
OR:
Set variable: ABlevel [corresponding#] = ABlevel [corresponding#]+ 1.00
#4-3:
Void use trigger (Note the EFFECT is so they haven't already canceled) ,:
Event(s):Condition(s):Action(s):
Generic unit starts EFFECT of a spell.Ability used = VoidCreate a 0.5 second PERMANT crater with a radius of (Void AOE) and a depth of (max) at location target point of cast ability
Pick every unit in (Range- (Void AOE) of location target point of cast ability) and do actions
IFThenELSE
Boolean (picked unit a hero = false)Remove picked unitDo nothing

So now the spell will take a chunk of the targeted area with it as well as non-heroes
If you want it to hurt heroes do this in else: Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 500.00)
#4-4:
Time For Fire shapes:
Event(s):
Unit - Set life of (Picked unit) to ((Life of (Picked unit)) - 500.00)
Condition(s):
(Ability being cast) Equal to Fire Shapes
Action(s):
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
fire_level Greater than or equal to 1.00
Then - Actions
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (220.00, 200.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (-220.00, -200.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Else - Actions
Do nothing
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
fire_level Greater than or equal to 2.00
Then - Actions
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (220.00, -200.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (-220.00, -200.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Else - Actions
Do nothing
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
fire_level Greater than or equal to 3.00
Then - Actions
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (110.00, 100.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (-110.00, 100.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (110.00, -100.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Unit - Create 1 Fire for (Matching player) at ((Position of (Casting unit)) offset by (-110.00, -100.00)) facing Default building facing degrees
Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
Else - Actions
Do nothing
Now this will form an diagonal line, square and X!
#4-5:
1-minute death
Events
Unit - A unit starts the effect of an ability
Conditions
(Ability being cast) Equal to 1-minute death
Actions
Unit Group - Pick every unit in (Units within (death_level x (death AOE\Level)) of (Target point of ability being cast)) and do (Actions)
Loop - Actions
Set death_unit[deathnumber] = (Picked unit)
Set deathnumber = (deathnumber + 1)
Wait 60.00 seconds
For each (Integer deathnumber) from 0 to deathnumber, do (Actions)
Loop - Actions
Unit - Explode death_unit[deathnumber]
Set deathnumber = 0
#4-6:
Berserk Thoughts
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Animate Dead
Actions
Set Berserk_player[BPnumber] = (Owner of (Target unit of ability being cast))
Set BPnumber = (BPnumber + 1)
Unit - Change ownership of (Target unit of ability being cast) to Neutral Hostile and Retain color
Set Berserk_unit[BerserkNumbers] = (Target unit of ability being cast)
Set BerserkNumbers = (BerserkNumbers + 1)
Wait (10.00 x Berserk_level) seconds
For each (Integer BerserkNumbers) from 0 to BerserkNumbers, do (Actions)
Loop - Actions
Set BPnumber = (BPnumber - 1)
Unit - Change ownership of Berserk_unit[BerserkNumbers] to Berserk_player[BPnumber] and Retain color
Set BerserkNumbers = 0

#5
Test them out!
Please give credit to me if you use any spells from this guide.
You can find the demo map Called Blizzard_fan900TriggerSpells.w3m as soon as I get around to putting it up!

_______________________________________
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
CINEMATICS-FINISHING TOUCHES -Tassadar920

Ok first off you'll need to know that all cinematics basically are eye catchers in the first place. Nothing new there, so now i'll give you a few tips for cooler eye catching things to keep the user watching for the length of the whole cinematic.



First off you need to know about fading between scenes.



Fading/Scene Changes:



Ok fading consists of the trigger:



Cinematic - Fade Filter



So basically to make better fades then you currently have, you have two choices, first you can have the fade be slightly see through and have something go on behind it, or you can have text.



Text Fading

To do a text fade, first have the screen fade out to your choice of color, and have a contrasting color (blue/red, white/black) be the text color. Have the text appear as the text is beginning to fade completely (about 50% through) and then make sure the text is short and to the point.



Background



Background things happen through a partially see through 'mist'. I use this mainly when i'm changing scenes, as an example i'll use my current map.



In this map you're in a haunted house, so between different cinematic scenes that occur it takes you to different parts of the house, has a misty white fade that's about 60% see through, and the fade goes on and off, but it never goes away completely. In the background, sometimes i have units attack each other, or a storm, or something that catches the watcher and has them wanting more of these eye-catchers.



Never Wait:



Never ever let the user be stuck waiting for the next thing to happen, so as a tip here I like having the screen suddenly change to something else very suddenly and switch back. Again i'll use my haunted house map as an example.



In that map, at one point the camera is moving towards the final boss that you fight. So as it's moving towards him, the screen goes a little bit, suddenly changes to a different camera which is in a firey cavern, then switchs back. It does this three times, so that even though the camera is sort of boringly moving towards the next scene, theres still something to keep the wtacher from getting totally bored.



Stupid Background Movies:



Ok these are very important in a lot of movies that have long scenes where people just talk non-stop for a long while. To get people from being bored putsomething in the background for example:



Ok the main character is supposed to stand back and watch two guys talk to each other. Instead of having him stand, have a ghoul or something run up and try to kill him, so he chases the ghoul away, so he summons some big infernal up, (all this in the background) and then the demon kills the ghoul, but then the demon attacks the main character, and blah blah blah... very useful.



Also, a good idea to have in your map is humor :), never forget it.





Well that's all for now, i'll have another tutorial on 'Finishing Touches' later on.

_____________________________________________

Using upgrades as hero abilities

Difficulty: Beginner-Intermediate
Reasons for difficulty level: Requires knowledge of spell editing.

This is just a quick little thing I put together after I noticed a number of people asking how to set upgrades as abilities. It really is very simple and succient and anyone who knows what their doing will be able to fly through this. However, I said intermediate difficulty because you need to know how to edit spell data and I'm not going to bother going into all that here when Sid67's lovely tutorial is stickied at the top of the forum:).

First off you'll need your standard fare spell stuff: abilitydata.slk and the txt files. You'll also be needing the upgradedata.slk, so extract that from your mpq. For this example I'll be making an ability that increases the attack range of the hero each time the ability is researched.

- We need to make the ability first, so open your .slk and find any passive ability. Make a duplicate and change the alias, uberalias and comment to your own. Then change all the values (Cast1, duration1 etc.) for your ability to 0, effectively making it 'dummy' spell. The reason for doing this is because you need the new ability simply for aesthetics. The real work is done through a little bit of trigger magic.
- While you have Excel opened, load the upgradedata.slk. If you've never looked at it before, you'll notice it's very similar to the abilitydata.slk. Most of the cells are self-explanatory, but the three that we're interested in for this example are:

maxlevel - the maximum number of levels for the upgrade (As I said, self-explanatory :p).
base1 - The bonus given at the first upgrade level.
mod1 - The bonus given for subsequent upgrade levels.

The maxlevel for human rifleman range upgrade is default at 1. But since my example heroes ability can be upgraded 3 times I need to change it. Base1 and mod1 are both set to give 200 range, and that's fine for now, as it gives a total +600 to range at level 3.#
- Save your slks and load up your ability func and string files. Add in your spell info like any other ability. Save them and load up your map in WE. Now for the fun part.
- Open the unit module and give your hero the 'fake' ability you created and the rifleman range upgrade under 'upgrades used'. You may also want to make sure that the hero can actually see as far as they will be able to shoot :p.
- Final part. There are a couple of ways to set this trigger but here's one of the easiest. Create a new integer variable (I've called it Riflelevel in the example below) and make this new trigger:

Events
Unit - A unit owned by Player 1 (Red) Learns a skill
Conditions
(Learned Hero Skill) Equal to *Select any skill from the list here, we'll fix it in a moment*
Actions
Set Riflelevel = (Riflelevel + 1)
Player - Set the current research level of Long Rifles to Riflelevel for Player 1 (Red)

Now to fix the problem with your ability not showing up in the conditions list we convert the trigger to custom text (don't be scared) via Edit->Convert to Custom Text. Now at this point you'll either see you trigger turned into a whole pile of gable or perfect sense (depending on how much JASS experience you've had:p). Look for the familiar 4-letter code in the second line indicative of a unit ability. When you've found that change to your own spell code alias that you created in the beginning. Do NOT change the 4-letter code that starts with an R. That's the rifleman upgrade code.

And that's it. Either mpq inject all your edited files into the map or set it up using local files and test it out. I've no doubt cut a great many corners and forgot a thing or six (Just kidding). But if any odd problems do crop up just give a yelp. You can do some pretty funky things with this, such as creating a Commander or Blacksmith Hero that upgrades the stats of your normal units through his own abilities. You can also modify/create upgrades that give various bonuses at once or use a passive ability and leave some of the bonuses it gives in addition to giving a research upgrade.

~kharma

_____________________________________________
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
WE FAQ by Darimus (Me)

Ok, since triggers is my area of expertise, and most people have the most problems there, thats what this FAQ will be about... (You can ask questions which will be added to the FAQ if they are relevant)

Question: What is WE, and how do I use it?

Answer: 99.99% of the people here know the answer but... to avoid the .01% that don't, it is in your warcraft III directory, default: C:\Program Files\Warcraft III then find World Editor.exe and double click it. WE is an acronym (or a few letters made to make typing out long phrases easier) and stands for World Editor

Question: How come the game crashes when a certain trigger I made runs?

Answer: Make sure that there are no triggers that do an infinite loop (usually done by using the Run Trigger action) and also make sure you don't do something impossible, like finding the custom value of a unit that got removed from the game using a Unit - Remove Action

Q: How do I make a working dialog?

A: For your initilization trigger, make the event Time - Elapsed game time is 0.01 seconds, NOT MAP INITIALIZATION! Next, go into the Variable Editor (Control+B Hotkey) and make a new Variable with any name you want, as a Dialog, and then make Dialog Button variables. When you are done, hit Ok, then go into your initilization trigger, and place these actions:

Actions
Dialog - Change the title of YourDialogVariable to Any Title Here
Dialog - Create a dialog button for YourDialogVariable labelled Left
Set Button1 = (Last created dialog Button)
Dialog - Create a dialog button for YourDialogVariable labelled Right
Set Button2 = (Last created dialog Button)
Dialog - Create a dialog button for YourDialogVariable labelled Look Around
Set Button3 = (Last created dialog Button)
Dialog - Create a dialog button for YourDialogVariable labelled Inventory
Set InventoryButton = (Last created dialog Button)

I'll break that down:
Dialog - Change Title

Dialog - Create Dialog Button

Set (dialog button variable)
[the action called Set Variable]

Q: Now that I made a dialog creation, how do I show it and make it work?

A: Showing the Dialog: In any trigger, after you set the events and conditions, go to the Actions section and use the action: Dialog - Show/Hide Dialog, and choose to Show the dialog variable you created, in my case: YourDialogVariable is my variable's name.

Dialog Results: Now that it shows the dialog correctly (if you followed the instructions correctly) you must make a new trigger. The events/conditions of this trigger should be:

Events
Dialog - A dialog button is clicked for YourDialogVariable

Conditions: Use the condition [Dialog Button Comparsion] to set this:

Conditions
(Clicked dialog button) Equal to [Your Variable, such as Button1 or InventoryButton]

Actions
This is where you get to set what you want... and since the new patch, Triggering Player refers to the player who clicked the dialog button, so if you want to create 1 peon for the player if they chose the peon button, use the: Unit - Create 1 Peon for (Triggering Player) at (Triggering Player's Start Location), or something to that affect

Q: How do I refer to a non-preplaced unit without using an event?

A: In order to do this, you must use the Unit Group section of triggers, and use Unit Group - Pick Every Unit in Unit Group and Do Multiple Actions... when you go into it, it should say: Units in Region (Playable Map Area)... change that to Units of Type, or whatever you need to fit the unit you want to refer to. Refering to certain units must be done by Pick Every Units in (Playable Map Area) matching conditions, and then use the And condition to refer to multiple conditions, and use [Matching Unit] for referring to units considered for the All Units Matching Condition's conditions that you set.

Q: How come I get an error that says something like 'Trigger Data is Missing or Invalid' when trying to open a map I downloaded?

A: The creator of this map has 'Protected' the map you are trying to open, which is basically making the map unusable to you. The creator does this to prevent people messing with the map, or stealing credit for it. To protect your own map, open the Import Manager (Hotkey F12) and then hit the Import Button (Control I) and import a blank text file, then double click on the imported file in the file manager, and then check off the box that says 'Use Custom Path'... Highlight the whole path, and change it to be exactly this: war3map.wtg
Make sure that you take out the war3mapImported\, or it will not work... and once you do this, SAVE YOUR MAP AS A DIFFERENT FILE NAME... BECAUSE YOU WILL BE UNABLE TO OPEN THE PROTECTED MAP AFTER SAVING IT. Make sure you have a seperate, 'Unprotected' copy of the map, so you don't lock yourself out of your own map.

Q: What is a variable...? and how do I use it?

A: A variable is anything that stores data of some type, whether it be a real, an integer, a boolean, a dialog, etc, etc. Variables are actually alot less confusing, and alot more useful, then most people think they are. For example: you want it so that when they kill the dragon king or something, they complete a quest... you could have it so that when the 'dragon king' is killed, it will use the Set Variable action and set a variable you made named Quest1Status (Must be 1 word, no spaces) and you could set it to be True and use an If/Then/Else action...

To sum it up, a variable can store any value, and be checked at any time using If/Then/Else or substituted for a value.

Q: What is an Array Variable, and what does Size mean when I choose to make one?

A: An Array Variable is the same thing as a variable, but it can store multiple values, 1 for each index, which can be used to pick specific values. To be more specific, after making a variable, you have to fill the [Index] to specify which value its referring to. A good time to use arrays in when you set the index to match the Player Number of (Triggering Player), and have events refer to the player number, so that you can store values that are specific to all players, but different.

Size: Size is the max amount the Index can go to, and if you are referring to players, it should be set to 12, but if your referring to a TD of some sort, and monsters that appear each round, you could set it to the max amount of rounds, or simply 99 and not use some of them.

Q: What is If/Then/Else, and is it important?

A: If/Then/Else will most likely be used many times by you, after you learn how to use it well... basically it does what it says: IF the conditions you specify are true, it will do actions in the THEN section... if they are not true, it will do the actions in the ELSE section... for example, if you have the condition: Integer Comparison, to check: Player 1 Red's gold and see if its Greater Then Or Equal To 50, then if that is true, it will do all the actions in the Then Section, but his gold is 49 or less, it will do the actions in the Else section.

Q: I saw some interesting things done with doodads... How can I do these myself?

A: If your are placing doodads, and would like their sides to overlap, hit the "shift" key, and hold it down. Now you will be able to place partially overlapping doodads. Do not abuse this, certain doodads can make a lot of lag when overlapped. (Thanks to Tassadar920)... and my own information, for Floating or Flying doodads... After you place your doodad on the map, select it then hold control. While holding the Control button, hold Page Up or Page Down to make it go up or down in elevation.

Q: How can I make a "Cave" with a ceiling?

A: It can be done using the "Shift Method" as stated above, holding shift while placing the doodad called: Rock Archway (Structures), or alternatly, another method is to place doodads then use the "Elevation Method" also detailed above, and use it to manually create the cieling... I prefer the "Shift Method" as it is much faster, and also you can add extra doodads to cover up the fact that you even did the shift method. There is 3rd method which is somewhat different... If you place an "Underground Dome" (Cinematic) doodad, on the outside you can't see it, but on the inside of it, it shows as a dome.

____________________________________________
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
Most Commonly Used Triggers.
(Examples will be used for specified Units/regions, ** will be used for region example)
[glow=red]-a unit enters a region (circle of power) and moves with/without camera panning.[/glow]
*Event
unit- A unit enters **region**
*Conditions (none)
*Actions
Unit- Move (Triggering Unit) instantly to (**region**)
Camera- Pan Camera for (Owner of (triggering unit)) to (**region**) over 0.01 seconds *(time may be changed)*

[glow=red]-Leader Board[/glow]
Variables=Variable Name Variable Type Initial Value
-i -Integer -0
-Kills -Integer Array (1) -0 (Default)
-MaxKills -Integer -45
-OwnedUnitDeath -Unit -none-

*Event
Map Initialization
*Conditions (none)
*Actions
---------Begin Leaderboard---------
Wait 1.00 seconds
Leaderboard-Create a leaderboard for (All players) titled **KILLS**
Player Group-Pick every player in (All Players) and do (if (((picked player) slot status) Equal to is playing) then do
(Leaderboard-Add (picked player) t0 (last created leaderboard)
leaderboard-Sort (Last created leaderboard) by Value in ascending order
leaderboard-show (last created leaderboard)

*Event
Unit- A uinit owned by player 1 (red) dies
*Condition (none)
*Actions
Set kills[(Player number of(killing unit)))]=(kills[(Player number of (owner of (killing unit)))] + 1)
Leaderboard- Change the value for (Owner of (killing unit)) in (Last created leaderboard) to kills[(Player Number of
(owner of (killing unit)))]
Leaderboard- Sort (last Created leaderboard) by Value in Descending order

[glow=red]-Full Visibility[/glow]
*Event
Map Initalization
*Conditions (none)
*Actions
Player Group-Pick every player in (All players) and do (visibility-Create an initially Enabled visibility modifier for
(picked player) emitting visibility across (playable map area))

[glow=red]-Floating Text[/glow]
*Event
unit- A unit enters **region**
or
Wait game time- 0.01 seconds
*Conditions (none)
*Actions
Floating Text-Create floating text that reads MESSAGE HERE at (**region**) with Z offset, Etc...

[glow=red]-Regular Window text[/glow]
*Event
Time-Elapsed game time is **12.00** seconds
*Conditions (none)
*Actions
Game-Display to (all Players) for **20.00** seconds the text: **MESSAGE HERE**

[glow=red]-Choosing a hero from (Circle of Powers)[/glow]
*Event
Unit- A unit enters **region**
*Conditions (none)
*Actions
Unit-Remove (triggering unit) from the game
Unit-create 1 **hero** for (owner of (triggering unit)) at (center of **region**) facing Default building facing degrees
Trigger-turn of (this trigger)

[glow=red]-Revive Hero[/glow]
*Event
Unit- Specific Unit Event (**hero** dies)
*Condition (none)
*Action
Hero- revive Triggering Unit Instantly at **Region**

[glow=red]-Changing In-game player name[/glow]
*Event
map initialization
*Condition (none)
*Actions
Player- Set name of Player 1 (Red) to **Speaker**

[glow=red]-Timer[/glow]
*Event
Time- Elapsed game time is **7.00** seconds
*Conditions (none)
*Actions
Countdown timer- Create a timer window for (Last started timer) with title **Speaker rules**
Countdown timer- Start (last created timer) as a one-shot timer that will expire in **40.00** seconds
Wait 40.00 seconds
Countdown Timer-Destoy (last created timer window)

[shadow=blue]-Speaker[/shadow]
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
-IceDevil9

Since so many people seem to be wanting to make TDs heres a list of basic TD stuff.

Creating A Dialog

You will need to make a couple of variables. Here are the ones we will be using for our example.

Name: EasyDiff
Type: Dialog Button
Initial Value: -None-

Name: MediumDiff
Type: Dialog Button
Initial Value: -None-

Name: HardDiff
Type: Dialog Button
Initial Value: -None-

Name: Lives
Type: Integer
Initial Value: 0

Name: DiffChooser
Type: Dialog
Initial Value: Default

Next you will need to execute a trigger to set-up the Dialog

Events
Map Initilization

Coniditions
Player Slot Status Comparison- Player 1(Red) Slot Status Equal To Is Playing
( ^ Completely Optional)

Actions
Dialog-Create Dialog Button- Create a dialog button for DiffChooser Labeled Easy
Set Variable - Set EasyDiff to (Last Created Dialog Button)
Dialog-Create Dialog Button-Create a dialog button for DiffChooser Labeled Medium
Set Variable - Set MediumDiff to (Last Created Dialog Button)
Dialog-Create Dialog Button-Create a dialog button for DiffChooser Labeled Hard
Set Variable - Set HardDiff to (Last Created Dialog Button)
Dialog-Show/Hide- Show DiffChooser for Player1(Red)

Here is how you set lives after a button is clicked. Let's say Easy is 40 lives. Use this trigger.

Events
Dialog-Dialog Button Click- A dialog button is clicked for DiffChooser

Conditions
Dialog Button Comparison- (Clicked Dialog Button) Is Equal To EasyDiff

Actions
Set Variable- Set Lives to 40
Dialog- Show/Hide- Hide DiffChooser for Player1(red)

Use that same trigger for different difficulties, substituting the number of lives corresponding to how many you wish to have for that difficulty.

Creating Units and Having Them Move

This is essential for any TD. This is how you will get your units to move. You will need to create a couple regions. Here are ours, for this example.

'Spawn1'
'Move1'
'Move2'
'Lives'

You also need to create a timer, and set it.
Correspondeing to the above trigger, a good way to do this is, after the lives are set, add

Trigger-Run (Checking Conditions) Enemy Spawn 1

Then you must create a couple variables. Here are ours for the example.

Name: LvlTimer
Type: Timer
Initial Value: -None-

Name: MonsterType
Type: Unit-Type
Initial Value: -None-

Name: MonsterAmount
Type: Integer
Initial Value: -None-

Name: LvlNumber
Type: Integer
Initial Value: 1

Now we must set our timer. Here is our basic trigger to do that. We can set a couple of actions, but I usually leave this trigger as named 'Beggening Timer' and have it run using the previous dialog triggers. This will be done as such.

Events
None

Coniditions
None

Actions
Countdown Timer- Set LvlTimer as a Repeating timer that will expire in 45.00 seconds
Game-Text Message (Explicitly Timed)- Display to (All Players) for 20.00 seconds the text: 1st level will start in 45 seconds

Now we need to actually start the levels, there are a couple of things we need to do. First we need to set all the levels. This trigger is set to 'Initially Off', which means you need to uncheck the box that says intially on. This can be done as follows. There will be no actions or conditions, as you will find out a little later in this section of our lesson, we will call on this trigger using another trigger. I will be using just fake units. anything inside the trigger in Italics is a fake name, and can be replaced with whatever you choose. Ok, here it is:

Events
None

Coniditions
None

Actions
If/Then/Else- If LvlNumber Is Equal To 1, Then Set Variable(Set MonsterType = Scouts), Else (Do Nothing)
If/Then/Else-If LvlNumber Is Equal To 1, Then Set Variable(Set MonsterAmount = 30), Else (Do Nothing)

What you then do is repeat that trigger above, replacing the LvlNumber by one each time and replacing MonsterType. MonsterAmount is fine, unless you are doing bosses or something, and wish to change it.

Before we get the units moving, we need to set move triggers.

Events
Unit-Unit Enters Region-Unit Enters Enemy Spawn 1

Conditions
Player Comparison- (Owner Of (Entering Unit) Equal To Player 12

Actions
Unit-Issue Order Targetting A Point-Order (Event Response-Entering region) to Move To (Center Of (Move 1))

Now, you need to copy + paste that trigger, and change 'Enemy Spawn 1' and 'Move 1' To 'Move 1' and 'Move 2' (Or whatever your next move is.

Next we need to show what to do after the timer runs out.

Events
Time- Timer Expires- LvlTimer expires.

Coniditions
None

Actions
Countdown Timer- Pause Timer- Pause (Event Response-Expiring Timer)
Trigger- Run (Checking Conditions)-Run Set Levels Our previous trigger where we set all the levels
Unit-Create Units Facing Angle- Create MonsterAmount MonsterType at (Center Of(Enemy Spawn 1) facing Default Building Facing Degrees
Unit Group- Pick Every Unit In Unit Group And Do Action- Pick Every Unit In (Units In (Enemy Spawn 1)) And do Unit Group- Issue Order Targetting A Point-Order (Units In (Enemy Spawn 1)) to Move To (Center Of (Move 1))
Game-Text Message (explicitly Timed)-Display to (All Players) for 20.00 seconds the message: Level 1- Scouts
Set Variable- Set LvlNumber = (Aritchmetic- LvlNumber+1)

Next we need to reset the timer.

Events
Player-Properties- Player 12's Food Used Becomes Less Than or Equal To 0.00

Conditions
None

Actions
Countdown Timer- Set LvlTimer As A Repeating Timer set to expire in 30.00 seconds.

Finally we need to set the losing a lives trigger.

Events
Unit-Unit Enters Region-A Unit Enters Lives

Conidtions
Player Comparison-Owner of (Entering Unit) Equal To Player 12

Actions
Set Variable- Set Lives = (Lives - 1)

Here is the final losing trigger.

Events
None

Coniditions
None

Actions
If/Then/Else- If (Integer Comparison-LvlNumber Equal To 0) Then (Game-Defeat-Defeat Player 1(Red) With message You lose!), Else (Do Nothing)

Copy + Paste that trigger and substitute Player 1(Red) with all your defenders.

Setting Up A Leaderboard

Ok, phew, now that we have moving triggers out of the way, lets move onto Leaderboards. Yes, those fancy leaderboards. Here is how you make them.

Events
Map Initilization

Conditions
None

Actions\
Leaderboard-Create-Creat a leaderboard for (All Players) titled Kills.
If/Then/Else- If (Player Slot Status Comparison- Player 1 (Red) Slot Status Equal To Is Playing) Then (Leaderboard- Add Player-Add Player 1(Red) to (Last Created Leaderboard) with label 'Name Of Player 1(Red)' and value of 0, Else (Do Nothing)

You need to copy + paste the 'If/Then/Else' trigger and subsitute Player 1 with player 2, Player 3, Player 4, and so on.

Here is how u add kills to your leaderboard. A bit complicated but not too hard to figure out.

You need to add a variable though.

Name: Kills
Type: Integer Array
Initial Value: 0

Events
Unit-Unit Dies- A unit owned by Player 12 dies

Conditions
Integer Comparison- Lives Is Not Equal To 0

Actions
Set Kills[Player Number Of(Owner of Killing Unit)))] = Kills[Player Number of(Oner of Killing Unit)))] + 1
Leaderboard- Change the value for (Owner of(Killing Unit)) in (Last Created Leaderboard) to Kills[Player Number Of(Owner Of(Killing Unit)))]
Leaderboard-Sort-Sort (Last Created Leaderboard) By Value In Descending Order

If a player leaves this is the trigger you need to run.

Events
Time-Periodic Event- Every 5.00 seconds of game time

Conditions
None

Actions
If/Then/Else- If (Player Slot Status Comparison Player 1(Red) Slot Status Equal To Has Left The Game), Then (Leaderboard-Change Player Label- Change the lable for Player 1(Red) in (Last Created Leaderboard) to <Quit the game>), Else (Do Nothing)

Once again, like you have done so many times before, you must copy + paste and make this for each human player.

Well, thats about all the basics you'll need to know. If you wish to know anything else, then let me know and I'll edit this post with how to do it.

-Frank :cool:

___________________________________________
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
[shadow=blue]these files can be located at the links at the bottom of this post.[/shadow]


Preface
This tutorial will cover the basics of Skinning - and even a little model modification. This mainly focuses on style - whcih means that it may be relevant the people of more advanced levels, as well as novices.

Obtaining the Files
Alright, we'll start by getting the files we can edit. Open Warcraft III Image Extractor II and navigate the tree unit you find the skin you want to edit. Generally speaking, the skins are pretty easy to find. (i.e. the Grunt skin is units\orc\grunt\grunt.blp) If you can't find it there, check the Textures\ directory. Right click and save to TGA. Now, if you so desire, get the corresponding model. Open MPQ View and set the filter to *.mdx and extract the model. (i.e. units\orc\grunt\grunt.mdx) Now open a Command/DOS prompt and go to the folder where you extracted my wonderful modelconv.exe to. Also put your newly extracted model file in this directory. Heres an example of what you should be typing:

C:\>modelconv.exe
Warcraft III MDX -> OBJ File Converter - Jeff Gee 2002
Enter MDX Filename: InFile.mdx
Enter OBJ Filename: OutFile.obj

Now its time for some fun.

The Skin

Hue / Saturation

The concept of skinning is quite simple: Editing the colors and textures of a Unit to give it a unique and different feel. This can be acheived through many means. Color modification is by far the simplest. Open photoshop and select the Lasso tool and trace around what you want to adjust. (See Near Right) Then select image>Adjust>Hue\Saturation and modify the settings until you get the desired effect. (Far Right) You can accomplish a great deal by doing this, but if this doesn't suit your needs, we can move on to Step 2: The Airbrush


Airbrush
A good time to use the airbrush would be when you want to change a character's style of clothing. Or Modify Facial Features. Or do advanced skin-tone changes. So take out that Rectangular marquee and do a rough rectangle around the area you want to edit. (this will prevent you from getting marks on the other parts of the skin) now take out your Airbrush and set the pressure to something less than 50%. Now lightly Outline what you want to change with your desired color. Now comes the shading. You'll want to bring down the Pressure of your airbrush once again. use a darker version of the same color for shadows, a lighter version for highlights.

Alright so far? Good. now look at the four images above. Note the color change on the stomach. The muscle definition becomes greater each time. I CANNOT STRESS HOW IMPORTANT MUSCLE DEFINITION IS! Without definition, your character is vertecies and edges - Nothing more. Now look above that. Notice how the remainder of the clothing is redone. Clothing effects how the body is shaped and therefore effects shading.

Now edit the rest of your model with these steps, but remember: The basic form must remain the same. ALWAYS!

Transparency

Have some teamcolor in a bad place? Maybe on a cape or a sholder? Easy enough to fix. Click the Channels tab and slect Alpha 1. This determines Teamcolor and Transparency. Anything Black is subject to this. Fill the area with white, and the teamcolor or transparency goes away. Many times, however, places with teamcolor have no texture. That causes a model to look tacky, so add some.



The Model
Currently, the 3rd party applications do not allow for a great deal of modification. You cannot change polygons, or create vertecies. So we are left with very minor modifications. This is pretty simple. You can move, rotate and scale without ruining the model. If you do not have a 3d program, i suggest Aztec. Its a freeware program released under the GNU Public License over at Sourceforge. There is really only one basic I can stress. That is to look at it from all angles, make sure it looks right.

To load the model, use the import function and select the one you extracted with the skin.
To Export the model, use the export function, making sure that .OBJ is selected in the Dialog.





Finalizing
Congratulations! You have all of your files. To convert a skin back to a BLP, open up War 3 Image Extractor II and open your Targa. Use the save option to save it to a BLP. Now open your MPQ2K directory in Command Prompt. Use this format to insert the skin into your map:

C:\>MPQ2k a yourmap.w3m yourskin.blp pathtoskin

Now to insert our model. Open it in Notepad, Emacs, etc. (thats right, an OBJ is a text file) and remove EVERY line that does not have a format like "v 0.0000 0.0000 0.0000" and save it. Now your file only has vertex data.

"Now open Daishi's OBJ -> MDX converter. Click the Load MDX button and select the model that you initially extracted. Go to File>Import... and select the file with the modified vertex data. Now click Save MDX and your model is ready."

open up the Command Prompt again. This time you should enter somethign similiar to:

C:\>MPQ2k a yourmap.w3m yourmodel.blp pathtomodel

Alright. Almost done. In order for your model to work in a map, you must also include all of the textures it uses. To find what texture it uses, convert the MDX to MDL format using Yobgul's MDX <-> MDL. Open the MDL and do a search for .blp. Extract all of the files that you find from war3.mpq and include them in your map. (with the same path, of course)

Hopefully you've done everything correctly. your map should now be playable. Good Job.

http://www.infoceptor.com/custom/warcraft3/tutorial1/
http://www.infoceptor.com/files/warcraft3.shtml
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
-IceDevil9

Yes, any map protectors will be posted here, please reply with working Map Protectors and I will prune topic frequently, so if your post disappears, it's not a forum glitch.

Reign of Chaos Map Protectors

http://www.infoceptor.com/files/war3/mapprotector.zip

Frozen Throne Map Protectors

Other Map Protection Methods

Q: How do I corrupt my map so other people can't edit it?
A:
Import a file (can be blank) into your map.
Double click on the file.
Check "Use custom path".
Change the path to "war3map.wtg".
Save your map.

Any threads found about Map protection will be given a link to this thread and closed. Thank you.

-Frank :cool:

____________________________________________

How to Skin

Heres the Tutorial by Horse_Balls

1. Use Image Extractor II and save the unit you want to skin.
2. Edit the skin.
3. Use the Viewer to change it back into a .blp
4. Use the Image Extractor to find the Unit Pathname, i.e. Units\Other\FleshGolem\FleshGolem.blp
5. Import the skin into your map, and put the unit you want to skin under the pathname, i.e. Units\Other\FleshGolem\FleshGolem.blp (To change the pathname, double click on the imported file)
6. Save the map
7. Close the editor
8. Reopen the map and editor, and voila!

Download the Image Extractor, Here
Download the Viewer, Here

______________________________________

Making your WinMPQ Listfile work, for the purpose of unprotecting maps

Another step to unprotecting if your listfile won't work
Open WinMPQ, go to the map you want, hit Control+K, type in the name of the file (war3map.j, war3map.wtg, war3map.wts, etc) for all the files, then hit Control+L when your done, and then hit Save for the box that pops up, and then add the file that you just saved as your "List File" via Options

Do the control+k thing for every file in your list file... (after hitting OK for each one, it will appear at the VERY BOTTOM of the unknown list, and you should scroll to the bottom to see it)

_____________________________________________
 

Speaker

Premium Member
Joined
Jun 20, 2003
Messages
2,808
Reaction score
2
Location
Computer
Hey Darimus, Add the "How to bypass a map protection" tutorial into here, i can't cuz my comp. won't let me copy & paste anything. Also add L33T's tutorial on how he skinned, he aded picm and everything, but keep mine too :p
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
I'd rather not add how to unprotect a map here... I posted it there because it wasn't a sticky and would eventually go down to the bottom (even though it's such a wild topic that it stays near the top...)
 
W

westin1616

alright i have experimented with world edit and i have found a map called war chasers in the scenario folder. i noticed how they have regular units as hero's. i was wondering how this is done because i looked at all of the units stats and all of that info and i can find where they change it into a hero type.
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
They do not change the unit type, they make a custom hero then they go to "Model"... double click that and find the unit model you want
 
W

westin1616

wheres the option to make a custom "hero". i can only see the button to make a custom unit and from there i can not make the unit into a hero.
 

Darimus

BattleForums Addict
Joined
Oct 2, 2003
Messages
681
Reaction score
0
Website
www.spaceman.vze.com
No, right click on a hero in the Object Editor, and hit Create New Custom Unit, then in that custom hero, go to Model and change it to whatever
 
W

westin1616

how do you change the damage of a unit from lets say 38-41 to like 58-61 or something like that?
 
Joined
Jan 24, 2004
Messages
9
Reaction score
0
Website
Visit site
when i dled it, and extract it liek it says, it says Mscomctl.ocx' or one of its dependencies not correctly registered: a file is missing or invalid when i click the exe.
 

NewPosts

New threads

Top