WoW:API and scripting quirks: Difference between revisions
Jump to navigation
Jump to search
(remove deleted faq link) |
m (Move page script moved page API and scripting quirks to API and scripting quirks without leaving a redirect) |
(No difference)
|
Latest revision as of 04:45, 15 August 2023
World of Warcraft Scripting Quirks[edit]
- Slash Command
- Can be use single in the Text Mode
- Can be used in Macros
- Frames
- OnUpdate handlers are only called when the frame is visible.
- OnUpdate handles are called every frame. Use with care.
- When nesting frames, you can access the parent frame name in XML names with $parent, this is a textual substitution and cannot be used in Lua. The Lua equivalent to $parent is the GetParent() method of the frame (e.g. getglobal(Frame:GetParent():GetName().."Button") is the same as $parentButton).
- All Frames have a GetID() function which will obtain the ID specified in the XML. ID's must be positive integers enclosed in quotes: ie. id="1" or id="20"
- If you don't specify parent="UIParent" in your top-level frames, your frames won't be scaled according to the currently active UI scale. This can lead to some hair-pulling as you try to figure out why your fonts are so huge. (But, in some cases, not having that scaling might be desirable.)
- If you get no error output, but your addon is simply not being loaded, make sure you don't have a syntax error in your .xml file. A simple way to ensure that your xml is well-formed is to open it in Firefox; it will point out any XML structure errors to you. You can also check the contents of your Logs directory for errors.
- Output to the outside world
- The only file output allowed is when the UI engine saves variables before it exits or reloads. Addons use the "## SavedVariables:" header to indicate which data they wish to save.
- Functions
- x,y = GetCursorPosition(); will return the current position of the mouse with respect to the object it currently is in. This means x will be 0 if the mouse is at the left edge of a frame or button, regardless of where that frame or button is.
- x,y = GetCursorPosition(UIParent); will return the current position of the mouse with respect to the entire UI. This can be considered the absolute position..
- ChatFrame
- Trying to send colored text to other players will cause your client to disconnect. Not sure if Blizz's server is forcing the disconnect, or my client.
- Example: /tell Name |cFF00FF00Hello|r. The EditBox will show the text in green after replacing "||" with "|". Pressing enter to send the info to the server chat channel results in the following:
- "|r" causes the disconnect,
- "|c" doesn't have the same problem, but will cause the text after it not to show.
- Example: /tell Name |cFF00FF00Hello|r. The EditBox will show the text in green after replacing "||" with "|". Pressing enter to send the info to the server chat channel results in the following:
- Trying to send colored text to other players will cause your client to disconnect. Not sure if Blizz's server is forcing the disconnect, or my client.
- Variables
- If you declare a local variable inside an code block (such as an IF block), it is only available inside that code block.
- See Lua Scope for a complete description of the implications of Lua's variable scoping.