UI beginner's guide

#REDIRECT Create a WoW AddOn in 15 Minutes
This page explains some of the basic ideas behind and differences between things like macros, scripts, and addons for those who are new to using or making such things.
== Slash Comands ==
Slash commands are simple commands you can type into the in-game chat window to perform some action. For example, typing "/follow" into the chat window (without the quotation marks) while you are targeting a friendly player will cause your character to follow that player. You can get a list of some of the available slash commands using the "/help" command.
There are several types of slash commands built into the game. Some make your character do things (like /cast and /follow) while others give you information or open UI panels (like /who or /raidinfo) and others are related to chatting (like /yell or /join). There are also emotes (like /laugh and /dance), and commands to run custom code (/run or /script).
== Macros ==
Macros are basically ways to store slash commands and run them again on demand. A macro can contain just one command, or many commands, up to 255 total characters.
You can open the macro UI by typing "/macro" (without the quotes) into the chat window, or clicking on the speech bubble button next to the chat window and selecting "Macro", or by bringing up the main game menu (usually by pressing the Escape) key and clicking the "Macro" button. Each macro can have a name and an icon in addition to its contents. After creating a macro, you can drag it into your action bars and activate it by clicking on its icon.
A simple example of a macro would be:
 /cast Fireball
 /say I am frying it!
This macro merely casts a Fireball, and then has your character tell everyone nearby that you're casting it.
Another example would be:
 /cast Feral Spirit
 /cast Ascendance
 /cast Berserking
 /use 17
This macro would be used by a Troll Enhancement Shaman to cast all of their personal DPS cooldows at once and use a trinket.
An example of a macro that can do different things based on which button you use to click on it:
 /cast [button:2] Frostbolt; Fireball
This macro will cast Frostbolt if you right-click it, or Fireball if you use any other button.
Macros can be very useful, but also are subject to many restrictions to prevent automation. For example, you can't use a macro to cast more than one spell with a cast time or global cooldown at once. Adding a second "/cast Fireball" line to the first example macro above wouldn't make the macro cast Fireball twice. The second example macro can cast all 3 spells and use a trinket at once because only one of those actions (Feral Spirit) has a global cooldown, and none of them have a cast time.
See also The Blizzard World of Warcraft UI & Macros Forum (EU) and Making a macro.
== Scripts ==
Scripts are small computer programs that can manipulate objects that exist outside the script. Scripts are usually written in a scripting language, which is designed so that users can quickly write these small programs in a flexible way. The World of Warcraft client embeds a powerful scripting language called Lua, and offers a wide array of functions (called an API, or Application Programming Interface) for scripts to use to perform many actions beyond what are availble with simple slash commands.
Very small scripts can be run directly from the chat window using the /run (or /script) command, or embedded in a macro. Here's an example:
 /run if UnitIsGroupLeader("player") then SendChatMessage("I am the group leader!", "SAY") end
This script is very simple. It checks whether you are currently the leader of a group, and if you are, sends a message to the /say channel informing everyone around you.
However, scripts can also be much larger and more complex, performing many actions automatically, or adding new elements to the user interface. There is a quite extensive list of all the API functions available for use in scripts at World of Warcraft API.
Like macros, scripts are subject to many restrictions to prevent automation. For example, a script can't automatically cast a Fireball when you target an enemy, or automatically dispel group members when they are affected by a debuff. These types of actions are classified as "secure actions" and can't be done without some action from the user, such as pressing a key or clicking a button. These restrictions are designed to prevent players from "botting" or having a script play their character for them.
== AddOns ==
The World of Warcraft user interface is fully customizable, modifiable, and extendable. This is completely legal, and is encouraged by Blizzard. AddOns are also sometimes referred to as "user interface modifications", "UI mods", or just "mods" but all of those terms mean the same thing.
Addons come in the form of a folder containing several files. They are installed by placing this folder, and all the files it contains, inside the World of Warcraft\Interface\AddOns folder. Addons can include several different types of files:
* TOC (Table Of Contents) files end in a ".toc" extension and tell WoW which files to load in which order to run the addon. They are plain-text files, and can be opened in Notepad or any other text editing program.
* Lua and XML files end in ".lua" and ".xml" extensions, and contain the actual scripts and UI definitions for the addon. They are also plain-text files.
* Files ending in ".tga" and ".blp" extensions are images, and may require special software to view outside of WoW.
* Files ending in ".mp3" and ".ogg" extensions are sounds, and may require special software to listen to outside of WoW.
Addons may also include text files with extensions like ".txt" or ".md" -- these files are not used by WoW at all, but are included to provide information about the addon to users (such as a README file, or a file describing the changes between versions) or to keep track of information by the addon's creator (such as a list of bugs that need to be fixed).
=== A warning about executable files ===
Addons do not include executable files with extensions like ".exe" or ".bat" -- WoW cannot do anything with these files, and they have the potential to do bad things to your computer, like install viruses or delete all of your data. You should be very careful with any such files. Only run them if you absolutely trust their source. Examples of non-malicious uses for executable files related to addons include:
* Programs to automatically install addons to the right location on your computer, and check for new versions. The Curse Client and the WoWInterface Minion are two trusted programs of this type.
* Programs to upload data saved by addons from your computer to a website. An example of this type of program is the Wowhead Client, which uploads information such as the in-game locations where you have seen objects and monsters to Wowhead.com.
Again, you should be very cautious about running any executable programs. There are many websites that claim to offer addons or automatic updaters, but actually download malicious programs onto your computer that may attempt to steal your login information. Only download executable programs from websites you know and trust.
=== Where to get AddOns ===
The two most popular addon websites are Curse and WoWInterface. These sites host thousands of addons written by hundreds of programmers. Some addon creators may also run their own websites with additional features like custom forums or image galleries.
Most addons are single programs with a specific focus. For example, Recount is a popular addon that keeps track of how much damage and healing each member of your group has done, and displays that information as a list of bars on the screen. Bagnon is another popular addon that shows the contents of your bags all in one window. There are also addons that will automatically sell your gray items when you visit a vendor, alert you when your cooldowns finish, show you timer bars for boss encounters, keep track of auction prices over time, and do many, many other things.
You will also find many packages containing multiple addons. These are commonly called "compilations" or "premade UIs" and range from a bundle of helpful addons for raiding, to complete suites that replace the entire user interface. Some compilations are made of individual addons that can be run by themselves, while others are designed to work as a unified whole and can't be split up.
As a new addon user, it may be tempting to start with a full compliation, but be careful not to end up with dozens of addons you don't know how to use, or maybe don't need at all. You may be better off starting out with just a few individual addons, and getting comfortable with them before adding more.
=== How to make your own AddOns ===
Most of the addons you'll find on popular addon websites are written by regular users, not professional programmers. Lua is a very easy scripting language to learn, and there are lots of resources to help explain the WoW API.
Good places here on Wowpedia to look for more information:
* Interface Customization
* World of Warcraft API
* AddOns - a guide on how to create an addon from scratch
* :Category:HOWTOs
== See also ==
* The UI FAQ
* The AddOns primer
* :Category:AddOns
* Interface Customization
== External links ==
Category:Interface customization
Category:FAQs
Category:UI