Mercurial > wow > oocdo
changeset 8:3b9bc71a1dd6
.Use - use first available item; .Cast - use first available spell
author | rowaasr13 |
---|---|
date | Tue, 10 Jan 2017 19:40:33 +0300 |
parents | e41de98f6b33 |
children | 5e15478c7731 |
files | OOCDo.lua |
diffstat | 1 files changed, 45 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/OOCDo.lua Tue Jan 10 19:39:55 2017 +0300 +++ b/OOCDo.lua Tue Jan 10 19:40:33 2017 +0300 @@ -28,7 +28,50 @@ button:SetAttribute("type", "macro") button:SetAttribute("macrotext", command) end - button.Macro = button.MacroText button.T = button.MacroText -button.M = button.MacroText \ No newline at end of file +button.M = button.MacroText + +--- Tries to set button to use first available item from list. +-- Sets button's .type to "item" and .item to first item that player have (GetItemCount > 0). +-- Returns if any item was found or not, so you can use this in conditional to do something else if there were no suitable items. +-- If none of items was found, button will still lose previously assigned command. +-- @param ... list of item IDs to try +-- @return true if any item was found and nil otherwise +function button.Use(...) + if InCombatLockdown() then return end + button:SetAttribute("type", "item") + button:SetAttribute("item", nil) + for idx = 1, select('#', ...) do repeat + local elem = select(idx, ...) + if elem == button then break end + if type(elem) == "number" then + if GetItemCount(elem) > 0 then + button:SetAttribute("item", "item:" .. elem) + return true + end + end + until true end +end + +--- Tries to set button to castwe first available spell from list. +-- Sets button's .type to "spell" and .spell to first spell that player knowns (GetSpellInfo(name) returns something). +-- Returns if any spell was found or not, so you can use this in conditional to do something else if there were no suitable spells. +-- If none of spells was found, button will still lose previously assigned command. +-- @param ... list of spell IDs to try +-- @return true if any spell was found and nil otherwise +function button.Cast(...) + if InCombatLockdown() then return end + button:SetAttribute("type", "spell") + button:SetAttribute("spell", nil) + for idx = 1, select('#', ...) do repeat + local elem = select(idx, ...) + if elem == button then break end + if type(elem) == "number" then + if GetSpellInfo(GetSpellInfo(elem)) then + button:SetAttribute("spell", elem) + return true + end + end + until true end +end \ No newline at end of file