Addons, Macros, and PC Protection

Guides about how to use certain addons and other programs relevant to wow and wow-pro.

How to CLEAN your PC from Keyloggers

Magekíd's guide: How to CLEAN your PC from keyloggers.

Hi all, this guide will help you on how to clean your pc from keyloggers.
Please take a look.

Screenshots have now been added!!!

English is not my mother tongue, so some things are hard for me to explain, but I think i'm doing a good job, in general ^^

First of all, a note: Hijackthis is a tool, used for finding infections in your computer. Please note: THIS IS NOT A SCANNER. It shows both malicous rules, but also LEGIT rules. Do not fix rules in Hijackthis yourself!
You can find a list of forums that are qualified to look at your Hijackthis log here: ASAP
In addition, here’s a list of forums where you can post your hijackthis logfile. – If you know any others, please let me know in a comment/reply!

Jame's Technical Support Forum <-- I can take a look at your log there Smiling



Before posting a Hijackthis log, please do the following steps upfront. I know this is alot of work, but that way most malware is already deleted and your logfile can be looked at faster.
Please remember: Follow ALL steps, including step 7

Note: Vista Users must run installations and the downloaded programs as Administrator. You can do this by right-clicking the program and select Run as Administrator (The screenshot shows it for Hijackthis, You must use this for every program we use here)

1. Download ATF Cleaner here: - and save it somewhere (Desktop for example)

- Start ATF Cleaner and check everything except "Prefetch" at the tab "Main". Then press "Empty Selected"

- If you use Firefox as your browser, go to the Firefox tab and check everything except "Firefox Saved passwords". Then press "Empty Selected"

- If you use Opera as your browser, go to the Opera tab and check everything except "Saved Passwords". Then press Empty Selected.

2. Download Ad-aware 2008 Freehere - and install it. If you get an license note during the installation, press Use Free After the installation, start Ad-Aware and press Update.

When Ad-Aware is finished updating, press Scan and do a Full system scan
When the scanning is completed, You'll see two tabs with infected objects. The first tab contains Critical Objects and the second tab Privacy Objects Check everything at both tabs and press Remove At the top of both tabs you see a number which says the amount of infections found. Please wait until both numbers say "0" and then press Complete.

Close Ad-Aware

3. Download Spybot Search & Destroy here: - and install it. During the installation, uncheck "Use Internet Explorer protection (SDHelper)" and "Use system settings Protection (TeaTimer)"

When the installation is completed, start Spybot S&D and press OK at the notice you get about Ad-Aware. It may also notify you about deleting temporary files. Just select yes Follow the Wizard, and when the wizard is done press Update in Spybot. Search for updates, check all available updates and install the updates. After that press the Immunize tab and Immunize your system. When the Immunization is done, press the Search & Destroy tab and start scanning your computer.

When Spybot S&D is done scanning. Check all found objects and press Fix Selected Problems.
If Spybot S&D cannot delete all found objects, it will ask if it can scan at the next reboot to fix the problems. Press Yes.

Now close Spybot S&D.

4. Download MBAM (MalwareBytes' Anti-Malware) here: - and install it. Make sure that at the end of the installation, Update MalwareBytes' Anti-Malware and Start MalwareBytes' Anti-Malware is checked.

When MBAM is started. Go to the Scanner tab and do a Full scan

Once MBAM is done scanning, press Show Results and make sure all found objects are selected. After that press Remove Selected

When MBAM is done deleting objects a logfile will open. You can close this logfile.
The Logfile will automatically be saved at the Logs tab in MBAM.

If MBAM found objects that can't be deleted, it will ask to reboot your computer. Allow this and restart your computer.

4. If you didn't restart your computer after running MBAM, restart it now anyway.

5. Do a full system scan with your virusscanner and remove all found infections.
If you do not have a virusscanner, you can scan online with one of these scanners. (Use Internet Explorer to scan)


Remove all infections found.

6. Restart your computer.

7. Download Hijackthis here: - and install it. After the installation Hijackthis will open. Press Do a systemscan and save a logfile.

A notepad file will open. In the Notepad file, press CTRL + A to select everything, CTRL + C to Copy everything. Then press CTRL + V in a new topic at the forum you want to post the log.

Also paste the MBAM log on the forum you place the Hijackthis logfile.

Many thanks for reading, if you have questions or problems, please ask Smiling

Also: Please note: Doing this all, is NOT A GUARANTEE your computer is not infected. There is no scanner that has a 100% detection rate.

- Magekid

How to increase you graphics with a macro, updated for WOTLK

With the use of a macro, you can increase your graphics with a higher view distance and grass density.
So, lets get started.

The steps to make a macro are:
1. Type in /macro or /m
2. Create 2 new macros with different icons.
3.Copy paste these lines in the first macro
/console overridefarclip 1
/console farclip 1600
/console horizonfarclip 6226
/console groundeffectdensity 256
/console groundeffectdist 140
/console smallcull 0
/console skycloudlod 3
/console characterAmbient
/console extshadowquality 4

4. For the second macro copy paste
/console environmentDetail 2

Now just put them on your action bar and run both. You will notice a large FPS drop even of a high end machine. For me, it dropped my fps by about 25 but now WoW looks extremely well.

Notes: Create 2 macros because 1 wont fit it all.
I got the updated macro from;jsessionid=C7039CE15BBB66F5363F6DD4094787B2.app25_04?topicId=11228503053&sid=1
but since the thread is barely viewed I though I would post this here.

How to reduce WoW Lag

I. Introduction

WoW Lag got you down? Can't finish your quest because of lag, always getting killed in battlegrounds because of lag? Then this guide is for you! This guide will help you to identify the problem that is causing you to lag.

Meet the Requirements

Of course your system has to meet the requirements to run WoW, which are as follows:

PC System Requirements

OS: Windows XP / Windows Vista (with latest Service Packs)


Minimum: Intel Pentium 4 1.3 GHz or AMD Athlon XP 1500+
Recommended: Dual-core processor, such as the Intel Pentium D or AMD Athlon 64 X2

Minimum: 512 MB RAM (1GB for Vista users)
Recommended: 1 GB RAM (2 GB for Vista users)
Minimum: 3D graphics processor with Hardware Transform and Lighting with 32 MB VRAM Such as an ATI Radeon 7200 or NVIDIA GeForce 2 class card or better
Recommended: 3D graphics processor with Vertex and Pixel Shader capability with 128 MB VRAM Such as an ATI Radeon X1600 or NVIDIA GeForce 7600 GT class card or better

Sound: DirectX-compatible sound card or motherboard sound capability

Mac System Requirements

OS: Mac OS X 10.4.11 or newer

PowerPC G5 1.6 GHz or Intel Core Duo processor
Recommended: Intel 1.8GHz processor or better

Recommended: 2 GB RAM

3D graphics processor with Hardware Transform and Lighting with 64 MB VRAM Such as an ATI Radeon 9600 or NVIDIA GeForce Ti 4600 class card or better
Recommended: 3D graphics processor with Vertex and Pixel Shader capability with 128 MB VRAM Such as an ATI Radeon X1600 or NVIDIA 7600 class card or better

All Platforms

Controls: A keyboard and mouse are required. Input devices other than a mouse and keyboard are not supported.
Connectivity: You must have an active broadband Internet connection to play.
Mouse: Multi-button mouse with scroll wheel recommended.
Hard Drive Space: 15 GB free hard drive space

Please check if you meet these requirements if you don't know how to check: Start> Run> DxDiag

III. Finding and Solving The Problem

The lag can either be caused by high latency (300ms+) or a low framerate (15 and below) .

To reduce your latency read this:
1. Stop any downloads or videos running while playing WoW.
2. Reduce the amount of programs running while playing WoW.
3. Change your ISP.
4. Edit the Registry:
Search for:
Search through the keys (should be folders with random numbers on it) and find out which one is your network connection, you will know because it will have your Local IP Address in it. (a guide to finding it is found at
When you've found it create a new REG_DWORD key called "TcpAckFrequency" and set the value to 1.
Restart you computer.
Refer to for more information.
Note: This might* decrease your internet download speed.
*I've tried this and it hasn't but I don't really know about others.

To increase your Framerate read this:
1. Switch all the graphic options down to low. This game be done in game by Options>Sound and Video
2. Reduce the amount of Start up programs, Go to MSconfig (run>msconfig) and go to the tab startup and deselect any programs that aren't absolutely necessary. (If you don't know what it is I suggest not touching it.)
3 . Clear up RAM by running a program called CLEANUP ( or following this guide:

Special thanks to gregshutdown for the extra information

Thanks for using my guide and I hope this helped!

Jahwo's AddOn Writing Guide

In this guide I will give you a pretty extensive introduction on how to write your own World of Warcraft AddOns. While following this Guide you will write your first AddOn, called WoW-ProFit which keeps track of your money profits and deficits.

You don't need any programming experience if you want to follow this guide, but it would of course be helpful, as I can't possibly explain every nut, bolt and screw. Some talent for independent thinking might be useful, too. Sticking out tongue

If any questions or problems occur, please feel free to ask me via PM or Comment.

Table of Contents


This guide has been written for learning-by-doing, so roll up your sleeves and prepare for hard work!
No seriously, please don't just read the guide an try to memorize something, this would have absouletely no use and it would completely spoil the fun you have while writing your first own AddOn. (That's why the WoW-ProFit AddOn won't be available as a download!)

As you will see, the Guide is based on steps. The steps can consist out of three different "segments":

The green segment will have a short introduction on what will be done in this step
The grey segment is the place for XML code-snippets
The purple segment is the place for lua code-snippets
The blue segment contains the explanations for what has been done in the code.

The star means that there are some visible changes, so it might be a good idea to look at your AddOn in the game. Smiling

The little AddOn you will write during this guide will show you exactly how much money you have spent or earned in the current playing session. Additionally it keeps track over all the session since it's installation and can display the all-time profit/deficit. This is what it will look like:

WoW-ProFit includes pretty much everything that is needed for this "basic" introduction.

Nevertheless you have to note, that this Guide won't give you ALL information you need to write professional AddOns like Cartographer or TourGuide, but it is definitely a step in the right direction Eye

So never despair, keep cool and have fun!


Everything you need for creating your own AddOns is a simple text editor and, of course World of Warcraft to test you AddOns.

If you want you can follow this guide only with Window's Notepad but I really suggest to use a texteditor that supports syntax-highlighting. The one I recommend and use is

It's open-source software, and as such free to download. It supports syntax-highlighting for many many languages, including lua and xml, which we will be using. Also it has the possibility to record Macros and a lot of other handy things you will find out yourself Smiling

An other quite useful tool, which is completely optional for this guide, is
It's an XML-Editor by Microsoft which comes in really handy if you have to struggle with huge xml-files. I won't explain how it works exactly, so if you want to use it you will have to catch on with it yourself. NotePad++ will suffice for this guide as our xml file won't become too big.

What is an AddOn

As you probably know, an AddOn is a way to customize, modify and extend you User Interface.
Most people know that an AddOn consists at out of one folder and some files.
But only a few people know what is going on inside those folders and files, and that's where we will head in this guide.

AddOns are located in a AddOn folder. The path is:

World of Warcraft\Interface\AddOns\

Every AddOn has it's own folder in there and in every addon folder you will most probably find three different types of files:

  1. The .toc file:
    TOC is the abbreviation for Table of Contents and that's exactly what it is. It contains a reference to every file you want to include to the addon. Also it conatins some parameters which describe the addon to WoW. The name of the .toc file has to be the same as the name of the folder it is in.

  2. The .lua files:
    Those files contain (most of) the logic.

  3. The .xml files:
    Those files contain the "design" of your buttons, textures, frames etc.


Before we actually start coding we will prepare the file and order structure. As said above, all our files have to be in their own folder and our .toc file has to have the same name as this folder.

So, in your AddOns folder, create a new folder called "WoWProFit" and create the following files:

Now open the WoWProFit.toc file and write the following lines:
Every line with a ## in the front represents a parameter. There are lots and lots of them. If you really want to learn everything about the .toc file format I recommend you visit the wowwiki page about it.
Interface: tells World of Warcraft for which client version the AddOn was written. If you want to know how to get the current number look here Current Interface number: 30300 (07 January 2010)
Title: is the title of the AddOn that will appear in the AddOn list at the character select screen.
Note: is a description that will be shown under the title.
Author: your name Eye
The last two lines are the filenames of the files we want to include to our AddOn.

The Frame

Now we will create the background and borders for our AddOn. For this we will edit our .xml file and add a Frame. But first of all, a short introduction about XML:

Notes on XML:

If you never programmed before this might need some explanation. XML works with so called tags, you probably already met something similar here on WoWPro if you ever formatted some text.

A tag looks like this: <tag>.

Tags generally get opened and closed again. Closing tags have a slash (/) in the front: </tag>.

Tags can be closed in their opening tag, looks like this: <tag parameter="stuff" /> (note the slash at the end)

As you can see, it is possible (and often used) to add parameters in the tag.

Everything between the opening and ending of a tag will either influence it or will be influenced by it.

Don't worry if you have problems understanding this, it's not very hard. Just follow the guide and everything will explain itself. Smiling

Open the WoWProFit.xml file and write the following lines
The <Ui> element is the only really needed tag in the .xml file. It just has to be there Eye

The <Frame> element, how could it be different, represents the frame we are about to create.

We've already given our frame a specific name, with the name parameter. I called it "WoWProFit_MainFrame" because this name is really clear to everyone who reads it. If you somewhen write your own AddOns it'd be nice for you and other people if you give your stuff reasonable names.

A prefix like WoWProFit is not necessary, but again it increases the understandibility and prevents interferences with other AddOns.

There are three things we need to do before we can see our frame in the game: give it a size, anchor it to a point and create a backdrop. At first we will give it a size
The <Size> element contains the size information for the frame. This information can be give with different tags.

We use the <AbsDimension> tag which takes two parameters. The width of our frame as x and the height as y. The values given are in absolute pixel. Thats why it is called AbsDimension.

Another possibility would have been the <RelDimension> tag which, other than our tag takes the values relative to the screen, from 0 to 1. (Means x="0.5" and y="0.5" would be exactly the half of the whole screen)

The width doesn't really matter in our case, because we will have to set it dynamically later on, but for now we set it to 120 so we will see something. The height of 20 pixel is the final height for the frame!

Now we anchor the frame to the center of the screen
We added a new parameter to our frame, parent="UIParent". This means that our frame is the child of the UIParent, which represents the whole screen. We'll need this information in the next tags.

The <Anchors> tags contain all the anchors of the object. In our case it has only one.

Anchors place one point of an object (here the frame) on a point of another object. There are different "versions" of anchors but we just use the simplest of them.

Our <Anchor> element takes just one point parameter, which contains "CENTER". This means that the center of our frame will be anchored to the center of it's parent, which we defined before (the UIParent).

The next thing is the backdrop. This is a little bit more complex so we'll begin just with the background and leave the borders away.
We "create" the backdrop with the <Backdrop> element. The image-file is given in the bgfile parameter. The path we use shows to the background image of tooltips. The parameter tile="true" says that the background will be composed out of many tiles of the same size instead of stretching one texture to the needed size.

The size of those tiles is defined in the <TileSize> tag which works pretty much the same as the <Size> we used for the whole frame. The difference is that the tiles are squares and therefore we only need one dimension instead of two.
This means we use a tag called <AbsValue> which takes only one parameter called val. We choose a size of 16 * 16 pixel for our tiles.

Informations about how to find the paths to WoW-images can be found in the Appendix

Time for a test-run:

Save your files now and start your World of Warcraft client. Log in and check if this entry is ticked in the AddOns list:

Log into your favorite character and you should see a slightly transparent bar in the middle of the screen

If not, don't be upset, just go through the previous steps again. Adversity is the school of wisdom.

Next we want to add some borders to our frame. For this we need a file that contains all edges and sides and have to define their size
The edgeFile parameter contains the path to the file we want to use. This is what our file looks like:

As you can see it contains all possible sides and edges for a nice bordered rectangle. Because of this we need to define how the file has to be split.

We have to specify the size of the "tiles" we want to make out of this file with the <EdgeSize> tag. It works exactly like the <TileSize> element. We need to split the file into 16 * 16 pixel tiles.

If you look at your AddOn now in the game you would notice that the background is somehow visible outside of the borders. We can fix this by adding a new element that scales only the background.
The <BackgroundInsets> element is used to scale the background. It requires another tag:

The <AbsInsets> tag is similar to the other Abs tags we already used but it takes four arguments: left, right, top, bottom. Those specify how many pixel the approprate side moves to the center of the frame. The values given in the snippet above are perfect for our case.

Now there's only one thing left for the backdrop. If you compare your current frame to the screenshot in the Introduction, you can see that our background is much brighter. So now we change the color of the background.
The <Color> tag will change the color of the background. The color will be composed out of the r, g and b paramters. Those represent the parts of red, green and blue. The values go from 0 to 1. For example if all three parameters are 1 it would be white (what would actually have no effect to the texture), whereas 0 would be black. The a parameter is the alpha of the background, again from 0 to 1, where 0 is transparent and 1 is opague.

Very well, the frame is finished, though we'll have to make some dynamical changes to it later on. Nevertheless, be happy about what you've done so far. Smiling

A Button

In this chapter we will add the button that will allow us to display the all-time profit/deficit.

We can use most of the things we've already learned from the frame on the button as well, because it is derived from the frame element and therefore is a frame too.

We have to add a new element that will contain all Objects of the frame
Between the <Frames> tags will be all objects that are somehow derived from the Frame object. Those are for example buttons, as we will use one, scrollframes or editboxes. Of course we could also add other [=14]<Frame>s to the frame.

Every object in a <Frames> element has the frame it is in as a parent, in our case the WoWProFit_MainFrame (if we don't say otherwise with a parent parameter)

A button object can easily be added with the <Button> argument which in terms of size and anchors works exactly the same as pure frames.
The analogies of the <Button> element to the <Frame> element are obvious. It has inherited the same parameters and has the same embedded tags like <Size>

The $parent argument in the name of the button refers to the name of it's parent. As said above the parent is WoWProFit_MainFrame, and so the complete name of our button is "WoWProFit_MainFrame_Button"

Everything else you can see here should be clear. If not search the The Frame chapter for the here used tags.

Of course we can't save ourself from the anchoring and this time we need to specify an offset to make it look good in the end.
The point of the <Anchor> tag is "TOPLEFT" which only means that the topleft point of the button will be anchored to the topleft point of it's parent (our MainFrame, as explained above)

This time we opened the <Anchor> tag and inserted a new element, the <Offset>. It takes the already known <AbsDimension> tag. The given x and y values move the anchor-point to the right and the top, because the origin of the coordinate system is in the bottomleft corner of the screen.

We move the point 3 pixel to the right and 3 pixel down, so that our 15*15 pixel sized button is approximately vertically centered in our 20 pixel high frame.

Instead of a background we will use different textures for the different states our button can have (Normal, Highlighted, Pressed or Inactive). Let's begin with the normal texture
The path to the texture we want to use has to be given in the file paramter of the <NormalTexture> tag.

The problem with the texture we use is that it in fact is multiple textures in one file:

We only want to use the first blue circle thingy as our texture so we somehow have to cut it out. That's where the <TexCoords> tag comes in.

<TexCoords> with four arguments as we use it cuts out a part of the texture. The argument left defines where the left side of the piece is. The value given to it is a relative value that expresses a distance from the left side of the whole texture.
For example if it's 0.25 it would be one fourth of the width of the whole texture.

The same thing applies to the right parameter, only this one defines where the right side of the piece is.

Similar to this work top and bottom, only that it's relative to the height and from the top.

In our case we want to keep the left side, so left is "0". The right side is "0.125" because we have 8 different textures in the row and 1 / 8 = 0.125
The top stays the same, so "0". The bottom is exactly the half of the height.

If you have problems understanding this, just play around with the values and look at the results ingame, as you should see the button there by now.

We will use the slightly brighter blue button as our highlighted texture. This one will be shown if the mouse is over the button.
The principle of the <HighlightTexture> tag is completely the same as for the normal one, we only have to change the left and right parameters of the <TexCoords> so that it cuts out the second button.

Textures and FontStrings

Even the <Frame> element has an object it's derived from, the <LayoutFrame>. Now this object is also the parent of <Texture> and <FontString> objects, which we will use now. The fact that they are not derived from <Frame> means that they do not fit into the <Frames> element, we need something else...

FontStrings and Textures can be implemented in one of five Layers
The <Layers> element contains the different layers.

The <Layer> tag is similar to the <Frame> element, but it takes an parameter called level. With it you can define on which "height" the elements in it are placed. Elements in higher levels cover elements in lower levels.
The possible levels are, from highest to lowest:

The level ARTWORK is just fine for our case.

Let's begin with the text for the gold amount. We need a <FontString> object for this. There is not mouch new here so prepare for some more lines of code:
The <FontString> tag creates a new text label element. There are a few new parameters, but nothing too hard.

The name given in inherits is the name of a <Font> object, that defines which font is used and which size it has. You can find the by default inheritable fonts here, but I won't explain this file Sticking out tongue

The text that will be shown is given text parameter. We set it to "0", this will be changed dynamically later on.

JustifyV and JustifyH control how the text is justified. We want it to be horizontally on the "RIGHT" and vertically at the "TOP"

The <Size> and <Anchors> stuff should be clear in this case.

Because the profit at the beginnning of a session is 0 we want the text to appear yellow. We can use the <Color> tag for this again.

Now that we've got the text we want that little gold texture next to it
Not much new here again. We create the texture with the pretty straightforward <Texture> tag and provide a texture file in the file paramter.

Even though the files size is not 10 * 10 it will be adjusted automatically.

The anchoring for our gold texture is a bit more interesting as we don't want it to be anchored to it's parent and not even to the same point.
As you can see there are two new parameters in the <Anchor> tag.

The relativeTo parameter takes the object the Anchor will be relative to. We want the texture to be next to the text we made two steps before, so we give the name of the <FontString> object to the relativeTo parameter.

We also want the texture to be on the right side of the text. This can be accomplished easily if we anchor the topleft point of our <Texture> to the topright point of the <FontString>. We do this with the relativePoint parameter.

The small horizontal Offset is only for some distance between the two objects.

The silver <FontString> and <Texture> is only copy and paste work.
The only new thing here is that <Anchor> of the <FontString> object is relative to it's neighbor texture as well.

Changes have been made in the name of the <FontString> and <Texture> and the relativeTo parameter has been adjusted.

Of course the file of the texture has to be changed, too.

Only copy and paste work for the copper stuff.
Again there are changes in the name, file and relativeTo parameters.

Drag and Drop

Now it's time to implement some interactivity with the frame. As a beginning we want the frame to be dragable.

We have to add two parameters to our frame, so that it is movable and that we can use the mouse on it.
movable="true" makes the frame movable

enableMouse="true" allows us to retrieve mouse events like clicking, which we need in the next steps.

We want the frame to start moving if we press the mouse button down and we want it to stop moving if we realease it. So we now add two so called Even-handlers.
The <scripts> element contains all Event-Handlers for the object it is in. We want the frame to be dragable on click, so we put it into the <Frame> obejct.

<OnMouseDown> is such an Event-Handler. Everything between it's tags is actual lua-code and will be executed if the event is fired. For this tag it is fired if the user presses a mouse button down on the frame.

<OnMouseUp> is an event that is fired if a mouse button is released.

Now it's tmie to switch into our WoWProFit.lua file and write our first function. This one will make our MainFrame start moving.
The statement function opens a new function and WoWProFit_MainFrame_OnMouseDown is it's name. Again it's a matter of clearness, as this name explains exactly what it is for on the first view.

The two brackets () after the name is the place where we can add parameters for our function. We don't need any.

The end statement closes the function.

Our frame WoWProFit_MainFrame has member functions that will have an effect on it.
In the second line you can see how they are called. First there is the name of the frame followed by a colon and the name of the function with the brackets for eventual parameters.

The function StartMoving() causes our frame to move with the mouse cursor.

The function that makes the MainFrame stop looks pretty much the same
This time we call the StopMovingOrSizing() function which does exactly what the name says Eye

Now that we've written our functions we can call them in the Event-Handlers.
Every time the MouseDown event is fired, it will call our WoWProFit_OnMouseDown() function, and therefore make the frame start moving.

Same thing with MouseUp only that it will result in making the frame stop moving.


Some presets and stuff like that we need to sort out while loading the AddOn.

Three variables at startup
The WoWProFit_LastMoney variable will contain the money before it has been updated, so we can calculate a difference.

The WoWProFit_MadeProfit is a boolean variable. This means it can have the states true or false. We will use it to control if a new entry in the all time history has been made or not.

The curly brackets indicate that WoWProFit_History is a table. Tables are variables that kind of contain a list of other variables. We use it to store the all-time history of profits and deficits. It does not matter if the table contains something, because it will be overwritten with the saved data we create in the next step.

The WoWProFit_History table has to be saved, so that we can update it in every new plaing session. For this we need to edit our .toc file again.
The SavedVariablesPerCharacter parameter is a list of variables that will be saved for each character. We want our History to be saved.

The saved variable can be found in the file World of Warcraft\WTF\Account\ACCOUNTNAME\REALM\CHARACTERNAME\SavedVariables\WoWProFit.lua

The loading of the variable is one of the last things that happen during the initialization process. That's why we can define it as an empty table, because it will be overwritten with the saved data, if there is any.

Now we write a function that is supposed to be executed on startup.
In this function we give our LastMoney variable a value, so that we will have something to compare to on the first money update.

The function GetMoney() returns the current money of the player in copper. This means that for example 1 gold 12 silver 85 copper would be returned as 11285.

Let's give this function an Event-Handler
The <OnLoad> Event-Handler is fired on initialization, just as we need it.

We don't want our frame to be too long anymore, so we write a function that sets the width of our frame so that it perfectly fits with the width of the FontStrings and Textures.
We create a local variable. This means it is only available inside this function and will be deleted after it's execution. This is a very important way to save memory.

width has a startup value of 65. This is the sum of all fix width in our frame: The button of 20pixel width, the offset of 5pixel, five times the offset of 2 pixel and three times 10pixel wide textures.

Then we add the width of the texts to the total width. You have to know that the right side of an assignment is always calculated first. That's why we can use the same variable left and right.

The function GetStringWidth() of the FontString object returns the width the text has, not the object!

We do this three times, for the gold, silver and copper FontStrings.

Finally we set the width of our WoWProFit_MainFrame with the SetWidth() function. We give it our just calculated total width as a parameter.

Now we can use this function in our OnLoad function so that the frame has the correct width on initialization.

Money Matters

Finally it's time to make the AddOn do what it is supposed to do; keeping track of profits.

We do need a event that allows us to efficently update our AddOn. The event we will use is called PLAYER_MONEY and it's fired if the user somehow changes his wealth. The problem is that this event is not "included" to our frame, so we have no event handler for it. But don't worry, we can register it to our frame.
The RegisterEvent() function registers an event for our frame. This does not create a special event handler for it, but the so called <OnEvent> handler will be executed if the PLAYER_MONEY event is fired.

Let's add the <OnEvent> handler in out .xml file and let it call a function.
<OnEvent> is executed with every event that is registered to the frame. To distinguish which one has been fired there is the variable event, which contains the event's name and is available for everything in the event handler.

We'll write the WoWProFit_OnEvent() function in the next step.

We write the function we just called in the event handler. It has to check if the PLAYER_MONEY event has been fired.
An if clause is a way to check conditions.

The if clause begins with the if, followed by a condition. The event variable contains the name of the event that has been fired. With the double equality sign we check if it equals "PLAYER_MONEY".

If this condition is true, everything between the then and it's end statement will be executed.

We want to create a new entry in the History list, if it hasn't been done yet.
This if clause checks if the variable WoWProFit_MadeProfit is not true! This means the condition is true if the variable is false. We've set this varuable false in the initialization so this condition will be true the first time there is a money update.

If the conition is true this also means there has been no update before, and therefore we want to create a new entry in the WoWProFit_History variable. We do this with the table.insert() function.

We give it three parameters.
The first one is the table variable we want to insert a new element.
The second one is the position where the element is inserted. We choose the first position.
The last one is the value that is inserted, we set it to 0 because there has not been any profit until now.

Remember that now that we have changed the History variable, it will be saved with the new values if the player logs out!

Now that we definitely have a individual entry for the current session in our history table, we can calculate the money difference and add it to our history.
We can calculate a difference by subtracting the money we had before the change (WoWProFit_LastMoney) from the current money, which we get with GetMoney(). We save it in the local variable difference.

Now we add the difference to the current state in our history entry. The entry for the current session is the first one, as we added it above. An element of a table can be accessed with the squared brackets with a index number in between. 1 is the first element, which we need.

Finally we set the LastMoney variable to the current money, so we have the right value to compare to the next time.

All our "money variables" contain values in copper, but we want it to be seperated in gold, silver and copper. For this we write an own function.
Aww, maths... Eye

With the abs() function we calculate the absolute value of the commited parameter and store it in the variable absMoney.

Now we calculate the gold part of the money. We do this by dividing the coppers by 10000 and cutting of the decimals with the floor() function.

The silver is calculated pretty much the same, only that we divide by 100 and have to subtract the gold part in copper! Again we have to floor() it.

The copper part is the absMoney subtracted by the gold and silver parts in copper.

Now we return all three calculated values. This means we can say x, y, z = WoWProFit_ReturnMoney(money) where x would be gold, y silver and z copper.

If you did not understand everything, no problem, it's maths after all Eye Such things become clear if you begin developing your own code.

We use this function now to set the text of our FontStrings
We give our history entry to the function we've just written and save the returned values in some local variables.

We set the text of the gold FontString with it's member function SetText() to the gold variable.

It's exactly the same thing for silver and copper.

We changed our text, so it probably is necessary to change the size of the frame. Luckily we wrote a function for that, so we just have to call WoWProFit_ChangeSize().

You can try selling or buying something ingame now and you will see that the profits/deficits are displayed in the AddOn Smiling

One thing is miissing.. We don't know if we made profit or not. So we change the color of the FontStrings to green if it's a profit and to red if it's a deficit.
There are only two really new things here. The condition after the elseif statement is only checked if the conditions of the previous ifs or elseifs were false.

Same thing with the else statment only that it doesn't take a condition. It will be executed if everything before failed.

Oh and SetTextColor() sets the color of the text of the FontString. The parameters are r,g,b and it works like the <Color> tag Smiling

Money Matters II

Only one thing left, we want the AddOn to print the all time profit/deficit of the character in the chat window by clicking on the blue button.

We create an event handler for the button in our .xml file.
The <OnClick> event handler executes if the player clicks on the button.

Let's write the function in the .lua file. First o all we calculate the all time value with a loop.
We create a variable called alltime and set it to 0.

The loop we use is a so called for loop. The way we use it, it goes through every single element of a table.
The statement for initiates the loop. the function pairs() returns the key and the value of the table given in it's paramter element by element.
The key, whch is the index we used before to access the frst element, wll be saved in the k varuable.
The value is what the element contains for this key. It will be saved in v.

Now we can add all the values to our alltime variable.

After the loop is finished we have a variable that contains our all time profit or deficit.

We can use our previously written function to sperate this value to gold, silver and copper.
We use our WoWProFit_ReturnMoney() function to fill the local gold, silver and copper variables.

We check if we have a profit or a deficit and display a corresponding message.
If the value is negative it means we have a deficit.

DEFAULT_CHAT_FRAME is an object just like the Buttons or FontStrings we created ourselves. This one is a standard in the game and represents, how could it be different, the default chat frame. It has a member function called AddMessage(), which allows us to add a message to the chat frame.

The function takes a string as a paramter, and in this string we can use so called escape sequences. The one we use is to change the color of a particular part of the text. "|cFFFF0000" makes the folllowing text red. The values following the |c are a color code in hexadecimal notation (more information here).
The first two digits are the alpha value. The following six are for red, green and blue.

The sequence "|r" resets the color to default.

If we have a profit (else) we display a green "profit".

Finally we display the value.
We use the previously created gold, silver and copper variables to show a nicely colored output. Yellow for the gold value, grey for silver and something brownish for copper.

Well done! You've completed the developing of your own WoWProFit AddOn Smiling


What Now?
Now that you've finished this guide and have written the AddOn you should have learned enough to start programming your own AddOns, so be creative, think about what the WoW-Community could need and go to work.

There is only one problem, and that is that you can't possibly know anything you need just by following my guide. For this reason I will give you some links and ressources that helped me a lot when I learned about AddOn writing.

If you have no idea what you could do with your new knowledge you could try to imporve the WoWProFit AddOn, as it has some flaws:
The all-time deficit thing does not make much sense, as you might have noticed. If you use it from the creation of a character it would just show you your current amount of money Eye
You could try to change it so it only shows the last ten history elements. Furthermore you could implement slash commands for it. Or just completely redesign it. Do whatever you like with it, it's completely yours!
If you did improve the AddOn somehow I'd be really happy if you could somehow accord it to me.

Something Missing?

I'm really sorry to tell you but there are some pretty elementar things not explained in this guide. For example I did not explain how to implement slash-commands (/whisper stuff) and hotkeys.

You will have to work this stuffe up on your own. This should be no problem with sites like wowwiki.


Here is a short description on how to get the World of Warcraft internal images and how to get their paths.

First of all you need to get Blizzard's World of Warcraft AddOn Kit. You can get it from this page: Blizzard Support

Download the file for your system and install graphics package. After the installation is finished you will find a new folder in your World of Warcraft root folder called "Blizzard Interface Art".

This folder contains files of the type .blp. You won't be able to open those files with most of your standard image viewers.

The program I recommend you to use is XnView. It's a powerful and free image viewer that is able to display .blps in pretty high quality.

Now you can look at the images available for your use. The path you have to use in your AddOn is "Interface\" plus the path relative to the "Blizzard Interface Art" folder. The ".blp" ending has to be left away.

For example the file "Blizzard Interface Art\BankFrame\UI-BankFrame.blp" would be "Interface\BankFrame\UI-BankFrame"

by Jahwo

If you want to use this guide or parts of it on WoW-Pro extern websites, please be so kind to ask me first.

Making Macros - General Information

Hello all.

I'm writing this guide to help you in creating those useful things that macros are.
Some of you could even have no idea of what macros are, so we'll start from the beginning.

Open your menu panel(press esc).
Now open macro panel(notice that we have general and character's specific macros, in two different tabs).

Press new.
Now choose a icon you like.
Press ok.
If we choose the question mark(the first icon)the button we'r gonna create will show us which spell will be casted when we press it, but we'll see this later.

Let's start with something classic:

1) Hello WorldOfWarcraft!
We'll learn how to yell that short sentence.
Write in the box at the bottom of the panel the following instruction:

/y Hello WorldOfWarcraft!

Now drag the icon of the macro into one of your bars.
Click on it...and that's all.

We could also make a macro to make our character make any emoticon; just create a new macro and type:
or similars.
If we typed this:
in the same macro, our char would yawn and lay down at tha same time.

For spells and ablities it's very similar: we have to add the command /cast.

2) Cast a spell or ability
Create a new macro and choose the question mark as icon.
I suggest to choose that, usually, so we'll be always able to see the cooldown of the spells that we link to this macro.
Write in the body this instruction:

Now open the spells and abilities panel and shift click the spell you wanna link to the macro.
We'll see the spell's name appear near the instruction /cast, complete of it's rank.
Drag the icon of the macro into one of your bars.
In this way the macro will be always linked to the spell or ability we have choosen and of the rank we have choosen.
To make the rank grow up as we learn higher ones from the trainer, simply remove the rank of the spell from the macro.

Now we'll see something more interesting, don't worry.
You'll be probably thinking that I didn't talk about yawning and sleeping at the same time only because I like roleplaing, and you are right.
Unfortunatly, due to the global cooldown, it's not possible to cast multiple spells at the same time, but there are some little triks that can be found out.

3) More actions at one time
This is very important for classes that have abilities that work "on the next meele attack"(if you have some, you understand of what I'm talking about).
Create a new macro like this:
/cast #ability that works "on the next meele attack"#
/cast #instant attack#

Choose carefully the instant spell, we might want it with a very low cost in mana(rage or energy) or with a particolar effect.
In this way the two abilities will be casted at the same time.

If your class doesn't use such abilities, you can use this kind of macros to allert people that you are going to cast a particular spell or other funny sentences:
/cast #choose spell#
/Gimme time, mon, gimme will be casted

So you'll say this sentence while casting.

4) Castsequencing
We can also link more than one spell to a macro in a different way: using the commad /castsequence
Use this carefully, because we won't be able to use the second or third(and so on) spell, before using the first ones.
Create a macro in the usual way and choose the question mark as icon.
In the body write this:
/castsequence #spell 1#, #spell2#, ..., #spelln#

It is very important that we write exactly, or it won't work.
Now move the icon to one of the bars and start clicking in it, so you'll see how it works.

We can set some conditionals to the macro.
All conditionals are innested between commands and spells, in this way:
/cast [conditional] #spells...#

5) Reset
For example we can make the castsequence restart every time we have a new target
/castsequence [reset=target] #spells...#

(yes also the square brakets)
or every ten seconds
/castsequence [reset=10] #spells...#
(we can change the number of seconds as we like: two minutes are 120 seconds)


a_ /target
If we want to target Snowflake, for example(sorry Snowflake, I couldn't resist, your nick is too beatifull):
/target Snowflake

Then u can add the other part of the macro:
/target Snowflake
/w What a beatifull nick!!!

b_ conditional
Target can also be a conditional.
For example:
/cast [target=Snowflake] #spell#

will cast the spell only if Snowflake is our actual target
[target=heal] will cast if target is friend
[target=combat] will cast if the target is hostile
[target=nocombat] will cast if the target is not hostile(neutral or friend)

c_ target commands
/assist ---> targets our target's target
/cleartarget ---> leaves us without target
/targetenemy, /targetfriend ---> does what it sais
/targetparty, /targetraid ---> targets our party/raid members one after the other.
/targetlasttarget ---> does what it sais

We can always add "target" at the end of the object we are gonna target, to get it's target.
For example:
/target Snowflake ---> will target Snowflake
/target Snowflaketarget ---> will target Snowflake's target

7) Modifiers
It's better to explain with an example:
/cast [modifier:shift] #spell1#; [modifier:ctrl] #spell2#; [modifier:alt] #spell3#; #spell0#
this will cast spell1 if we are pressing shift when clicking on the macro button, #spell2# if we are pressing ctrl, #spell3# if we are pressing alt, #spell0# if we are not pressing any key.

Cool Stances
Stances work exactly as Modifiers:
/cast [stance:1] #spell1#; [stance:2] #spell2#; ...; [stance:n] #spelln#; #spell0#
but insted of button pressed it keeps trak of the stance we are if we are a warrior, the form if we are a druid, and so on.

9) Trinkets and general items
Very easy:
/use #Item-Trinket#
It can be used toghether with oder commands, as usual:
/use #Item-Trinket#
/cast #spell#

10) Equip
Very easy, too:
/equip #Item#
but we need to talk a little about this.
We can change weapon in combat(only the weapon), but there will be the global cooldown, before we can cast anything but spells that work "on the next attack".
So we can choose to equip the best weapon with the best stats for the action we are gonna do.
We can have some problems in this, if the bonus stamina of the weapons is different. In fact, swiching from a weapon with more stamina, to a one with less, means losing health.
Same for intellect and mana.

It's all, for a while.
I'll test the macros I have for myself and I will soon add some here, but you'll better try some for yourself, as no macro is better than another, you only need to find yours.


How to make a macro

First, how is made a macro?

1) Ingame, type "/macro" or "/m" to open up the macro menu. Now you have 2 macro tabs. "General" and "YourCharacterName" macro. You can have up to 36 general macros that are shared between all your characters on the server and up to 18 macros only for your character.
2) Select the appropriate tab and click on "New" button at bottom right of the window.
3) Now you you must enter a name for your macro and choose an icon. You can select a colorful icon that will always show up or the "?" icon that will change depending of the "active" spell.
4) Click on "Okay" button.
5) Select the new macro in the list and click in the text area at bottom of the window. Macros can be up to 255 characters long (but there is a way to bypass this, see /click command).

Now, how does a macro work?

Macros are fairly simple. They are made of 3 parts:

- Command
- Conditions
- Object (Spells/Abilities/Items)

It starst with a "/" followed by a command, then conditions (separated by a ",") in between "[ ]", then the name of the spell. If there is more than one spell you want to cast with the same command, you separate their conditions/spell with a ";".
You can have more than one set of conditions for each spell, so if the first set of conditions are not true, it will check the 2nd set, then third, etc. If none are true, it will then go the next spell (if there is one) and check conditions the same way.
Do not add a ";" at the end of the macro, it would just cause bugs.

Might sound complicated, so here is a pattern and an example:
/command [condition1_1,condition1_2,condition1_3][condition2_1][condition2_2] Spell1; [condition1_1,condition1_2][condition2_1] Spell2
/cast [harm,nodead] Smite; [help,nodead][@player] Renew
(will cast Smite if your target is hostile and alive else will cast Renew if your target is friendly and alive, else will cast it on you)

Note: A macro will always read condition set in order. If the first spell condition is met, it will cast that spell, no matter what conditions are after.
Comon mistake made by people is to break down their conditions.
/cast [mod:shift][@mouseover] Power Word: Shield; [@mouseover] Renew
This is bad because now PW:S and Renew both have same condition (@mouseover), so PW:S will always be cast and Renew will never.
What he wanted to do was
/cast [mod:shift,@mouseover] Power Word: Shield; [@mouseover] Renew
Macro facts:

- Macro can't pause.
- Macro can't check for buff/debuff.
- Macro can't check for rage/energy/mana/focus/runic.
- Macro can't check for cooldowns.
- Macro can't play the game for you.

Toggleable Abilities
You can add a "!" in front of a spell name to prevent it from toggling off.
Example: /cast !Ice Block (will prevent you from turning off Ice Block if it is already active).

Spell Rank
By default a macro will cast the last rank of a spell. But you can add "Spell(Rank X)" to cast rank X of a spell.
Exception: Spell with "()" in their name require you to add "()" after the name.
Example: "Faerie Fire(Feral)()" because "Faerie Fire(Feral)" would confuse the game and it would try to cast "Faerie Fire" of rank "Feral" /duh.

This is using some API functions used by addons as macro. This is more advanced programming and I wont talk about it in this guide. The command is either /run or /script
Example: /run if(ShowingHelm()) then ShowHelm(0) else ShowHelm(1) end
This script will hide your helm if it is displayed, else will make it to show up.

Nilz' guide to beginner multiboxing

Table Of Contents

  1. Introduction
  2. Required/Recommended Programs
  3. Starting Off
  4. Code
  5. Conclusion


If your reading this you've probably seen videos on multi-boxing, if not just youtube multi-boxing and a bunch of videos will come up. If doing that interests you but you have no idea where to start and/or don't want waste the money paying for two wow accounts and doing nothing with them then this guide is for you!! In this guide I only focusing on using two WoW's on one(1) computer. Sorry for those who want to do more but my computer can't support them Sad.

Required/Recommended Programs

HotKeyNet - This is a free program that you can use to start multi-boing, the other one mentioned in multiboxing's guide is pwnboxer but you have to pay for it and Im trying to make this guide usable by all without making them buy products.

I also recommend getting a private server (sorry blizzard Sticking out tongue) as this will let you play for free and get used to multiboxing.

I also recommend you get a notepad program, windows and mac come with them so at least know where to look for them Smiling .

Starting Off

To start multi-boxing you have to write a code. Luckily for us some helpful soul already made a good code for running 2 WoW's on one computer. Here. Feel free to change any of the hot-keys to suit your keyboard and other needs (I no my keyboard doesn't have ScrollLock so I changed mine to CapsLock)

Now you'll also want to do things at the same time so I use this code here to make my mouse clicks appear on both screens. You'll notice in both codes one the modifiers, or buttons that you press to separate a specific action from another is "oem3" that button is the key to the left of you number one(1) of your keyboard and look like this ~ when you shift-press-it.

So lets say you've got those two codes but you still have to click on the different WoW's to put in the different usernames and passwords. No problem i came up with this little code to put it in both, the only problem is you do one you must click on the other text slot to put in the other (i.e once you put in the username you have to then click on the password text box to put in password.


These codes are good for putting in your username and password without having to click on both screens and typing them in individually. For both codes just replace "username1" and "username2" with your usernames and passwords


Those are the basics to understanding multi-boxing. Feel free to make your own code and if you feel as if they would help the community feel free to PM me them and i will add them with your name beside. Please note when making codes the =, and - are refered to as Equal and Plus, for example

< Hotkey Equal Plus >


< Hotkey = - >

It will not read that as code and therefore that command won't work. You may find a lot of useful codes on the right hand side of This Page. Thank you for reading and any feedback is greatly appreciated.

Skumball's Keybinding Guide

Skumball's Guide to Keybinding

KEYBINDS! Don't look so scared, seriously... Keybinding is abit of an artform, but once you've mastered it then you'll be a better player for it!
This guide will help you to understand what Keybinding is and why you should be doing it, and how you can get the best from it.
Even a Warlock has to learn how to setup their keybinds before they're able to roll their face across the keyboard and win everything! Sticking out tongue


Note: All content links will just navigate you on this page, all other links for other topics will open in a new tab or window depending on your browser.

What Is Keybinding?

Keybinding is the name given to a playstyle of gaming by which you activate your various spells or abilities through your keyboard keys instead of your mouse. You 'bind' a certain ability to a specific key, hence the name Keybinding. Alot of people are off-put or get scared as soon as it's mentioned, but once you look at it and understand the idea of what 's all about then you'll realise it's insanely simple! The only real effort you actually have to do, is to figure out what's comfortable for you personally, and remembering your keys and skills - which after a couple of days using basic keybinds will be second nature almost to you!

Why Keybind?
There are many names given to people who manually click their actions with their mouse buttons, 'keyboard-turner' and 'clicker' being the two most common (and least offensive) of these. Most games nowadays on the PC, focus on the 'WASD movement system' by which your W A S and D keys are for your character's movement controls - W is forwards, S is back, and A and D are turn left and right respectively, and WoW is no different! Now in general, a new gamer will often use these keys and then use their mouse to manually click all of their abilities and interactions, and everything else ingame. This may work, but it is a bad habit for the more experienced gamer.

If you use the click approach, your reaction time will for the most part be alot slower. That's because you continiuously have to look to see where you're clicking onscreen, click, and sometimes reclick the second step. This takes up valuable time and will lower your performance over a keybinder. If you use your keys to activate your abilities, they are right at your fingertips and are set out in a way where you only have to make the most minimal movements of your fingers to reach another key. Alot of people do actually know how to keybind, but very few can do it well. If you're serious about gaming, then it is an essential skill to develop!

Keybinding will help you to get the best from your gameplay performance. Faster reaction times, effortless use of abilities, and being able to integrate yourself with what's going on so your reactions to anything are all second nature! This in turn will help you to become a better player, both in PvE and PvP! Anyway, on with the show...

Back to the top!

How To Keybind

I'll cover 2 basic ways to do this. Firstly I'll go through using Blizzard's standard options, then also using the addon Bartender4. I would recommend that you do use Bartender, or any other Action Bar addon as they provide so much more functionality in terms of the use than Blizzard's standard interface. I'll use Bartender4 as the example as it's what I use as I feel it's the best of them all. If you prefer another though, then use that instead by all means. The overall result is the same anyway, different addons will just have different methods of getting there Smiling I will also advise to read both parts of this section, as some things do apply to both the Blizzard method, and Bartender's.

Also at Jyambi's recommendation, I have included a section on Dominos too. My knowledge of this addon and experience using it is very low though so don't expect a miracle from it Sticking out tongue If anyone else though would like to help and contribute their knowledge of Dominos then I would be more than happy to include it in the guide Smiling

Keybinding using Blizzard options

Using the standard method and Blizzard's interface has got to be one of the easiest ways to set up your keybinds. All you have to do is press the Esc key (Escape) to access the ingame menu, and go into the Key Bindings option. Simple eh? Beforehand though I recommend (if you haven't already) that you enable your extra action bars. To do this, Press the Esc key and go into the Interface option. Once in there make sure your in the Game tab at the top, and go to the ActionBars option, and check/ tick/ enable the boxes for Bottom Left Bar, Bottom Right Bar, Right Bar 1 and Right Bar 2. If you want also you can do the same for the Always Show ActionBars option next to those bar options.

Ok, once you're in the Key Bindings menu, all you have to do is find the specific function you want to bind, press the buttony box thing under the Key 1 column, then press your desired key or combination of 2 keys (this is called using modifier keys, which we'll discuss below) and that's it. Repeat for all you want to bind and then press Okay at the bottom and your done! The specific things you want to bind though come under Action Bar Functions on the right, so you may have to scroll down a little to find it.
Here's what you want to be looking for to bind:

Exploring that Key Bindings option yourself you'll find a ton of other stuff to do and bind, we'll cover that though further down in this guide. Though feel free to experiment on your own Smiling
And don't worry if you make a mistake, if you press the Reset To Default button at the bottom right, it will reset all of the bindings back to the default version so you can start again from scratch. Note down though somewhere what your new bindings are, just incase you ever do have to or accidentally reset it and want to keep them. Remember too, at the top right is an option that if checked will enable you to have different key binds for each of your characters!

Once you have bound your buttons to your desired keys, then all you need to do is put your spells from your spellbook onto your action bars wherever you want so they are bound however you want, simple and very effective! You're done! Smiling

Back to the top!

Keybinding using Bartender4

First off, if you don't have Bartender and would like to try it out, here are 2 links for you to download it. All installation instructions are on those sites also, so there's no real need for me to explain them here Smiling

Using Bartender for your action bars is somewhat easier to setup with your keybindings, but because it also involves seting up the addon and layout and such also, it may seem a little tedious. My advice would be to download and install the addon, then set it up with positioning and layout and such ingame before moving onto your keybinds. Once you have your layout for it set up though, it really is easy! Simply type /bt4 into your chat and hit enter, which will bring up the Bartender interface. At the top right there will be a button labelled Key Bindings. Once you press that a new info box will replace the UI giving you instructions on how to set your keybinds. All you need to do is hover your mouse pointer over the button you want to bind, and press your desired key... Job done! Laughing out loud

If you make a mistake though don't worry, you can clear a button's binds by hovering over it and pressing the Esc key, or you can go through the ingame menu and reset all your bindings back to the default, as described above.

Yes my bindings do look strange on those Bartender images, but there is a reason for that which will be explained further on.

Back to the top!

Keybinding using Dominos

Dominos is very similar to Bartender, the only difference being is that you have to go through the ingame menu like you would to get to the Blizzard interface, but then go into the Interface menu and then go to the AddOns tab. Find Dominos on the left menu and then on the right there will appear a button like in Bartender. Then, the process is exactly the same as Bartender's... And because I'm a lazy git and can't be bothered to copypasta copy+paste, ya gotta scroll up Sticking out tongue
"Oh the effort...!"

Back to the top!

How To Play Using Keybind

The key to keybinding is to still use your WASD movement system, along with your mouse. The ideal tactic is to use your right mouse button to turn your character and move and strafe with your other movement keys. When you hold down the right mouse button, your A and D keys will make you run left and right in a straight line, rather than turning on the spot. This gives you alot more freedom of movement, faster turning, and more speed in reaction times doing so. Then with your free fingers on your key-hand, you'll activate and use your abilities that way.

At this point if you are new to keybinding and mouse-turning, I suggest you go and practice this first to get used to it. Find yourself a tree, a mailbox, target dummy, or even a random other player just standing there who you can annoy Sticking out tongue What you want to do is hold down your right mouse button, run sideways with A and D, and move your mouse so that you pan the camera around and turn your character. Then try running the opposite way to what you just did, switch it up - go one way then the other then back again, try jumping while doing it and moving your mouse faster in your turning direction to rotate on the spot... 360 JUMP FTW! Trust me, this will actually help you! The eventual goal is that you're able to run in a tight circle and maneuver around one spot with ease.

Once you feel comfortable using this technique to move, then you can start working in your keybinds. you should have your keybinds setup so that they are within easy reach of your fingers on the keyboard. Find your comfort zone and position on the keyboard, and bind your abilities to that zone. Here's a basic diagram to show exactly what I'm talking about with my comfort zone:

As you can see, my movement keys and space bar (Jump) are left white, as are Caps Lock and Esc and the Windows key, this is because they will stay within their origionally functionality. The surrounding keys that are green are the keys that I feel are within easy reach for me, and so I will bind my most used abilities to those keys. The keys that are orange may be in my reach, but I do have to conciously make the effort to hit those keys, on these I would bind my lesser used abilities, but ones that would be important to me when I used them. The keys that are red are out my reach and so I wouldn't use those.

Once you have decided and set your keybinds, I suggest practising them in any way you can, but one that doesn't mean go straight into a raid or arena for example, you need an environment where there is no strees and no major problems if you mess up a few times. Try out running around target dummies hitting your abilities, duels, Battlegrounds are also a great place to get to grips with new changes you have made to your setup. Also, I found this addon pretty helpful when starting out my keybinding adventures... What it is, is a small almost minigame or quiz that will pop up a skill to use, and you hit your keybind for it and it will score you. It's a great way to practice when your sat in Iron Forge or Orgrimmar or Dalaran doing nothing... Don't deny it, I know you do it too! Sticking out tongue

The major thing is to have a setup where that you feel comfortable using, and practise. Lots, and lots of practise. Then abit more too Sticking out tongue Eventually, everything will seem second nature to you and you will barely have to think to do something! It's all about improving your reaction and respone and the timing of those to events that happen. 10 minutes a day for 3 or 4 days and you will be well on the way to getting the feel for it and can add more complicated things into it or more bindings and improve some more! Smiling

And here's some words of very wise wisdom from Jiyambi:

I'll also badger Jiyambi into sending me a screenshot to included here so you can see fully what is meant Sticking out tongue

Back to the top!

Keybinding Extra Info

Here's some more info that will help you further with your keybinding.

Using Modifiers

Using a regular keybind, you just press one key to activate the ability, using a modifier you press 2 keys together. The most common modifier keys are Alt, Ctrl[/], and [i]Shift. Using these you open up many new combinations and possibilities. Lets say for example, you have 12 keys binded in your setup. Now, by having another bunch of bindings the same, but all with the Ctrl modifier also, then that's another 12 available options for you to use. If you do the same with Alt and Shift then that gives you 2 more groups of 12, totaling 48 possible keybinds!

You have to be careful of one thing though, you need to setup your bindings so that they don't conflict with any of your macro's that you may have. I won't explain what a macro is or anything like that here as macro's are a massive topic in themselves. There is however a guide located here on macro's should you need it.

If for example you bind a skill to the R key, and want to also use Ctrl + R as another bind, you can. You have to make sure though, that if any of your normal or modified keys have a macro in another version, that if that macro has any modifier keys in it then they aren't in use for your keybinds. If they are, either your keybind or the macro won't work.

Safe version:

Unsafe version (one won't work at all):

If you do this, spells take priority over macro's so in this example you would be able to cast your Polymorph normally, but if you had any spell bound to Ctrl + R, you would loose the modifier function of your macro. This is something that not alot of people know and get caught out on, so take care when setting up your keybinds and macro's and you'll be fine Smiling

Extra Mouse Functions & Other Extras

There are many more ways you can improve your performance to go along with keybinding, one of the main ways is being able to use your mouse to it's full capacity. Using your mouse to turn is one of the must-have skills you should aim to master if your looking to become a better player, but also the mouse provides even more functionality than that. There are vast amounts of numerous ways Tanks, Healers, and DPS can utilise mouseover macro's combined with keybinds to further increase their gaming ability. I highly recommend checking out these macro's if you don't know what they are, and start using them!

One major thing I will suggest also to get more from your mouse... Make sure you have more than two buttons! Most standard mice have the right and left click buttons, and a scroll wheel. For most gamers this is not enough, getting a mouse with more buttons will add alot more possibilities to your performance, and needn't be expensive... There are hundreds upon thousands of mice on the market, so you're spoilt for choice no matter the budget!

Finally, you need to make sure that the equipment you use is comfortable and easy to use. If it's not, buy, beg, or steal for new stuff! I wouldn't advocate that last one though, at least not if someone's watching Sticking out tongue You will need a keyboard that feels like it should be under your hand, and where the buttons are exactly where you like them. As for the mouse, getting a comfortable mouse is a must! Along with what I said above about extra functionality and extra buttons, it needs to be durable and solid, yet feels like it was made to fit in your hand perfectly. The keyboard is the easiest of the two to get the right one, there are many many many hundreds of them around so you have almost limitless choices no matter your budget. The mouse however isn't so easy. You can pick up a fairly cheap one that has the extra buttons and that is comfortable in your hand, but in general mice don't last that long if they aren't as durable as a nuclear bunker. My advice to you if your serious about your gaming, get yourself a good quality gaming mouse. They are more expensive than regular mice, but they offer so much more in terms of functioning, durability and comfort.

My setup consists of a Razer Lycosa keyboard, and a Razer Naga mouse. Both are designed with gaming as their main use, and I can say that they exceed all expectations I had of them! The Lycosa is insanely easy to use while giving alot of comfort and functionality. The Naga's main strong point is the sheer amount of buttons it has and the amazing possibilities it offers. Plus it's like that old 'comfier-than-anything-else-in-existance' armchair you wont ever part with, but it's a mouse! There are no restrictions that either of these put in the way of gaming, and both are built as solid as a tank so you can be sure they'll last a looong long time!

Another choice for alot of gamers is the Nostromo N52te gamepad. It's a massively functional gamepad designed with playability and comfort in mind. I don't have one so I can't comment on it much more than this, but every single review I have seen on it praises it to no-end.

Of course there are alot more options out there, and I'm not plugging Razer here, and equipment is completely down to personal preference. So I advise you to check out a few different brands before deciding. Logitec are another you should deffinately consider. And if you're worried about whether you can get used to a new piece of equipment, you can very easily. Just play with it and very soon it will feel right. For example, 8 weeks ago I was playing WoW on a laptop, with the tiniest most minimal mouse you could find. After building my new system from the ground up, the day after I was already feeling totally comfortable with the new equipment and noticing big improvements in my performance to boot!

Back to the top!

Thanks for reading and I hope this guide helps you in your Keybinding quest! Any feedback or questions are all greatly welcomed and appriciated Smiling

And remember you can always view my other posts and submissions to the community here: Skumball's Junkbox

Peace out!

* Batteries not included
** Each sold seperately
*** May contain extreeeme traces of NUTS!

User Interface Guide (UI guide)

Table of Contents

  1. Introduction
  2. How to use this guide
  3. Combat Addons
  4. Auction Housing, Gold Making and Tradeskills
  5. PvP
  6. Class Specifics
  7. Minigames
  8. Chat
  9. Buff and Proc management
  10. Map and MiniMap
  11. Unitframes
  12. Bags
  13. Quest
  14. Miscellaneous


Hello and welcome to my User Interface guide.

Remember this guide is made from MY opinion, and suggestions from all you out there is very welcome.

This guide will explain what you can do to edit your UI, by using various addons.
It will explain and show some of the ''mainstream'' addons from various groups of addons.
Don't expect this guide as being perfect as soon as its out, one of the main purposes is to add YOUR opinions and addon suggestions to the guide.
I will also add a little section with Death Knight specific addons.

List of websites, providing addon downloads:

Why do we want to change the UI?

The UI is how the whole window you play in looks and interact. Its crucial to feel comfortable with it if y ou are leveling, or if you are raiding end game content.
If you are raiding/leveling without any addons, you can be almost sure that you can improve your speed, DPS, tanking skills etc. with addons

NOTE: Installing addons can cause a high drop in FPS (Frames Per Second), and cause lag. That means that aint wise to install all the mods you come across, unless you have a nice computer.

How to use the info in this guide?

Text written in italic is the writers notes. Personal preferences, tips and tricks and so on.

Every Addon will displayed like this:

Your Favourite Addon - This is the Addon name.
Curse Download - Link to the download page.
Click here for picture! - Link to a picture of the addon.

Random text about the addon. Eventual writers note. - Addon description, tips and tricks.


Combat addons are addons which helps you during combat. That be an action bar addon helping with easy to hit keys and keybinds, or maybe a nifty boss mod.

Curse Download
[url=]Click here for picture![/url]

Bartender4 is a classic action bar which provides extra bars, the ability to move the bars, and the ability to change size and number of rows for the various bars.

Omen Threat Meter
Curse Download
Click here for picture!

Curse Download
Click here for picture!

Wondering how people can tell their DPS? Wondering how they can link your DPS in the chat box? Well. they probably got Recount.
Recount colelcts data about the damage you, your pet, your party/raid and your targets deals, and displays it in a nice frame. Not only that, but you can also get a overview of healing and debuffing.
Recount is the ideal addons for newcomers who simply wants a damage meter, but also offers a huge amount of customization for the more advanced user. That including graphs of heals, damage and DPS to name a few.
However. People looking to make a very minimalistic UI, may choose to look elsewhere for a DPS counter, as Recount consumes quite a bit of memory.

Deadly Boss Mods
Curse Download
Click here for picture!

Deadly Boss Mods is your raiding version of Questhelper. It gives you a timer for the different boss abilities, a huge warning when it actually happens, and also have a range checker for fights requiring that sort of things.
DBM, as most people call it, is my preferred raiding addon.

Many people consider users of addons like this to be worse than those without cause "They didnt have DBM in vanilla". You aint a worse player. Infact you're just smarter!

In my last version i also included BigWigs Bossmods, which might be a requirement in some guilds. The two addons do exactly the same thing, and does it equally good. Its just a matter of preference.

Power Auras
Curse Download
Click here for picture!

Curse Download

Important note! Last time i checked, SpellFlash werent working for all classes. However i do believe you can download separate addons that will work for your class if it's not included.

New to a class? New to your spec? New to your rotation? SpellFlash might be the addon for you!
SpellFlash lightens up the most effective spells to cast based on advanced calculations. Much like the newly implemented effect by Blizzard itself. The difference is:
This is not just on your special talent procs! This is for every spell in your rotation!

Again. Elitist may say you are a worse player by using this. Well. i admit it makes you sorta like a robot. Doing things like you're programmed to do them. If you focus solely on SpellFlash, you probably wont improvise at all, which is kinda like killing the fun right?
I do recommend this to the player new to his class or spec.

Curse Download

ForteXorcist is the god of all timers! It keeps track of every buff/debuff on you and youre enemies, all in a very customizable fashion. Take a look at the picture linked above. Are you i doubt when to refresh abilities? If you are, im surprised.

Curse Download
Click here for picture!

While there are many variations of combat text addons, i personally find MikScrollingBattleText far superior. Simply because the addon offers clean and easy configuration, while it still looks beautiful, and look like a wonder.

Curse Download
[url=]Click here for picture![/url]

Quartz is a casting bar addon with many extra features:

Quartz is what I call a must have addon for every caster out there.

Auction Housing, Gold Making and Tradeskills

Zero Auctions
[url=]Curse Download[/url]
[url=]Click here for picture![/url]

All credits for this addon goes to 'Zerotorescue'. For picking up Quick Auctions, and meking it usable after the 4.0.1 fixes!

ZeroAuctions is a continuation of the former king of goldmaking "Quick Auctions 2/3".
If you werent familiar with Quick Auctions, it was basically a one click post all your items or cancel all your items. ZeroAuctions does just that, except you now have to click a button/macro for every auction.

ZeroAuctions is insanely clever! You set up item groups for groups of items, and set a treshold, a fallback price, undercut price, stack size, max post count, and much more. With all this information taken into account, you can choose to post your items. All at the same time!
If you're a goldmaker without this addon, you are simply wasting precious time.

You can also use the "summary" feature, to get a complete list over your craftable items, how many there are on the auction house of that item, what they cost, and what your profit would be for making and selling this item!

The only profession ZeroAuctions has a hard time handling, is enchanting. Simply because the summary feature doesnt work the same way with enchanting, and the fact that you have to set up item groups for every single enchanting scroll as the price differences are so massive, that they cant be included in the same group!

[url=]Curse Download[/url]
[url=]Click here for picture![/url]

My favourite buy/sell addon for the auction house, when not counting ZeroAuctions.
The interface is simple, slick and useful! Another of my main reasons for choosing this addon is the insanely small memory usage!

[url=]Curse Download[/url]
[url=]Click here for picture![/url]

Probably the most well knwon auction house addon out there! Norgannons addon have been out there for ages, and is till one of the leading addons out there.

[url=]Curse Download[/url]
[url=]Click here for picture![/url]

[url=]Curse Download[/url]
[url=]Click here for picture![/url]


Class Specifics



Buff Management

Buffs is spells cast on you by yourself, or by other players.
Buff Management Addons is often displayed as a move able ''bar''. Some prefer dragging it to the top right corner, where the standard buffs where displayed, and some prefer having them above their unit frames

Power Auras Classic
Curse Download
[url=]Click here for picture![/url]

Power Auras Classic is an addon of an quite uncommon sort. When using it, you can configure different coloured pictures like swords, a skull or a shield, to show you whenever a proc/buff is active or needs to be refreshed. This can be very useful compared to be looking at your ''normal'' buff frame.

Map and MiniMap

This is the category for addons which changes the way you use your maps. There is both World Map addons, Mini Map addons and last dungeon Map addons.

[url=]Curse Download[/url]
[url=]Click here for picture![/url]

Cartographer is a world map addon which provides several features:

Atlas and Atlasloot
Curse Download, Atlas
Curse Download, AtlasLoot
[url=]Click here for picture![/url]

Atlas is a map addon, which provides maps for every dungean and raid in the game. Its highly recommend to install Atlasloot aswell, which provides the feature of viewing of all possible drops in the dungeon.
Atlasloot can also be installed alone if you don't want Atlas.

I would personally go with just the AtlasLoot. The standard map is getting updates every so often, and if its not implemented already, there will very soon be an option to view maps and even tactics for dungeons, leaving the purpose of Atlas in the dust.

Curse Download
[url=]Click here for picture![/url]

Sexymap is a minimap addon providing a lot features:

Sexymap is every so often seen as the preferres Minimap addon in the various UI's. The design is "sexy", slick, and easy configurable.

[i]Personally i find SexyMap 'distracting', although it is good looking. Im simply more of a minimalistic guy. I dont need no flashing bulbs around my minimap.

Unit Frames

Unit Frame addons is addons which totally rearrange your unit frames. you can make it minimalistic, or make it colourful and add a 3D portrait.
Unit Frame addons are for me a must because i hate the default so much.

X-Perl Unit Frames
Curse Download
[url=]Click here for picture![/url]

X-Perl Unit Frames is an addon with an insane amount of features. The frames are really nice but sometimes they can feel a little big, specially if you choose the ''3D portraits'' which places a moving picture on your frames.
You can change size of buffs and frames with a few clicks, and it's easy to navigate in the menu.

Like SexyMap i, unlike alot of my friends, find this sort of addon very, very distracting.
If you dont take your time to remove various things like targets pets targets target, it quickly takes up alot of valuable screen space! Be sure to toy around with the config menu if you choose this addon!

Curse Download
[url=]Click here for picture![/url]

Pitbull has got almost all the same features as X-Perl, including the 3D portraits.
The version of Pitbull that's out right now can be hard to configure, but if done correctly it can be really great!
Pitbull is the addon used for most minimalistic unitframe setups, which is also one of the easiest to set up.

Curse Download
[url=]Click here for picture![/url]

Grid is a very minimalistic raid/party addon, which means its often used in combination with Pitbull or X-Perlto clear some of the screen.
The idea of Grid is to use all space 100%, meaning that the whole frame for each unit, is one big health/mana bar with the option to display small debuff icons on it.
If you like your party/raid frames big you can easily adjust the size from the Grid Config Menu.
Grid also support the feature of ''one-click-casts''.

You can assign your right mouse button to cast Wild Growth if you right click on ,whoever you wanna heals, frame.

Healbot Continued
Curse Download
[url=]Click here for picture![/url]

As the title may have indicated, Healbot Continued NOT a bot. Its mainly a unitframe addon with the same feature as Grid, but many thinks Healbot is easier to use, but also opposite of course.
Otherwise its much like a normal Unit Frame Addon


Bag addons is addons which changes the look of your bank tabs/nags and your regular bags. Often a search feature is included too.
Bag addons can make it a ton easier to find items in your bags, and that is why you should install one.


WoW-Pro Addon
Info and pictures coming soon!

[url=]Curse Download[/url]
[url=]Click here for picture![/url]

Another addon with many users! Carbonite is in many ways much like Questhelper, but Carbonite also has its own map. The included map can easily be zoomed in and out to see more objectives, by using your scrolling wheel.
Like Questhelper, Carbonite Quest includes a party quest feature.

Miscellaneous (addons that didnt fit in anywhere else)

Titan Panel
Curse Download
[url=]Click here for picture![/url]

Titan Panel is an addon which creates one or two bars at the top/bottom, where different tools can be displayed. An example is the experience tool. It can display your exp per hour/level rate and much more.

Curse Download
[url=]Click here for picture![/url]

Fu_Bar is an addon similar to Titan Panel which creates bars in the top and bottom of the screen.
I found it easier to get plugins for Fu_Bar over Titan Panel, and thats why i recommend this one.
Some people may like Titan Panel more, but this one is really worth a try.


Curse Download
[url=]Click here for picture![/url]

KgPanels is an addon that can change the look of your UI completely.
With this addon you can create different panels, in which you can place different addons.
Some websites also provides skin downloads you can put in the background of your panels, or you can make your own. It is also possible to do it without a background texture.

It can be very, very hard to get kgPanels working if you havent tried it before.
I suggest you to check out This tutorial which gave me all the information I needed.

Using Steam's In-Game Browser with WoW

Any of you who use Valve's Steam might be interested in using it's in-game browser while playing World of Warcraft.

It looks something like this:

To use this feature you need to do the following.
1. Install Steam. You can download it for free from
2. Add a shortcut to WoW to your steam My Games tab. (Click Games->Add a non-Steam Game to My Games List, then wait for WoW to show up in the Choose Application dialog and add it).
3. Launch WoW through Steam, click the My Games tab and launch WoW. You must launch through here or the steam functionality will not be available in game.

While in game you can now press Shift-Tab to go to the steam menu within WoW, from here click web and it will open a web-browser, just enter the wow-pro url and go to the guide you want. I find if you go to the print friendly version it works much better as you probably wont want to stretch the browser to cover the whole screen.

Voila you can now view a web-browser while playing the game which makes using the guides here incredibly easy. It is also very handy for wowhead, wowwiki pages etc while playing as you can still see your game as you look these up.

Some notes:

The Shift-Tab key combo to bring up the Steam UI causes some issues. Firstly, it is used for a couple of things within WoW, namely switching to previous target and going to previous text edit box (if typing in prices at the AH for example). It also seems to sometimes leave WoW thinking that the shift key is held down after you go back to the game requiring you to tap shift to clear it. Not serious but annoying and would probably drive you nuts if you are tanking. To change the key that is used click File->Settings and change it from the In-Game tab in Steam. I use the Pause/Break key which I never use for anything else and is far away from any keys I do use and it seems to work perfectly).

The browser does seem to freeze every now and then, it seems to work but the view doesn't update when you scroll up and down. Just close the in-game browser and start it again seems to fix this.

WoW-Pro Leveling Addon

You are currently viewing a Wiki Page. It can be edited by anyone who is currently logged in. Before you change anything, please make sure to read our FAQ, the editing guidelines of this post as well as its comments.

Current Version: 7.3.5A
Last Update: Mar 06, 2018
Next Update: Apr 12, 2018

Still don't believe us? Check out our User Testimonials!

Basic Guide Window

Minimalist View

Dropdown Menu

Guide List

How To Install:

  1. Download the addon using the big shiny button.

  2. Download TomTom from WoW Interface or Curse. TomTom is important! Without it, you won't see the arrow telling you where to go! Get version v70300-1.0.0 or later.
  3. Unzip the downloaded files into your addons directory. (How do I unzip the file?)

    Windows 7/8 location:

      C:\Users\Public\Games\World of Warcraft\Interface\Addons

    Mac location:

      Macintosh Main HD/Applications/World of Warcraft/Interface/Addons
  4. Log into the game. In the lower left-hand corner of your character select screen, you should see an "Addons" button. Click it. The WoW-Pro addon and TomTom should both be listed. Make sure they are checked, and you're ready to go!

  5. If you have any trouble installing the guide, stop by our Addon Help Chat Room to get help!

You can also visit the WoW-Pro Leveling Addon Troubleshooting Guide, where you'll find a fix for most common issues.

Don't miss out on updates!


Have a bug to report? Want to help us update guides? Check out our community page!

The Addon Dev Team

Lead Developers:

Development Team:

Guide Writing:
  • Arixan
  • Bitsem
  • Gylin
  • Jame
  • Jiyambi
  • Kurich
  • Manovan
  • Snowflake
  • Svenn
  • Wkjezz
  • Emmaleah
  • Tubera
  • Fluclo
Guide Coding:
  • Bitsem
  • Gameldar
  • Gylin
  • Hezkezl
  • Jame
  • Jiyambi
  • Liavan
  • AyaJulia
  • Malorajan
  • Pretzl
  • Tarix
  • MagicSN
  • AyaJulia
  • evl
  • Mezput
  • moraller
  • tash
  • toobulkeh
  • Tuluven
  • Twists
  • Zidomo