SpellBinder
SpellBinder is a simple, ugly Ace2 mod that creates a GUI for the new SetBindingItem, SetBindingSpell, and SetBindingMacro functions. Simply put, it allows you to bind stuff to keys without taking up an actionbar slot.
To summon the window, use /spellbind, or set a key binding in the bindings menu.
- Click on a button on the left, then select or enter something to bind a key to.
- Click on the "Click to Set" button, then enter a key combination
- Check that the spell, item or macro name is correct, check that the key combination is correct, then click "Set Key". That's it!
1. Open file SpellBinder.lua
2. Replace line 110 by "local tabname, tabicon, offset, num = GetSpellTabInfo(tab)"
3. Replace line 121 by "if not IsPassiveSpell(spellnum, BOOKTYPE_SPELL) then"
4. Replace line 122 by "local spellname, spellextra = GetSpellBookItemName(spellnum, BOOKTYPE_SPELL)"
5. Replace line 123 by "local spellicon = GetSpellTexture(spellnum, BOOKTYPE_SPELL)"
6. Delete line 120.
7. Save file.
Using r9 version and i'm getting an error everytime i try to open spellbinder window :
1x AceConfigDialog-3.0-50:257: Method doesn't exist in handler for type order AceConfigDialog-3.0-50:257: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:199> AceConfigDialog-3.0-50:372: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:346> AceConfigDialog-3.0-50:1055: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1051> AceConfigDialog-3.0-50:1538: in function `FeedGroup' AceConfigDialog-3.0-50:1814: in function `Open' SpellBinder-1.2.1\SpellBinder.lua:29: in function `value' Interface\FrameXML\ChatFrame.lua:4127: in function `ChatEdit_ParseText': Interface\FrameXML\ChatFrame.lua:3717: in function `ChatEdit_SendText': AddonLoader-2.0\Conditions.lua:278: in function `value' Interface\FrameXML\ChatFrame.lua:4127: in function `ChatEdit_ParseText': Interface\FrameXML\ChatFrame.lua:3717: in function `ChatEdit_SendText': Interface\FrameXML\ChatFrame.lua:3755: in function `ChatEdit_OnEnterPressed': <string>:"*:OnEnterPressed":1: in function <[string "*:OnEnterPressed"]:1>
Locals: membername = "order" option = <table> { confirm = <function> @ SpellBinder\SpellBinder.lua:323: type = "group" name = "Items" set = <function> @ SpellBinder\SpellBinder.lua:286: order = "" args = <table> {} get = <function> @ SpellBinder\SpellBinder.lua:279: } options = <table> { type = "group" name = "SpellBinder" args = <table> {} } path = <table> { 1 = "item" } appName = "SpellBinder" inherits = nil member = "" info = <table> { 1 = "item" 0 = "SpellBinder" type = "group" options = <table> {} option = <table> {} uiName = "AceConfigDialog-3.0" uiType = "dialog" appName = "SpellBinder" } handler = nil group = <table> { confirm = <function> @ SpellBinder\SpellBinder.lua:323: type = "group" name = "Items" set = <function> @ SpellBinder\SpellBinder.lua:286: order = "" args = <table> {} get = <function> @ SpellBinder\SpellBinder.lua:279: } a = nil b = nil c = nil d = nil isInherited = <table> { confirm = true disabled = true set = true hidden = true validate = true func = true get = true } GetSubOption = <function> @ Ace3\AceConfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:152: allIsLiteral = <table> { descStyle = true type = true imageWidth = true imageHeight = true } type = <function> defined =[C]:-1 stringIsLiteral = <table> { image = true name = true fontSize = true width = true usage = true icon = true desc = true } new = <function> @ Ace3\AceConfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:108: MAJOR = "AceConfigDialog-3.0" error = <function> defined =[C]:-1 format = <function> defined =[C]:-1 del = <function> @ Ace3\AceConfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:126:
1x SpellBinder-1.2\SpellBinder.lua:119: attempt to perform arithmetic on local 'offset' (a boolean value) SpellBinder-1.2\SpellBinder.lua:398: in function `BuildTable' SpellBinder-1.2\SpellBinder.lua:29: in function `value' Interface\FrameXML\ChatFrame.lua:4127: in function <Interface\FrameXML\ChatFrame.lua:4054>: <in C code>: in function `ChatEdit_ParseText' Interface\FrameXML\ChatFrame.lua:3717: in function `ChatEdit_SendText': AddonLoader-2.0\Conditions.lua:278: in function `value' Interface\FrameXML\ChatFrame.lua:4127: in function <Interface\FrameXML\ChatFrame.lua:4054>: <in C code>: in function `ChatEdit_ParseText' Interface\FrameXML\ChatFrame.lua:3717: in function `ChatEdit_SendText': Interface\FrameXML\ChatFrame.lua:3755: in function `ChatEdit_OnEnterPressed': <string>:"*:OnEnterPressed":1: in function <[string "*:OnEnterPressed"]:1>
Locals: self = <table> { SetDefaultModuleLibraries = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:381: Enable = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:313: NewModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:255: Print = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:54: EnableModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:346: modules = <table> {} GetModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:230: IterateEmbeds = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:456: IsModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:482: defaultModuleLibraries = <table> {} baseName = "SpellBinder" BuildTable = <function> @ SpellBinder\SpellBinder.lua:395: SetEnabledState = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:438: OnInitialize = <function> @ SpellBinder\SpellBinder.lua:32: enabledState = true GetArgs = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:144: Printf = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:69: UnregisterChatCommand = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:111: SetDefaultModulePrototype = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:423: RegisterChatCommand = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:85: defaultModuleState = true IterateModules = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:451: name = "SpellBinder" Disable = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:328: IsEnabled = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:465: GetName = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:298: SetDefaultModuleState = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:401: DisableModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:364: } (*temporary) = <table> { type = "group" name = "SpellBinder" args = <table> {} } (*temporary) = <table> { } options = <table> { type = "group" name = "SpellBinder" args = <table> {} } builditem = <function> @ SpellBinder\SpellBinder.lua:353: buildmacro = <function> @ SpellBinder\SpellBinder.lua:260:
-SpellBinder-1.2\SpellBinder.lua:398: in function `BuildTable'
SpellBinder-1.2\SpellBinder.lua:29: in function `value'
Interface\FrameXML\ChatFrame.lua:4127: in function <Interface\FrameXML\ChatFrame.lua:4054>:
<in C code>: in function `ChatEdit_ParseText'
Interface\FrameXML\ChatFrame.lua:3717: in function `ChatEdit_SendText':
AddonLoader-2.0\Conditions.lua:278: in function `value'
Interface\FrameXML\ChatFrame.lua:4127: in function <Interface\FrameXML\ChatFrame.lua:4054>:
<in C code>: in function `ChatEdit_ParseText'
Interface\FrameXML\ChatFrame.lua:3717: in function `ChatEdit_SendText':
Interface\FrameXML\ChatFrame.lua:3755: in function `ChatEdit_OnEnterPressed':
<string>:"*:OnEnterPressed":1: in function <[string "*:OnEnterPressed"]:1>
Locals:
self =
SetDefaultModuleLibraries = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:381:
Enable = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:313:
NewModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:255:
Print = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:54:
EnableModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:346:
modules =
GetModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:230:
IterateEmbeds = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:456:
IsModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:482:
defaultModuleLibraries =
baseName = "SpellBinder"
BuildTable = <function> @ SpellBinder\SpellBinder.lua:395:
SetEnabledState = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:438:
OnInitialize = <function> @ SpellBinder\SpellBinder.lua:32:
enabledState = true
GetArgs = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:144:
Printf = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:69:
UnregisterChatCommand = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:111:
SetDefaultModulePrototype = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:423:
RegisterChatCommand = <function> @ Ace3\AceConsole-3.0\AceConsole-3.0.lua:85:
defaultModuleState = true
IterateModules = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:451:
name = "SpellBinder"
Disable = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:328:
IsEnabled = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:465:
GetName = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:298:
SetDefaultModuleState = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:401:
DisableModule = <function> @ Ace3\AceAddon-3.0\AceAddon-3.0.lua:364:
}
(*temporary) =
type = "group"
name = "SpellBinder"
args =
}
(*temporary) =
}
options =
type = "group"
name = "SpellBinder"
args =
}
builditem = <function> @ SpellBinder\SpellBinder.lua:353:
buildmacro = <function> @ SpellBinder\SpellBinder.lua:260:
---
r7 and r8 : u forgot the locale.xml
Time: 06/01/10 15:05:10
Count: 1
Stack: [C]: ?
...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:256: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:198>
...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:371: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:345>
...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1051: in function <...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1047>
...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1534: in function `FeedGroup'
...nfig-3.0\AceConfigDialog-3.0\AceConfigDialog-3.0.lua:1807: in function `Open'
Interface\AddOns\SpellBinder\SpellBinder.lua:30: in function `value'
Interface\FrameXML\ChatFrame.lua:3577: in function <Interface\FrameXML\ChatFrame.lua:3509>
[C]: in function `ChatEdit_ParseText'
Interface\FrameXML\ChatFrame.lua:3222: in function `ChatEdit_SendText'
Interface\FrameXML\ChatFrame.lua:3246: in function `ChatEdit_OnEnterPressed'
[string "*:OnEnterPressed"]:1: in function <[string "*:OnEnterPressed"]:1>
Locals: (*temporary) = "Method 0% doesn't exist in handler for type order"
Maybe someone who knows Lua better can take a look at the function at Spellbinder.lua line: 395 and come up with a fix.
Please fix the issue where it breaks when the character doesn't have all four tabs in their spellbook. See Ticket ID 5 for more details on this. Thank you.
On the bright side, SpellBinder doesn't do anything complicated, and if it ever stops working, we can just open bindings-cache.wtf and edit it; it's really not hard, SpellBinder was just convenient.
Is there ANY chance u make this to work for dual specs?if yes this would be pure win :):)
thx again!
I love your addon, but please support WoWMatrix.
Since Curse and WoWInterface locked them out, manually updating mixed ACE, Curse and WoWInterface addons is a real big pain :(
Thank you for your hard work! real good job!