_Dev combines many small addon development tools into one addon, similar to Iriel's DevTools addon. It includes a text-based stats display for framerate, memory, and latency; allows frames to be highlighted and tracked even when hidden or off-screen; can print data structures neatly to chat frames; includes a mouse-over frame identifier that can also outline and print details for found frames; and features a few other useful tools.
Details
- Adds the slash command “/togglemod <Name>” to toggle on and off the addon called <Name>. May reload the UI if necessary.
- Adds a key binding to open the shortest available /script-like slash command.
- Adds a key binding for reloading the user interface.
- Unescapes pipe characters (“|”) from /script commands.
- Implements table.count( <Table> ) function to count the number of elements in both arrays and hash tables.
- Implements math.round( <Float> [, <Precision> ] ) function to round a given <Float> number to one with <Precision> decimal places.
- Shrinks the console font size to 12pt.
- Disables the console key unless <CTRL> is held, allowing tildes (“~”) and grave accents (“`”) in the console and other edit boxes.
- Fixes poor performance when printing many lines to the chat frame at once, making calls to _Dev.Dump exceptionally fast. Thanks to Drundia for the idea and permission to use the fix from his “Fix ScrollingMessageFrame Lag” addon.
Dump
Outputs a detailed view of a data structure to the default chat frame in a format similar to Lua. Note that Dump has no support for printing vararg functions; they must first be enclosed in tables.
- Adds the slash command “/dump <Expression>” to dump the result of executing any RValue <Expression>.
- Implements dump( <Value>, <LValue> ) to print <Value> with the title <LValue>. To demonstrate the use of <LValue>, the call dump( ChatFrame1, "ChatFrame1" ) would produce the results found in the second example screenshot below.
- Optionally escapes all pipe characters and non-printable bytes found in printed strings.
- No infinite recursion: If a table is encountered more than once, the second instance will display as a reference to the first.
- Recognizes UIObject tables and prints their names and widget types accordingly.
- Optional protective limits for execution time, table length, string length, and table nest depth.
- Optimized for fast execution speed.
- Can optionally avoid recursing into the global environment _G variable.
Outline
Allows frames to be outlined to track their positions and boundaries, even when hidden or off-screen.
- Adds the slash command “/outline [ <Frame> ]” to toggle <Frame>'s outline on and off, or remove all outlines if no frame is given.
- Implements outline( <Region> [, <DefaultName> ] ) to toggle <Frame>'s outline. <DefaultName> specifies the name to print in case the region has none.
- Multiple colors for multiple outlines helps tell frames apart.
- Frames cannot be outlined more than once at a time.
- Borders are always visible, no matter where the target frame is or what it's under.
- For frames that go off-screen, a tracking arrow appears at the screen edge to point at it.
Stats
Adds a small transparent string of stats to the top left of the WorldFrame. This display includes framerate, latency, and total interface memory consumption.
Events
Adds an “AddOn Messages” sub-menu to the chat frame tab dropdown to enable the display of escaped CHAT_MSG_ADDON events. These addon messages look similar in format and color to their corresponding chat channel messages.
Frames
A spiritual successor to Itchy's FrameFinder addon from long ago, Frames highlights the frame focused under your mouse. This incarnation, however, is designed to not cripple gameplay while active. In addition to identifying mouse focus frames, this module also implements Dumping and Outlining said frames with mouse clicks.
- Adds a key binding to toggle frame highlighting.
- Adds the slash command “/frames” to toggle frame highlighting.
- Hold <ALT> to enter interactive mode, where the highlight cannot be moved, but can be explored using the mouse buttons.
- Left click to Outline the frame.
- Right click to print a summary of the frame's name along with its parent's name.
- Middle click to Dump the frame's table.
Options
All of _Dev's and its modules' options can be configured through the _Dev pane in the Interface Options menu. Use the slash command “/dev” to open the options pane directly.
Installation Guide
- Exit "World of Warcraft" completely
- Download the mod you want to install
- Make a folder on your desktop called "My Mods"
- Save the .zip/.rar files to this folder.
- If, when you try to download the file, it automatically "opens" it... you need to RIGHT click on the link and "save as..." or "Save Target As".
- Extract the file - commonly known as 'unzipping'
Do this ONE FILE AT A TIME!
- Windows
- Windows XP has a built in ZIP extractor. Double click on the file to open it, inside should be the file or folders needed. Copy these outside to the "My Mods" folder.
- WinRAR: Right click the file, select "Extract Here"
- WinZip: You MUST make sure the option to "Use Folder Names" is CHECKED or it will just extract the files and not make the proper folders how the Authors designed
- Mac Users
- StuffitExpander: Double click the archive to extract it to a folder in the current directory.
- Verify your WoW Installation Path
That is where you are running WoW from and THAT is where you need to install your mods.
- Move to the Addon folder
- Open your World of Warcraft folder. (default is C:\Program Files\World of Warcraft\)
- Go into the "Interface" folder.
- Go into the "AddOns" folder.
- In a new window, open the "My Mods" folder.
- The "My Mods" folder should have the "Addonname" folder in it.
- Move the "Addonname" folder into the "AddOns" folder
- Start World of Warcraft
- Make sure AddOns are installed
- Log in
- At the Character Select screen, look in lower left corner for the "addons" button.
- If button is there: make sure all the mods you installed are listed and make sure "load out of date addons" is checked.
- If the button is NOT there: means you did not install the addons properly. Look at the above screenshots. Try repeating the steps or getting someone who knows more about computers than you do to help.
Translations
When you download a mod, please be sure that the mod is compatible with your translation of wow. Some mods only work on the US versions, while some only work on some of the various European versions. These variations are called "Localizations".
TOC Numbers (Out of Date Mods)
When Blizzard patches WoW, they change the Interface number. This means that all mods will be "out of date" unless or until the author releases a new version for that interface. Some people go into the .toc files and update the numbers themselves, but this is STRONGLY advised against as it will cause problems locating possible incompatibilities addons. When you log into WoW after a patch, you DO NOT have to delete your interface directory. All you have to do is simply tell WoW to ignore the interface numbers and load all the mods anyway. All you have to do is, while at the "character select" screen, look in the lower left corner and click on the "addons" button. A window will pop up listing all your installed mods.
If you look in the upper left corner of that window there should be a box that says "Load Out of Date AddOns". You want to CHECK this box. Now simply go into WoW normally and all your mods should load. As of the 1.9 patch, you will have to do this after EVERY patch/update that Blizzard posts! If you encounter any problems with a mod after a patch, please be sure to let the author of the mod know so they can fix it.
See also: About "Out Of Date AddOns"
Mac Support
WoW addons are not platformed based. As such, they can be used on either Mac or PC. You can extract both .zip and .rar files on a Mac using StuffitExpander.
Directory Structure
World of Warcraft
|_ Interface
|_AddOns
|_*AddonName*
|_ *AddonName*.toc
|_ *AddonName*.xml
|_ *AddonName*.lua
|_ (possibly others as well)...