Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
WoW
Talk
English
Views
Read
Edit
History
More
Search
Navigation
Home
Random page
Help using wiki
Editions
for WoW
for WildStar
for Solar2D
Documentation
for WoW
for WildStar
Reference
WoW
⦁ FrameXML
⦁ AddOns
⦁ API
⦁ WoW Lua
WildStar
⦁ AddOns
⦁ API
⦁ WildStar Lua
Engine
Tools
What links here
Related changes
Special pages
Page information
Site
Recent Changes
Editing
WoW:AddOn programming tutorial/Introduction
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== The .lua or Lua code file === The .lua files are where the main "what to do" instructions for the add-on reside. You will see a variety of terms for this such as logic and executable code (or simply "code"). Lua logic, or executable code or a script, does its thing in response to something that happens in the game. Things that happen in the game are called Events. ==== Events ==== There are two basic kinds of events. The first is when something happens in the game. This might be somebody saying something, something happening to your character, or another character's stats changing. Nearly everything that happens in the game causes events. The second kind of event is when you do something to a UI Element (a UI Element is something on the screen and is affectionately called a widget. We'll get to that more in the next section). This second kind of event might be clicking on something in your bags or button bar. There is a technical difference between the two types of events, and we will discuss that as the tutorial progresses. For more detail on the first kind of event see [[Events (API)]] and for the second see [[Widget handlers]]. These concepts are extremely important because absolutely nothing happens in the game except in response to an event. Furthermore, should you happen to write a piece of code that runs for an extended time (perhaps forever), absolutely nothing new will happen in the game. Your screen will be frozen and nothing will move. That would be classified as "not good". So, how do you tell WoW that you are interested in a particular event? There are two ways: first, you can tell WoW which code to run when a particular event happens. This is called registering your event. Second, you can tell the XML to run a piece of code when a UI Element is manipulated (such as clicking on it or moving your mouse over it). Pieces of code that run in response to events are called ''functions''. ==== Functions ==== Functions are groupings of code that accomplish a specific purpose. There are numerous predefined functions provided by WoW (called API functions), or you can make your own user-defined functions. While there are multiple ways to create functions in Lua, the easiest to understand looks like this: <local> function ''function_name''(<zero or more arguments>) ... code ... end *The <local> is an optional keyword that limits the visibility of the function to a particular scope. Scope will be covered in more depth shortly. *The ''function_name'' is simply a name you make up so you can reference your function from other parts of your AddOn. *The <zero or more arguments> are ways to pass information into the function. This is what gives functions their power. Each time you call the function, you can supply a different set of arguments and get different results based upon them. *The ... code ... is where the work gets done in a function. Here is where you do calculations, comparisons, call other functions, etc. to get the task of the function done. *The end simply marks the end of the definition of the function. Note that this only defines or declares the function. The function is not actually run until some other piece of code references (or calls) it. For more information on functions, see the [http://www.lua.org/manual/5.1/ Lua 5.1 Reference Manual] or [http://www.lua.org/pil/ Programming in Lua (first edition)]. Also see the [[Lua]] page which lists more Lua resources. ==== HelloWorld.lua ==== Now to continue with our Hello, World code example. Place the following into your HelloWorld.lua file and save it: function HelloWorld() print("Hello, World!"); end You should understand everything in here by now. This function is named HelloWorld and it has zero arguments. The code part is simply the 'print("Hello, World!");' portion. And it ends with "end". This is a fine piece of code, but by itself is useless unless something calls the function. Onward to UI Elements (aka Widgets).
Summary:
Please note that all contributions to AddOn Studio are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
AddOn Studio Wiki:Copyrights
for details).
Submissions must be written by you, or copied from a public domain or similar free resource (see
AddOn Studio Wiki:Copyrights
for details).
Cancel
Editing help
(opens in new window)