-
Posted by Teleos on Tue, 22 Dec 2009 00:44:10
I am very pleased with this book and am working on an addon that utilizes the functionality of the BasicUnitFrames addon & the SABTest addon. What code could I insert so that, when I clicked a person's button it would cast a certain spell on their target?
Thanks, & once again great work with the book.
-
Posted by jnwhiteh on Wed, 23 Dec 2009 03:24:04
Taken from SecureTemplates.lua:
-- -- SecureActionButton -- -- SecureActionButtons allow you to map different combinations of modifiers and buttons into -- actions which are executed when the button is clicked. -- -- For example, you could set up the button to respond to left clicks by targeting the focus: -- self:SetAttribute("unit", "focus"); -- self:SetAttribute("type1", "target"); -- -- You could set up all other buttons to bring up a menu like this: -- self:SetAttribute("type*", "menu"); -- self.showmenu = menufunc; -- -- SecureActionButtons are also able to perform different actions depending on whether you can -- attack the unit or assist the unit associated with the action button. It does so by mapping -- mouse buttons into "virtual buttons" based on the state of the unit. For example, you can use -- the following to cast "Mind Blast" on a left click and "Shadow Word: Death" on a right click -- if the unit can be attacked: -- self:SetAttribute("harmbutton1", "nuke1"); -- self:SetAttribute("type-nuke1", "spell"); -- self:SetAttribute("spell-nuke1", "Mind Blast"); -- self:SetAttribute("harmbutton2", "nuke2"); -- self:SetAttribute("type-nuke2", "spell"); -- self:SetAttribute("spell-nuke2", "Shadow Word: Death"); -- -- In this example, we use the special attribute "harmbutton" which is used to map a virtual -- button when the unit is attackable. We also have the attribute "helpbutton" which is used -- when the unit can be assisted. -- -- Although it may not be immediately obvious, we are able to use this new virtual button -- to set up very complex click behaviors on buttons. For example, we can define a new "heal" -- virtual button for all friendly left clicks, and then set the button to cast "Flash Heal" -- on an unmodified left click and "Renew" on a ctrl left click: -- self:SetAttribute("*helpbutton1", "heal"); -- self:SetAttribute("*type-heal", "spell"); -- self:SetAttribute("spell-heal", "Flash Heal"); -- self:SetAttribute("ctrl-spell-heal", "Renew"); -- -- This system is very powerful, and provides a good layer of abstraction for setting up -- a button's click behaviors.
-
Posted by Teleos on Wed, 23 Dec 2009 15:01:10
Thanks for the reply. Currently I have self:SetAttribute(type, spell) self:SetAttribute(spell, "spell name") in the OnLoad function. Unfortunately it tries to cast the spell at the party member that the button is associated with (I am using the BasicUnitFrames xml & lua files w/ some minor modifications). This is fine for heals & buffs, but I am trying to cast a spell at the party member's target. So is there another API or something I could insert here to do so??
Thanks again!
-
Posted by jnwhiteh on Wed, 23 Dec 2009 16:00:45
You must specify the unit.
frame:SetAttribute("unit", "mouseovertarget")
Would cast it on the mouseover unit (The unit you are hovering over)'s target.