Game Constants (Menu:
Advanced \ Gameplay Constants)
Q: How do I increase the level limit for heroes?
A:
Go Advanced \ Gameplay Constants -Scroll down and you'll eventually find a
data called "Hero Maximum Level - 10". Change the level limit to whatever you want.
Q: How do I change the food limit?
A: Go Advanced \ Gameplay Constants and find the "Food limit"
Q: The heroes stop gaining experience after level 5, how do I change
that?
A: Go
Advanced \ Gameplay Constants, find the "Hero XP
gained - Creep reduction table". If you want heroes to always recieve 100% xp
from creeps, remove all numers in the creep reduction table.
Q: How do I set the percentage damage each armortype recieves from
different weapontypes?
A: Go Advanced \ Gameplay Constants and find "Combat - Damage Bonus Table".
Remember "1" equals 100%
Game Interface (Menu:
Advanced\Game Interface)
Q: How do I change the name of weapontypes and\or armortypes?
A: Go Advanced \ Game Interface and find "Text - General" and the desired
weapontype\armortype
Q: How do I change the images of buttons like Attack, Stop, Build, Idle
Peon etc?
A: Go Advanced \ Game Interface. The icon settings are in the upper part of
the list.
Q: How do I change ingame texts like "user was defeated", "building
completed", "player was victorious" etc?
A: Go
Advanced \ Gameplay Constants, scroll down to "Text - General - "
Player settings and Loadingscreen
Q: How do I add a picture for the loading
screen?
A:
There are 2 ways of putting your custom picture into the loading screen.
I'll teach you the easiest one:
1. Pick a picture
you want to use in the loading screen. 2.
Resize it to 800x600 or 1024x800.
3. Use an image program like for instance
Photoshop or
ULEAD and shrink the image unpropotionally
to 512x512 so that it intentionally looks weird.
4. Save the new, shrinked
image as TGA 5.
Use Wc3 Image
Extractor to save the image as BLP at image quality 75
6. Download a
loadingscreen
model 7.
Open the import manager (f12) and import your BLP picture file and the
loadingscreen(mdx) 8.
Change the path of your picture file to "FullScreen.blp" and the path of the
LoadingScreen to "loadingscreen.mdx" 9.
Go Scenario \ Map loading screen and pick your image
10. Play
Notes: The map will easily get very big if you dont compress your image
right. The most important way of reducing the size is setting the BLP image
quality to 75 or less. If you set it to 100 or more, the picture will be
alot bigger.
And dont worry that the image is 512x512, it will be returned to normal when
you see the loading screen.
Q: How do I do so you cant choose race or team?
A: scenario properties->forces->use custom forces+fixed player settings
Various
Q:
Do you use any other program than the World Editor that came
with the game?
A:
No, never, I dont need anything else
Q: How do I avoid creeps walking at certain places?
A: Use pathing blockers from the doodads palette and place them like a wall
where you dont want units to cross.
Q: How do I change the text colors?
A: Use this program,
it's very easy to use
Q:
How do I protect my map?
A: Here's how you protect your map in a
99%* secure way, not even the
blizzard team will be able to crack it!
All you need is the wc3 editor and an empty word file. Put the word file for
instance on your desktop, just make sure you know where it is.
The reason why it has to be empty is that the file itself will not be used,
and a file that is not empty will add extra "weight" on your map. Big maps
is not a good thing, so use an empty file. (you can also use for instance
paint files, just make sure it's as small as possible)
In the editor, editing your map, press f12. You will then enter the Import
Manager. Right click in the window, choose "import file" and choose the
empty word file. Then doubleclick the file you imported and "Imported File
properties" pops up. Click the box for "use custom path", type in
"war3map.wtg" in the path and click ok. Now comes the really
important thing: Save the map in a NEW file! You wont be
able to open this map after you've closed it!
If you save the map on top of your old map file and close the map editor,
then you have my permission to go knock your head in a concrete wall. Been
there done that!
When you edit your map, always save your map in 1 protected file and 1
unprotected file, use different file names and put them in different folders
to tell them apart. Now always make sure you play the right map file on the
battle.net, pick the right folder with the right filename so that you dont
give away the unprotected one.
* I've just found out there really is a way to unprotect a map,
nomatter how you protect it. However, very few people know how
to unprotect maps, and this way of protecting it might be the
most secure. Please do not ask me how to unprotect a map, I will
not help anyone unprotecting other people's maps.
Personally I wish it was literally impossible to unprotect any
protected map.
Objects Editor (units, items, destructibles, doodads,
abilities, buffs\effects, upgrades)
Q: Ability stacking, what stacks?
A: I haven't done much testing with this, but I know that
These item types do stack with each other:
* Speed increasing items
* Damage increasing items
* Armor increasing items
* Stat point increasing items
* HP regeneratin items
* MP regenerating items
* Fire Orbs stack with themselves
* Warsong Battle Drums stack with the kodo's War Drums
While these do not stack:
* Item auras do not stack with hero auras, and auras of the same
type do not stack
* Spell Damage Reductions do not stack
* Evasion, Drunken brawler and Talisman of Evasion do not stack
* Movement speed increasing items and abilities dont stack
* Life-Stealing items and abilities dont stack
* Immolation from items and abilities do not stack
In general it may look like only items with abilities have trouble
stacking, while all kinds of unit stats-improving items do stack. A
good example of this, is using orbs. The damage of all orbs in your
inventory will stack, but the effects dont.
Q: How to make a builder summon or any other build
type
A: If you want the builder to summon, then the buildings that should be
summoned must be of undead race, and the builder must have the undead
Restore ability. If you want the builder to build like a night elf, then the
buildings must be night elf and the builder must have the night elf restore
ability. The restore ability is called repairing for human builders.
Q: The unit\tower will not automatically attack as far as it can
A: The "Combat - Acquistition range" is too short. Acquistition range is how
far the unit will shoot by it's own, while Range is how far it can maximum
shoot.
Q: The unit\tower doesn't shoot as fast as it should
A: The "Combat - Animation backswing point" and "Combat - Animation damage
point" are too slow. They decide how fast the unit\tower can maximum attack,
while "Combat - Cooldown time" is how fast it will attack within the damage
point value. The unit\tower can attack slower than the damage point, but not
faster. Default damage point is 0,3, which means you'll have to edit it if
you want the unit to attack faster than that.
Q: It's lagging when I create a new unit, copy a unit or change the
tooptip of a unit
A: Choose the Terrain Layer, go to menu Windows and uncheck Brush List
Q: Lagg when unit is created\lagg loading hero map
A: This is a half-discovered, half-undiscovered bug as far as I know. Some
people experience in-game lagg and\or long loading times for their maps when
they make custom hero skills. Im having alot of trouble with this bug myself
and I'll let you know if I find out how to fix it. The only thing I know for
sure is that it has to do with hero skills.
Q: How do I make a unit unselectable so that it can't be commanded?
A: Give the unit the Locust ability
Q: How do I merge 2 units?
A: I haven't tried this myself, but try using the Mount Hippogryph ability,
it should work in theory
Q: How do I set negative values for abilities?
A: File\Preferences\General tab -Check the box right above the Mouse Scroll
bar. A message will appear that putting negative values at the wrong place
can make the game screw up. I've never experienced that, click yes\ok
Q: How do I set the percentage movement decrease the Slow ability will
give? \ How do I make a levelable skill that slows a unit more and more with
each level? \ How do I make an aura that slows units?
A: One of the flaws with the wc3 editor is that you can't have several slow
percentages for the slow abilities, there is only 1 global setting for all
slowing abilities. This data is in the Advanced \ Gameplay Constants window
and is called "Spells - Frost Movement Speed Reduction", set to 0.5 by
default. There is 2 things you can do instead if you want a skill that
reduces movement: 1. Do like I had to do in Massacre TD, increasing the area
of effect of the freeze ability with each level instead of decreasing the
movespeed more and more, or 2. Use a slow aura instead.
If you want an aura that slows units, then base it off Endurance Aura. Then
set regeneration rate to 0 and change the move speed to a negative value. If
you set it to -1 then the units affected will walk at half speed. Remember
to set the right targets for the ability.
Q: I have a custom ability and the tooltips are
showing the wrong values for the ability. It's actually showing the values
for the ability I based it on. How do I fix this?
A: Press ctrl+D to see the raw datas of the ability. The name of the ability
will be replaced with an ID. In the tooltips, replace the old <xxxx,DataA1>
with <(rawdataID):xxxx,DataA1>.
Q: Incinerate doesn't work
A: The unit must be ranged
Q: How can I change normal units into heroes?
A:
You can't
Q: How are damages and bounties calculated?
A: Minimum roll= Base+Number of Dice
Maximum roll=Base+(Number of Dice*Sides per Die)
Q: Why do buildings just stay at 10% of their maximum HP after I place
them, instead of being built normally?
A: Your builder has the wrong abilities, look at the default builders and
copy them. If you want it to summon, use the acolyte summoning and
restoring.
Q: What are the attachment points for ability effects?
A: overhead (floats
over the unit's head, but doesn't sway with the head as it animates)
head (sways with the unit's animation)
chest
origin (usually at the base of a unit's feet)
hand
foot
Trigger
Editor
Q: How do I
make player-message triggered actions?
A: Let's start wiht an example:
| Add Gold to self Events Player - Player 1 (Red) types a chat message containing addgold as A substring Conditions Actions Set Add_Gold_Amount[(Player number of (Triggering player))] = (Integer((Substring((Entered chat string), 9, 11)))) Player - Add Add_Gold_Amt[(Player number of (Triggering player))] to (Triggering player) Current gold |
In the action " Set Add_Gold_Amount[(Player number of (Triggering player))] = (Integer((Substring((Entered chat string), 9, 11))))" We are using the numbers 9 and 11 because that's the three digits where the number of gold the player wants to add, is typed (a1d2d3g4o5l6d7 8x9x10x11). Let's say we want to make a kick trigger instead. That would be like
| kicking triggered Events Player - Player 1 (Red) types a chat message containing -kick player as A substring Conditions Actions Set kickplayer = (Integer((Substring((Entered chat string), 14, 15)))) Game - Defeat (Player(kickplayer)) with the message: You've been kicked! |
See the numbers in the
"integer((substrin((entered chat string)" thing are very important and
has to be correct, for the triggers to work.
Q: How do I
make a trigger delete\move\return value of a selected unit?
A: I think
it's impossible... I tried several times myself, Ive asked several other
map makers, and we couldn't find a solution to it. My experience is that
using a trigger that deletes a selected unit, will actually delete any
random unit on the map, while NOT deleting the selected one! Really bad
bug indeed
Q: I want a
trigger to check an item that has been pawned. How do I do it?
A: It's not possible actually, atleast not yet. It's one of the flaws in
the editor:\
Q: I'm
making a map where creeps will spawn in waves, and the next wave starts
when all previous creeps are dead. But even when they're dead, it wont
start. Why?
A: This editor bug can be very annoying. The thing is, that when a
trigger checks how many creeps are still alive, it includes all the dead
creeps on the ground... Which means the only way to get around this, is
to enter Game Constants and set the Decay Times to something like 0-2
seconds. This is bad if you have a hero\unit ability that creates units
out of skeletons, because that ability wont work if you want the trigger
to work...
Q: How can
I scan a region for certain items?
A:
The "items in region" does only include items that
lie on the ground. If you want the trigger to scan heroes in the region
for the item too, then you would have to use an integer loop to check
every item slot on every hero in the region, one at a time.
Q: I want a
trigger to return the name of a certain unit, but it shows something
like custom_xxxxx instead
A: Display the
unit name, not the unit type name.
Q: What is
Integer Loops, how do I use them?
A: Integer
loops is a way to make consecutive triggers more compact, while
decreasing the chance for bugs in the trigger as a side effect. This
trigger below will show you how to use integer loops to give gold to the
players:
| For each (Integer A) from 1 to 5, do
(Actions) Loop - Actions Player - Set (Player((Integer A))) Current gold to 100 |
While this trigger will show you how to make the work with updating multiboards much easier. I suppose you know how to use variable arrays while looking at it, or you should learn that first to understand this trigger.
| For each (Integer A) from 1 to 5, do
(Actions) Loop - Actions Multiboard - Set the text for (Last created multiboard) item in column 2, row (Integer A) to (String(Kills[(Integer A) ])) |
If you have ever used a multiboard with more
several rows and collumns before, then you know that it can be hard to
keep track of all the rows, collumns and player values, and bugs might
easily occour. By using integer loops you will only have 1 sentence for
each variable to update for the players, instead of 1 sentence for each
variable for each player.
Another tip for use of this kind of trigger, is when creating a starting
unit(or more) for each player, at different positions for each player.
Place all the Player Starting Positions at the places you want the units
to appear, and then use integer loop to spawn units at the starting
position for each player. I'll let you make that trigger yourself.
Q: Simple
unit spawning, region-event related triggers
A: Spawning
units always require a premade region, which you make in the Regions
Layer. Always name regions in a way that you can easily figure where the
region is located, and what it's ment for, so that you dont have to
check the map all the time while making the triggers.
Let's say you want a trigger that, when somebody enter RegionA, creates
creeps at RegionB.
Then you will use the event "Unit enters RegionA". Then make a condition
that checks who enters the region (if you only want the creeps to appear
if a certain unit, or a certain player, is entering). If you want it
only to happen when a certain player enters, then use the condition
"(owner of (triggering unit)) equal to (player x)". If you want it only
to happen when a certain unique unit enters, then you must first make a
variable. Let's this unit is a certain Footman, and we call the Unit
Variable "Triggering_Unit". Then add the condition "(triggering unit)
equal to Triggering_Unit". Or, you could use the condition "(unit-type
of (triggering unit)) equal to Footman".
Q: I need help to find
a bug
A: When
I have trouble locating a bug, I use 2 methods: Exclutions and
Checkpoint messages, which I like to call them.
Exclutions: If you have no idea at all where the bug is, then start
with "exclutions". Save the map to a new file, call it (mapname) +
"testing". Now select all triggers one by one and hit ctrl+f. You will
then turn off the triggers. Now test the game. If the bug is gone, then
you know the bug is caused by a trigger. If the bug is still there, turn
on the triggers, save the map in a new file, delete all units in the map
and then test again. Most bugs are caused by triggers, some by units,
the rest is probably abilities. So if you still dont find the bug, try
reloading mapfile Test, which still has all the units, remove all
abilities and skills in the game, then save the map in new file again.
After testing now you should have an idea where the bug is. Now reload
mapfile Test again. If you know the bug is caused by a trigger, try
having some triggers turned on and some turned off. If the bug is caused
by a unit, try deleting half of the units in the game. If the bug is
caused by an ability, try deleting half of the abilities in the game.
When you know in what half of the triggers\units\abilities the bug is
located, cut that half in two with disabling and deleting and try again.
Bug disappeared? Try putting back a few things at a time till you find
it.
Checkpoint messages: If you know the trigger has something to do with
one or more triggers, use checkpoint messages. Checkpoint messages have
2 purposes: 1) Telling you that the trigger has been launched and 2)
what parts of the trigger is working correctly. If you dont know what
trigger(s) causes it, then start with "exclutions" till you know. When
you know, or have a theory, what trigger(s) causes the bug, then start
making "checkpoint messages" in those trigger(s). This means: If the
trigger has an IF sentence, put a game message before and inside the IF
sentence, both when the conditions are fulfilled and when they're not.
In this message, just write something like "(triggername) has been
launched". If the trigger's duty is to change a variable or two, then
make a game message before and after the variable has been changed, and
write something like "variable is set to: (variable)". Start the game
and play as regularly. When the triggers are launched you will now see
those messages, hopefully telling you what is wrong. If you miss any
checkpoint messages or any of them give you another value than you were
expecting, then you have partly located the bug. Bugs that often occour
are IF sentences that don't work correctly, variables set to the wrong
value or no value at all, unit actions with "triggering unit" instead of
for instance "picked unit", "dying unit", "selling unit" or whatever,
trigger actions that you have simply forgotten to make, bad trigger
events or conditions, and lack of wait actions. I dont remember all
trigger actions that require a "wait 2 seconds" in front of them to work
at map initialization, but it's a good idea to always place a wait
action before any other actions in a trigger launched at map
initialization, in case any of the actions require it.
Q: How do I make a dialoge, like for difficulty voting?
A: I'll paste a part of the the dialoges I used in Massacre TD:
First you need a trigger like the one under(yellow). This trigger takes care
of all the visual details of a dialoge, like what text will be in it, how
many buttons will be in it, what the buttons should be called, a reference
to each button, and last the action that shows the dialogue to the desired
players. The last action MUST be last in the trigger, or the dialogue will
be empty without any text or buttons.
| Chosing lives(trigger
name) Events Time - Elapsed game time is 2.00 seconds Conditions Actions Dialog - Clear lives(dialoge name) Dialog - Change the title of lives to How many lives do y... (Introduction text, "how many lives do you want?") Dialog - Create a dialog button for lives labelled |c0000ff00Add 6 liv...(button for choosing 6 lives) Set lives6(Dialogue button variable) = (Last created dialog Button) Wait 0.01 seconds Dialog - Create a dialog button for lives labelled |c00ffff00Add 4 Liv... Set lives4 = (Last created dialog Button) Wait 0.01 seconds Dialog - Create a dialog button for lives labelled |c00ff8000Add 2 Liv... Set lives2 = (Last created dialog Button) Wait 0.01 seconds Dialog - Create a dialog button for lives labelled |c00ff0000Add 0 liv... Set lives0 = (Last created dialog Button) Wait 0.01 seconds Player Group - Pick every player in (All players controlled by a User player) and do (Dialog - Show lives for (Picked player)) |
Then you need a trigger for each button so that the
chosen difficulty will be noted. You will need 1 trigger for each of all
buttons in the first trigger above. This is how it goes:
| Lives chosen 6(dialoge
name) Events Dialog - A dialog button is clicked for lives(the first dialog) Conditions (Clicked dialog button) Equal to lives6(the name of the first button) Actions Set Lives = (Lives + 6) Game - Display to (All players) the text: |c0000ff006 lives h...(information message to all players about how many lives were chosen. You decide if you want such a message) Leaderboard - Change the value for Player 8 (Pink) in (Last created leaderboard) to Lives(This will show in the leaderboard how many lives have been added total with all votes) Dialog - Show money for (Triggering player)(launches the next dialoge if you want to have more than one. If so, you will have to create a new trigger like the first one, for that new dialoge, and then new triggers for all the buttons in the new dialoge.) |
Q: How do I make a sell button?
A: Copied from Massacre TD:
| Sell Events Unit - A unit Begins casting an ability Conditions (Ability being cast) Equal to Sell (tower)(This is the ability the user will click, all units with the sell option must have it. You make the ability by basing it off any ability that can only be cast on self and has to be clicked to be cast. In this case I based it off Windwalk. Set all data values to 0, change the name to Sell and change the tooltip to something like "click to sell") Actions Player - Add (Point-value of (Casting unit)) to (Owner of (Casting unit)) Current gold(Note that this trigger gives back 100% of the gold cost) Game - Display to (Player group((Owner of (Casting unit)))) the text: ((|c0000ff00You Recieved |r + (String((Point-value of (Casting unit))))) + (|c0000ff00 gold for selling a |r + (Name of (Casting unit))))(This is the message that tells the player what unit was sold and how much gold was returned) Special Effect - Create a special effect at (Position of (Casting unit)) using Abilities\Spells\Human\HolyBolt\HolyBoltSpecialArt.mdl(just to make it look nice) Unit - Remove (Casting unit) from the game |
Then change the point value for all units to (gold cost for building\buying the unit)+(all gold spent on upgrades, like Guardtower Level 2 or whatever). You do this in the unit editor, you'll find the point value where you find hitpoints, gold cost, mana etc.
Q: How do I make creeps drop random items on
death?
A: Add this trigger:
| creep dies Events Unit - A unit Dies Conditions (Owner of (Triggering unit)) Equal to Neutral Hostile (Level of (Triggering unit)) Greater than or equal to 5 (This is so that low-level creeps dont drop items, I think that would be too many items) Actions Item - Create (Random level (Level of (Triggering unit)) item-type) at (Position of (Triggering unit)) |
Q: I'm using random numbers, but I still get the same number every time
A: File menu->Preferences->Test Map->check off "use fixed random seed"
Q: What is variables?
\ How do I use variables?\What is arrays?\How do I use arrays?
A:
Check this thread
Q: How do I make a trigger action that orders a unit to use a custom
ability?
A: Order the unit to use the base ability of the custom ability. What
actually determines issued orders is the orderstring of the ability. Custom
abilities have the same orderstring as their base ability. Changing the
orderstring field of an ability doesn't actually affect this.
Q: Why do some units use more than one ability when I order them to use
only one?
A: If two abilities on the same unit have the same orderstring, the game
gets confused and tries to use both of them whenever the unit is ordered to
use one of them. The only way to fix this is to base the custom abilities
off of different standard abilities. Changing the orderstring field of the
ability doesn't affect anything.
Q: How do I add bounties to units?
A: In a trigger that runs at map initialization, use the Player- Turn Player
Flag On/Off action to turn on the Gives Bounty flag for the player whose
units will give gold when they die. The Stats- Bounty fields for the units
must also be set in the Unit Editor.
Map Making FAQ