World of Warcraft AddOn Creation Tutorial

#0 - April 17, 2007, 10:12 p.m.
Blizzard Post
Things you need:

World of Warcraft Interface AddOn Kit

Windows: http://ftp.blizzard.com/pub/WoW/other/InterfaceAddOnKit_Win.zip
Mac: http://ftp.blizzard.com/pub/WoW/other/InterfaceAddOnKit_OSX.zip

World of Warcraft supports the ability for players to create modules that extend the game's user interface. These modules are called AddOns. The interface of World of Warcraft is built from XML files which describe its look and layout, and Lua files, which contain scripting functionality. This document is a short introduction into creating an AddOn that works directly with the game client. The creation of AddOns is a very technical endeavor, and you should not attempt it unless you have a good working knowledge of XML and Lua.

The Interface AddOn Kit extracts the XML and Lua files into the "Blizzard Interface Data" directory, and the interface artwork into the "Blizzard Interface Art" directory. The interface files are provided for your education, and are not supported in any way. That said, we hope that World of Warcraft provides a robust and flexible environment for your creativity.

The Basics
There are three types of files used in AddOns: the .toc, .xml, .lua.

The .toc is a table of contents for the AddOn. This file contains important header information that the WoW client reads to identify your AddOn. It also contains a list of files that are loaded in the order they appear.

XML is a mark-up language used to describe the look and layout of the interface. Custom AddOns that require an interface component will need an XML definition. Learn more about XML at: http://www.xml.com. The Interface artwork is in a .blp format, which is a proprietary format. The existing art can be converted to something viewable using third party tools. Custom artwork for AddOns may use the TARGA (.tga) format, as well.

Lua is the scripting language used to define the functionality of the interface. The manual for Lua 5.1 is available online at: http://www.lua.org/manual/5.1/manual.html .

The best way to become familiar with how Lua is used to script the interface is to look at the scripts in the XML files, denoted by the <script> tag, and to browse the Lua files. The Lua files typically contain functions that are used by the corresponding XML files.
#19 - July 27, 2007, 9:20 a.m.
Blizzard Post
This was linked in the UI Sticky compilation:
http://forums.wow-europe.com/thread.html?topicId=304192506&sid=1#0