MacroBank
What this addon does
MacroBank is an addon to allow you to save macros for future use.
Features
- Create macros inside the macro bank without having to create them in the main macro window first.
- Macros can be given a category to group similar macros together.
- Categories can be within other categories (Use '\' in between categories: Category1\Category2\Category3)
- Macros can also be given a description to distinguish them between other macros with the same macro name.
- Change both the macro text and icon in the macro bank.
- Save a macro from the main macro window directly to the macro bank.
- Load a macro from the macro bank to your main macro list.
- Replace an existing macro with a macro from the macro bank.
- Delete a macro from the macro bank.
- Load macro groups when swapping talents.
- Send macros to other MacroBank users.
Usage
Opening MacroBank
- Open your normal macro window (/macro)
Saving Macros into the MacroBank
- Select the macro from the main macro window.
- If you have some categories already defined in the MacroBank, select the category for which to save the macro into. (If no category is selected/defined, a temporary category will be created)
- Click Save.
Creating Macros in the MacroBank
- Select a category in the MacroBank for which to create a new macro into. (If no category is selected/defined, a temporary category will be created)
- Click Create.
Loading macros from the MacroBank to your main macro window
- Select the macro from the MacroBank you wish to use.
- Select the tab in the main macro window you wish to load the macro into (General or Character Specific)
- Click Load.
- If the Macro with the same name exists, it will be replaced, otherwise a new macro will be created if there is enough room for another macro.
Replacing macros from the MacroBank into your main macro window
- Select the macro from the MacroBank you wish to use.
- Select the macro in the main macro window you wish to replace.
- Click Replace.
Deleting macros in the MacroBank
- Select the macro you wish to delete.
- Click Delete.
Changing Categories, Description, and Names of macros in the MacroBank
- Select the macro you wish to change
- Type in the new category, description, or name of the macro in the corresponding edit box.
- Press Enter to save it. (Why not as you type? Description/Category is used in the scroll window)
Changing the text of the macro in the MacroBank
- Select the macro you wish to change.
- Type in the new macro text.
- Changes should be saved as you type.
Sending a macro to other users of MacroBank
- Select the macro you wish to send.
- Click the 'Send To' button.
- Type in the name of the user and click 'Ok.'
Notes
- Shift-Clicking spells from the spell book will not insert text into MacroBank's edit boxes. This is code defined in the spell book, and I'm not sure I want to go messing with it. (Same goes for items from your bags or equipped inventory)
- MacroBank's window normally opens to the right of your main macro window. You may move it by dragging it to another location.
Translation
Translation is done through the localization system at www.wowace.com/projects/macro-bank/localization/
One request, it'd be nice to be able to specify multiple categories to load when the spec changes.
secondary is what macros will load when you switch to your secondary talents
Character Category is what macros will load into the character specific macros
Global Category is what macros will load into the general/global macros
I'll look into multiple categories being loaded.
Minor feature request:
I'd like a button to "send" a macro to party/raid/whisper, so that I can easily share my macros with people who have not yet downloaded MacroBank.
Pasting macro text into the chat window does not work properly (because the macro is interpreted rather than pasted). I realize people on the "receiving" end would still have to re-type it or use some copy/paste addon to create the macro, but at least as the "sender" my work is minimized.
Downside is blizzard auto interprets things like %t and %f as your target and focus targets.
Might have other issues as well.
It would cause errors when it tries to load macros before setting up some variables. It was supposed to set the variables up before talent swapping stuff occurs, but for some reason your setup does talent swapping stuff first.
Now, it should (cross yer fingers) make sure it sets up the variables first, before allowing any talent swapping stuff to occur.
- Character is dual-spec *and* the secondary spec is active
- MacroBank is configured to automatically load macros based on spec
I only see the error when I first log in. It doesn't seem to happen during play.
Message: Interface\AddOns\MacroBank\MacroBank.lua:650: attempt to index field 'IconToIndex' (a nil value)
Time: 09/15/09 05:42:26
Count: 1
Stack: [string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:18: in function <[string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:4>
(tail call): ?
Interface\AddOns\MacroBank\MacroBank.lua:650: in function `LoadCategory'
Interface\AddOns\MacroBank\MacroBank.lua:452: in function `?'
...tan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146: in function <...tan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146>
[string "safecall Dispatcher[1]"]:4: in function <[string "safecall Dispatcher[1]"]:4>
[C]: ?
[string "safecall Dispatcher[1]"]:13: in function `?'
...tan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: in function `Fire'
...ce\AddOns\Dominos\libs\AceEvent-3.0\AceEvent-3.0.lua:119: in function <...ce\AddOns\Dominos\libs\AceEvent-3.0\AceEvent-3.0.lua:118>
Locals: self =
SetDefaultModuleLibraries = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:373
GetAutoLoadOptions = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:586
CreateCheckBox = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:1079
ResetAnchor = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:1063
EnableModule = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:338
modules =
}
baseName = "MacroBank"
IterateEmbeds = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:448
CreateMacroList = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:1489
LoadMacro = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:659
SetDefaultModulePrototype = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:415
MainFrame = <unnamed> {
}
DropDownFrame = MacroBank_DropDownMenu {
}
defaultModuleState = true
IsEnabled = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:457
DisableModule = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:356
EasyMenu_Send =
}
ADDON_LOADED = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:388
RegisterMessage = <function> defined @Interface\AddOns\Titan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:117
GetArgs = <function> defined @Interface\AddOns\Dominos\libs\AceConsole-3.0\AceConsole-3.0.lua:118
LoadCategory = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:627
UpgradeDatabase = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:1762
db =
}
SetEnabledState = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:430
enabledState = true
RegisterEvent = <function> defined @Interface\AddOns\Titan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:117
CreateEditBox = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:1193
Load_OnClick = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:698
SendMacro = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:511
IterateModules = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:443
SetMacroDescription = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:885
OptionsGet = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:567
ReceivingMacro =
}
SetMacroCategory = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:871
OnInitialize = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:347
RegisterChatCommand = <function> defined @Interface\AddOns\Dominos\libs\AceConsole-3.0\AceConsole-3.0.lua:59
SendMacro_ToChannel = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:541
GetModule = <function> defined @Interface\AddOns\Titan\libs\AceAddon-3.0\AceAddon-3.0.lua:222
ShowTooltip = <function> defined @Interface\AddOns\MacroBank\MacroBank.lua:825
CurrentTalents = 2
defaultModuleLibraries =
It should know what talent spec you have when you log on, and only when you actually change talent specs should it auto-load them. The only way I could replicate the error was to swap talents, and while it was casting the talent swap, I reloaded the UI.
Here's what I'm seeing with r42. Similar problem, but it gets a bit further before it chokes. Since it doesn't appear to be a conflict with another addon, is there a setting in the default interface that might trigger this state?
Message: Interface\AddOns\MacroBank\MacroBank.lua:671: attempt to index field 'StartingIndex' (a nil value)
Time: 09/16/09 16:24:43
Count: 1
Stack: [string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:18: in function <[string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:4>
(tail call): ?
Interface\AddOns\MacroBank\MacroBank.lua:671: in function `LoadMacro'
Interface\AddOns\MacroBank\MacroBank.lua:652: in function `LoadCategory'
Interface\AddOns\MacroBank\MacroBank.lua:452: in function `?'
...tan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146: in function <...tan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146>
[string "safecall Dispatcher[1]"]:4: in function <[string "safecall Dispatcher[1]"]:4>
[C]: ?
[string "safecall Dispatcher[1]"]:13: in function `?'
...tan\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: in function `Fire'
...ce\AddOns\Dominos\libs\AceEvent-3.0\AceEvent-3.0.lua:119: in function <...ce\AddOns\Dominos\libs\AceEvent-3.0\AceEvent-3.0.lua:118>
I installed this a few days ago and all is well but I was wondering about a couple things. I have only been testing this on my lowbie Mage so I'm not sure if that matters or not but...
1) When we tell MacroBank to auto-load groups when switching talents, is it supposed to completely remove the existing ones first then load the group we designated? I have about 24 "general" macros set up and I tried testing it by removing all the macros from the default macro window then log out of game and back in again. Since I am only lvl 12 on this character I just assumed that it would automatically load the group for primary spec but it didn't.
2) If you place a macro from the default macro window on an actionbar somewhere, then delete the macro from the default macro window, the icon gets removed from the actionbars. Okay, I understand that, the macro no longer exists so it is removed. But I am wondering how MacroBank deals with this when we have it set to load groups when we switch between primary and secondary talents.
If for example I had 10 macros from the general tab in default macro window on my actionbars, then I switched to secondary talent spec -- and MacroBank loads the designated group it is supposed too, what happens to the macros I originally had on my actionbars from the primary spec?
I hope you get what I am asking.
Thanks.
It does not load the talent group upon loading into the world (I might make this an option)
2) This was one of the reasons I made MacroBank. Since loading macros (either single or groups of them) will replace a macro with the same name (remember, it replaces by editing) the macro will stay on your bar.
Here is an example I use:
I have a macros named "Multi"
I setup macros for various fights
XT-002: ( I want quick targetting + marking with a triangle)
/targetexact Life Spark
/script if ( UnitName("target") == "Life Spark" ) then SetRaidTarget("target", 4) end
General Vezax: (I want quick targetting here)
/targetexact General Vezax
/targetexact Saronite Animus
Now, I load up XT macro, and put it on my bar hotkeyed to 'h'.
When I get to vezax, or some other boss, I just load up that macro, and it edits the text/icon of "Multi", and it remains on my bar hotkeyed as 'h'.
3) If you switch talent specs, blizzard swaps your bars to a completely different set of bars. Assuming you had the same 10 macros on this new bar and had the mod load new macros, they would still be there, with different text/icons.
Date: 2009-07-02 09:03:37
ID: 2
Error occured in: Global
Count: 1
Message: ..\AddOns\MacroBank\MacroBank.lua line 419:
attempt to index field 'Hooks' (a nil value)
Debug:
(tail call): ?
MacroBank\MacroBank.lua:419: ?()
...ank\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
...ank\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
[string "safecall Dispatcher[2]"]:4:
[string "safecall Dispatcher[2]"]:4
[C]: ?
[string "safecall Dispatcher[2]"]:13: ?()
...ank\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
...\AddOns\MacroBank\Libs\AceEvent-3.0\AceEvent-3.0.lua:119:
...\AddOns\MacroBank\Libs\AceEvent-3.0\AceEvent-3.0.lua:118
[C]: LoadAddOn()
MacroBank\MacroBank.lua:371:
MacroBank\MacroBank.lua:365
(tail call): ?
[C]: ?
[string "safecall Dispatcher[1]"]:9:
[string "safecall Dispatcher[1]"]:5
(tail call): ?
...\AddOns\MacroBank\Libs\AceAddon-3.0\AceAddon-3.0.lua:531: EnableAddon()
...\AddOns\MacroBank\Libs\AceAddon-3.0\AceAddon-3.0.lua:621:
...\AddOns\MacroBank\Libs\AceAddon-3.0\AceAddon-3.0.lua:607
[C]: LoadAddOn()
..\FrameXML\UIParent.lua:229: UIParentLoadAddOn()
..\FrameXML\UIParent.lua:252: CombatLog_LoadUI()
..\FrameXML\UIParent.lua:497:
..\FrameXML\UIParent.lua:469
AddOns:
Swatter, v3.1.13 (<%codename%>)
ACP, v3.1.0.17
MacroBank, v1.5
Outfitter, v4.7.3
VisualHeal, v
(ck=6a)
ID: 1
Error occured in: Global
Count: 1
Message: ...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua line 19:
Cannot find a library instance of "AceGUI-3.0".
Debug:
[C]: ?
[C]: error()
!Swatter\Support\LibRevision.lua:47: LibStub()
...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:19: in main chunk
An interesting idea. The only problem would be how configurable does it need to be? The more configurable, the harder it will be code.
For loading vs replacing:
- Loading would be quite easy to do, as it will replace any macros with the same name, and if no macro with that name exists, it creates it.
- If we do a 'replace', we have to pre-configure each macro in the category.. to tell each one which slot it will replace. Probably via another option for each macro stored in MacroBank.
I think I can code a global vs character specific pretty easily.. I can just add another argument to the slash command. IE - /macrobank load Category_A global
An interesting idea.
I tested it briefly and seemed to work fine. The category name is case sensitive currently.
To load a category into the global section:
/macrobank load global CategoryNameHere
to load into the character section:
/macrobank load char CategoryNameHereAlso
I needed the global/char bit first, as categories can have spaces in them. I also thought about doing a single macro loading via slash command, but since categories and macros can have spaces in them...this might be problematic.
"/macrobank load char XXXX" will first try to find a macro by that XXXX name and restore the first it finds. If it finds none, then it will look for a category instead and restore all macros within it.
It'd be up to the user to ensure that there are no name conflicts.