I'm looking for an addon that removes the 255 character limit on macros.
Optional features that would be nice -
Ability to have extra and/or infinite macros shared across the account
Ability to remove the name of the macro from the icon on the action bar (so it looks exactly like a normal spell).
That's all I need it to do. I'll keep my macros in the same macro language as what is possible even without any addons at all, but it's the character limit (and the number of macros limit) that annoys me. -.-
This should be all you need (maybe). It should stay secure this way. As for more macros, that requires a bit more complexity and possibly some tainting, which may break macros all together.
local maxLetters = 500 -- set this to the number of characters you would like
MACROFRAME_CHAR_LIMIT = gsub(MACROFRAME_CHAR_LIMIT, '255', maxLetters) -- Let's, hopefully, keep this localized
MacroFrameText:SetMaxLetters(maxLetters)
I'll have to do a little more testing to see if there's any errors of macros that actually are longer than 255 characters, but otherwise that seems to do the trick. Thanks!
Those optional features would be nice, though, if anyone else knows how to do them. ^_^
You can edit it fine, but as soon as you go to use the macro, it crops at the 256th character, deleting anything after that before it attempts to process. -.-
I haven't looked into action buttons at all but somebody mentioned an API that allows you to attach macro-text directly to a button without using the macro interface (wasting a slot). Doing this also as they said allows macros of unlimited length. So if you can make or find an addon which hooks the popular action bar addons and sets your selected macro text, you'll be in business.
Making longer macros is easy enough by using secure buttons. The problem is that there is no support for putting them on action bars and getting visual feedback. But if you can live without that, here is an example:
local b = CreateFrame("Button", "MyMacroButton", nil, "SecureActionButtonTemplate")
b:SetAttribute("type", "macro")
b:SetAttribute("macrotext", [[
/cast Something
/dosomethingelse
/blablah
]])
SetOverrideBindingClick(b, nil, "CTRL-F", "MyMacroButton")
Instead of the last command that binds a key to the button, you could also activate it using a regular macro using the /click command:
/click MyMacroButton
This is how I do most my macros actually. I also try to make a #showtooltip line that as close as possible matches the spells that will be cast. For example:
It depends on your macro wether you can design the "delegate" macro to give proper feedback. But it is better than nothing.
Btw, there is still a limit on the length of the macrotext attribute: 1024 chars. But that can easily be overcome by chaining macros using /click if you should need to.
Either create your own little addon with the code, or use an addon like LuaSlinger or TinyPad that allows you to enter Lua code to be run when you login. I prefer the first as it is much nicer writing code in an proper editor outside of WoW. But it does make changing the macros a bit more cumbersome as I need to reload the UI each time.
Speaking of TinyPad, I made a little plugin for TinyPad that puts a new button on its toolbar that, when clicked, will create an new movable macro button using the current contents of the TinyPadEditBox as the macro text. :)
The tooltip shows a preview of what will be ran; that's pretty much it for visual feedback.
Currently...
...there's no way to use custom textures, so all buttons use the same texture.
...there's no way to bind keys to the buttons.
BT3Button3:
#show Rapid Fire
/use [combat, harm]Bloodlust Brooch
/cast [combat, harm]Rapid Fire
As those BT3Buttons are on my action bars (Bartender3) but unused by me, i can still see them and have visual feedback of the cooldowns, eventho it's kinda useless.
But i don't understand the usefullness of that secure button u're describing, could you explain what it would do more than what i'm doing now and give a real useable example because this is chinese for me
local b = CreateFrame("Button", "MyMacroButton", nil, "SecureActionButtonTemplate")
b:SetAttribute("type", "macro")
b:SetAttribute("macrotext", [[
/cast Something
/dosomethingelse
/blablah
]])
SetOverrideBindingClick(b, nil, "CTRL-F", "MyMacroButton")
But i don't understand the usefullness of that secure button u're describing, could you explain what it would do more than what i'm doing now and give a real useable example because this is chinese for me
The simple way I described above has mainly the advantage that it breaks Blizzard's silly macro limits. It allows longer macros than 255 chars and you can have an infinite number of them.
However, you can go further than this if you want to. Each /click can be considered a function call. So since you can use conditions on the /click command, you open up for macros that would be either very hard or impossible to do with a regular macro. An example of this is if you want to check a condition on more than one target. This is pretty much impossible with a regular macro. But very easy to do with a system like the above.
IF you compare your system with what i posted above (what i use) what would be the difference ?
Also, i don't really understand your code so could you please give a real example with skill name button and so on, fake ofc but at least i could modify it.
last thing, if i create a lua with ur code, i need a .toc what am i suppose to put in it, or am i completely next to the subject :)
This is beyond what I'm capable of doing. =( Unless there's an in-game lua editor to do this with... I'd still rather have buttons (with feedback) on my action bar...
If you felt so inclined, you could use the secure-button example to create:
A button for each of your skills, hidden, unkeybound, named SkillName.
A button for each of your macro's, including whatever checking you feel inclined to include (for instance MyMacro1 /castsequence reset=1 MMSteadyShot, MMAutoShot)
You could then use your limitted "macro" space within the default macro area to create other macros that reference the above in a way that fits your preference, to wit:
You can of course shorten all of those "button names" (MyMacro1, MyMacro2, etc) quite a bit, and if for some reason you required even more code in a single macro you could further abstract them by moving them to their own button and using just a simple /click MyGiganticMacroOfAbsurdity as your "blizzard macro".
The secure buttons can be logically combined so that you can have a macro of whatever length you're interested in, and as a side benefit you can hide the buttons which provide minimal useful feedback. They also have a benefit in that they allow you to reuse common logic without retyping it.
Optional features that would be nice -
Ability to have extra and/or infinite macros shared across the account
Ability to remove the name of the macro from the icon on the action bar (so it looks exactly like a normal spell).
That's all I need it to do. I'll keep my macros in the same macro language as what is possible even without any addons at all, but it's the character limit (and the number of macros limit) that annoys me. -.-
MacroMax/MacroMax.toc
MacroMax/MacroMax.lua
I'll have to do a little more testing to see if there's any errors of macros that actually are longer than 255 characters, but otherwise that seems to do the trick. Thanks!
Those optional features would be nice, though, if anyone else knows how to do them. ^_^
You can edit it fine, but as soon as you go to use the macro, it crops at the 256th character, deleting anything after that before it attempts to process. -.-
*hopes someone will be able to come up with something*
Instead of the last command that binds a key to the button, you could also activate it using a regular macro using the /click command:
This is how I do most my macros actually. I also try to make a #showtooltip line that as close as possible matches the spells that will be cast. For example:
You can even support visual feedback for /castsequence by a little trick:
It depends on your macro wether you can design the "delegate" macro to give proper feedback. But it is better than nothing.
Btw, there is still a limit on the length of the macrotext attribute: 1024 chars. But that can easily be overcome by chaining macros using /click if you should need to.
Making the secure button, how/where do I do that?
That *is* the secure button.
Either create your own little addon with the code, or use an addon like LuaSlinger or TinyPad that allows you to enter Lua code to be run when you login. I prefer the first as it is much nicer writing code in an proper editor outside of WoW. But it does make changing the macros a bit more cumbersome as I need to reload the UI each time.
The tooltip shows a preview of what will be ran; that's pretty much it for visual feedback.
Currently...
...there's no way to use custom textures, so all buttons use the same texture.
...there's no way to bind keys to the buttons.
http://addons.wowkoe.com/action/view/Addons:TPMacroButton
one main macro with different /click lines with condition [dead] [harm] [nopet] that kind of things, one button actually working on 3-4 others.
Here's an example on hunter
Main Button:
#show Arcane Shot
/click [noharm] [dead]BT3Button1
/click [pet,target=pet,nodead]BT3Button2
/click [combat,harm]BT3Button3
/castsequence [harm] reset=1 Auto Shot, Steady Shot, Arcane Shot, Auto Shot, Steady Shot
BT3Button1:
/targetenemy [pet,target=pet,dead] [nopet]
/stopmacro [harm]
/assist [pet,target=pet,nodead]PetName
BT3Button2:
#show Kill Command
/castrandom [target=pettarget, harm]Kill Command
BT3Button3:
#show Rapid Fire
/use [combat, harm]Bloodlust Brooch
/cast [combat, harm]Rapid Fire
As those BT3Buttons are on my action bars (Bartender3) but unused by me, i can still see them and have visual feedback of the cooldowns, eventho it's kinda useless.
But i don't understand the usefullness of that secure button u're describing, could you explain what it would do more than what i'm doing now and give a real useable example because this is chinese for me
The simple way I described above has mainly the advantage that it breaks Blizzard's silly macro limits. It allows longer macros than 255 chars and you can have an infinite number of them.
However, you can go further than this if you want to. Each /click can be considered a function call. So since you can use conditions on the /click command, you open up for macros that would be either very hard or impossible to do with a regular macro. An example of this is if you want to check a condition on more than one target. This is pretty much impossible with a regular macro. But very easy to do with a system like the above.
IF you compare your system with what i posted above (what i use) what would be the difference ?
Also, i don't really understand your code so could you please give a real example with skill name button and so on, fake ofc but at least i could modify it.
last thing, if i create a lua with ur code, i need a .toc what am i suppose to put in it, or am i completely next to the subject :)
A button for each of your skills, hidden, unkeybound, named SkillName.
A button for each of your macro's, including whatever checking you feel inclined to include (for instance MyMacro1 /castsequence reset=1 MMSteadyShot, MMAutoShot)
You could then use your limitted "macro" space within the default macro area to create other macros that reference the above in a way that fits your preference, to wit:
/click [button:2]MyMacro 1;[button:3]MyMacro2;[Harm]MMSilencingShot;[Help]MMMendPet
You can of course shorten all of those "button names" (MyMacro1, MyMacro2, etc) quite a bit, and if for some reason you required even more code in a single macro you could further abstract them by moving them to their own button and using just a simple /click MyGiganticMacroOfAbsurdity as your "blizzard macro".
The secure buttons can be logically combined so that you can have a macro of whatever length you're interested in, and as a side benefit you can hide the buttons which provide minimal useful feedback. They also have a benefit in that they allow you to reuse common logic without retyping it.
For instance, as a caster, I use:
In a few of my macros, to toggle a +dmg trinket without providing error feedback when it's on cooldown. (Lifetap, and curse of doom)
Make more sense?