Getting started with writing AddOns The idea of picking up any programming language can be daunting , and when you have to tie your program into someone else ' s APIs it can be nearly overwhelming . Creating your own AddOn will be a difficult process for novice coders , but the end satisfaction is worth it . First Steps . These first step detail what someone might do to get started writing AddOns for World of Warcraft for the first time . What should I make . Figure out what you want your AddOn to do . Don ' t try and get into the details too much , just decide what you want the overall goal to be . I usually start by asking myself these questions : How do I make it . Research the programming environment . The following sections help with some of the various aspects of completing these first steps . Getting into the WoW API . Getting information on how the WoW UI works is critical to making your AddOn function . The World of Warcraft API has a list of functions that will give you that information . These are your building blocks , and if you don ' t have a block you need ( or thought you needed ) then you ' ll have to find another way to get information for your AddOn . Don ' t be discouraged , as with any programming language there are many different ways to accomplish your goal , so keep looking until you find a way . Getting the UI Source Code . You may want to extract the Blizzard interface files , where you can view all of the XML and Lua files that make the game ' s default UI work > This can be useful as example code and provides you with two introductory tutorials . Enable the WoW " console " . This section helps open WoW with the console flag enabled to use the WoW console , necessary for extracting the WoW interface . " C : \ Program Files ( x86 ) \ World of Warcraft \ Wow . exe " - console Open " / Applications / World of Warcraft / World of Warcraft - 64 . app " - - args - console Editing Tools . Before you can write any sort of code , you ' ll want to have a tool that lets you edit your AddOn files . All AddOn files are plain text files , meaning even Notepad will do . You can also get LUA and XML specific text editors , which will highlight syntax for you , in turn making your coding a lot easier . To review the list of tools and get one you ' d like , head to the Lua editors page . File Types . There are three primary types of files that you ' ll need to worry about with AddOn editing : TOC File . This is the file that instructs WoW in some basics about your AddOn and what other files you want loaded . Here ' s a short example of one : You can read more about what you need or can put in a TOC over at The TOC Format Lua Files . Lua files contain functional pieces of code . You may choose to only have one of these or break up your code into multiple files for a specific purpose . Here ' s a short example of one : XML Files . XML files are used to specify the visual style of your frames . More importantly though a frame allows you to easily pass events to your Lua files . Check out XML User Interface for details . Here ' s a short example of an XML file : Start Coding ! Start with the tutorials extracted by the Interface AddOn Kit . The HOWTOs here has a ton of great examples to help you learn . Don ' t be shy to dig through someone else ' s AddOn for help , just be sure to not steal code , and give credit where credit is due . Beware Lua functions and variables are globals by default and are directly visible to the other addons . If authors blindly use simple and common names , like : an addon will easily conflict with variables of the same name from other addons or from the Blizzard interface . Instead , you should write your addon more like a Lua module : place all the data and functions in a single global table , named after the addon , and use local declarations otherwise ( no other globals ) , like : For large add - ons this can get complicated , and the current version of Lua doesn ' t offer much to help . Use a full , clear , name for the global table , and assign a shorter name in your . lua files , like : Other then the global table for the addon , you may still need globals for the saved variables and the addon slash commands ( see below ) if you have any . Slash Commands . A slash command is one way for the user to interact with your AddOn . These will be the easiest way for a beginner to let the user supply command and change options . The page covers this pretty well . A Basic UI Frame . The XML User Interface page covers a lot of a great basics . SavedVariables . The Saving variables between game sessions article covers the key points . For folks new to AddOns but not other programming languages , just bear in mind that : Localization . It ' s a good idea to plan from as early as possible to have your AddOn be localizable , even if you yourself only speak one language . Review this great article for some things to think about : .