Mercurial > wow > degaine
comparison Degaine.lua @ 24:3b1123f50be4 v1.0beta3
Adding support for dismount
| author | contrebasse |
|---|---|
| date | Fri, 10 Dec 2010 21:06:46 +0100 |
| parents | 44e8394d6982 |
| children | dd1ef3996d7f |
comparison
equal
deleted
inserted
replaced
| 23:44e8394d6982 | 24:3b1123f50be4 |
|---|---|
| 29 -- Wow functions | 29 -- Wow functions |
| 30 local GetTime = GetTime | 30 local GetTime = GetTime |
| 31 local InCombatLockdown = InCombatLockdown | 31 local InCombatLockdown = InCombatLockdown |
| 32 local ToggleSheath = ToggleSheath | 32 local ToggleSheath = ToggleSheath |
| 33 local UnitName = UnitName | 33 local UnitName = UnitName |
| 34 local IsMounted = IsMounted | |
| 34 | 35 |
| 35 | 36 |
| 36 --------------------------------------------------------------- | 37 --------------------------------------------------------------- |
| 37 -- Local vars | 38 -- Local vars |
| 38 --------------------------------------------------------------- | 39 --------------------------------------------------------------- |
| 39 -- const | 40 -- const |
| 40 local DegaineFrame = CreateFrame("Frame") | 41 local DegaineFrame = CreateFrame("Frame") |
| 41 local playername = UnitName("player") | 42 local playername = UnitName("player") |
| 43 local delay = 2 -- seconds | |
| 42 | 44 |
| 43 -- vars | 45 -- vars |
| 44 local t_left = -1 | 46 local t_left = -1 |
| 45 local delay = 2 -- seconds | |
| 46 local isGossipClosed = true | 47 local isGossipClosed = true |
| 47 local wasGossipOpened = false | 48 local wasGossipOpened = false |
| 48 local t_lastGossipClosed = 0 | 49 local t_lastGossipClosed = 0 |
| 50 local wasMounted = IsMounted() -- handle mounts with UNIT_AURA | |
| 49 | 51 |
| 50 | 52 |
| 51 --------------------------------------------------------------- | 53 --------------------------------------------------------------- |
| 52 -- Some stuff... | 54 -- Some stuff... |
| 53 --------------------------------------------------------------- | 55 --------------------------------------------------------------- |
| 90 } | 92 } |
| 91 local events1player = { -- the first arg is "player" | 93 local events1player = { -- the first arg is "player" |
| 92 UNIT_SPELLCAST_FAILED = true, | 94 UNIT_SPELLCAST_FAILED = true, |
| 93 UNIT_SPELLCAST_INTERRUPTED = true, | 95 UNIT_SPELLCAST_INTERRUPTED = true, |
| 94 UNIT_SPELLCAST_SUCCEEDED = true, | 96 UNIT_SPELLCAST_SUCCEEDED = true, |
| 97 UNIT_AURA = function() | |
| 98 if IsMounted() then | |
| 99 wasMounted = true | |
| 100 else | |
| 101 if wasMounted then | |
| 102 start() | |
| 103 wasMounted = false | |
| 104 end | |
| 105 end | |
| 106 end | |
| 95 } | 107 } |
| 96 local SpellBlackList = { -- spells that don't stealth weapons (works with events1player) | 108 local SpellBlackList = { -- spells that don't stealth weapons (works with events1player) |
| 97 [1784] = true, -- Stealth (Rogue) | 109 [1784] = true, -- Stealth (Rogue) |
| 98 [58984] = true, -- Shadowmeld (Nightelf stealth) | 110 [58984] = true, -- Shadowmeld (Nightelf stealth) |
| 99 | 111 |
| 118 CHAT_MSG_TEXT_EMOTE = true, | 130 CHAT_MSG_TEXT_EMOTE = true, |
| 119 } | 131 } |
| 120 | 132 |
| 121 | 133 |
| 122 --------------------------------------------------------------- | 134 --------------------------------------------------------------- |
| 135 -- Handle mounts with OnUpdate | |
| 136 --------------------------------------------------------------- | |
| 137 -- works with GupPet but not with the default interface... | |
| 138 -- I guess that's because a specific /cancelaura or alike is done | |
| 139 -- hooksecurefunc("Dismount",start); | |
| 140 | |
| 141 --[[ With OnUpdate | |
| 142 local handleMountsFrame = CreateFrame("frame") | |
| 143 local handleMountsOnUpdate | |
| 144 do | |
| 145 local IsMounted = IsMounted | |
| 146 local wasMounted = IsMounted() | |
| 147 function handleMountsOnUpdate(self,t_elapsed) | |
| 148 if IsMounted() then | |
| 149 wasMounted = true | |
| 150 else | |
| 151 if wasMounted then | |
| 152 start() | |
| 153 wasMounted = false | |
| 154 end | |
| 155 end | |
| 156 end | |
| 157 end | |
| 158 --]] | |
| 159 | |
| 160 | |
| 161 --------------------------------------------------------------- | |
| 123 -- Launch drawing weapons | 162 -- Launch drawing weapons |
| 124 --------------------------------------------------------------- | 163 --------------------------------------------------------------- |
| 125 -- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) | 164 -- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) |
| 126 local Degaine_OnUpdate = function(self,t_elapsed) | 165 local Degaine_OnUpdate = function(self,t_elapsed) |
| 127 t_left = t_left - t_elapsed; | 166 t_left = t_left - t_elapsed; |
| 154 for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end | 193 for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end |
| 155 for k,_ in pairs(events2playername) do DegaineFrame:RegisterEvent(k) end | 194 for k,_ in pairs(events2playername) do DegaineFrame:RegisterEvent(k) end |
| 156 --@end-debug@ | 195 --@end-debug@ |
| 157 end | 196 end |
| 158 --@end-debug@ | 197 --@end-debug@ |
| 198 handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate) | |
| 159 end | 199 end |
| 160 local desactivate = function() | 200 local desactivate = function() |
| 201 DegaineFrame:SetScript("OnUpdate", nil) | |
| 202 handleMountsFrame:SetScript("OnUpdate",nil) | |
| 203 t_left = -1 | |
| 161 for k,_ in pairs(events) do DegaineFrame:UnregisterEvent(k) end | 204 for k,_ in pairs(events) do DegaineFrame:UnregisterEvent(k) end |
| 162 for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end | 205 for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end |
| 163 for k,_ in pairs(events2playername) do DegaineFrame:UnregisterEvent(k) end | 206 for k,_ in pairs(events2playername) do DegaineFrame:UnregisterEvent(k) end |
| 164 DegaineFrame:SetScript("OnUpdate", nil) | |
| 165 end | 207 end |
| 166 Degaine_ToggleAuto = function() | 208 Degaine_ToggleAuto = function() |
| 167 if Degaine_isAuto then | 209 if Degaine_isAuto then |
| 168 Degaine_isAuto = false | 210 Degaine_isAuto = false |
| 169 desactivate() | 211 desactivate() |
| 173 end | 215 end |
| 174 printState() | 216 printState() |
| 175 end | 217 end |
| 176 | 218 |
| 177 | 219 |
| 220 | |
| 178 --------------------------------------------------------------- | 221 --------------------------------------------------------------- |
| 179 -- Event/hooks functions | 222 -- Event/hooks functions |
| 180 --------------------------------------------------------------- | 223 --------------------------------------------------------------- |
| 181 local Degaine_OnEvent = function(self,event, arg1, arg2, _, _, arg5, ...) | 224 local Degaine_OnEvent = function(self,event, arg1, arg2, _, _, arg5, ...) |
| 182 --@debug@ | 225 --@debug@ |
| 191 if type(events[event])~="function" or events[event]() then | 234 if type(events[event])~="function" or events[event]() then |
| 192 start() | 235 start() |
| 193 end | 236 end |
| 194 elseif events1player[event] then | 237 elseif events1player[event] then |
| 195 if arg1=="player" then | 238 if arg1=="player" then |
| 196 if not SpellBlackList[arg5] then -- arg5 is SpellID | 239 if arg5==nil or not SpellBlackList[arg5] then -- arg5 is SpellID |
| 197 start() | 240 start() |
| 198 end | 241 end |
| 199 end | 242 end |
| 200 elseif events2playername[event] then | 243 elseif events2playername[event] then |
| 201 if arg2==playername then | 244 if arg2==playername then |
| 205 wasGossipOpened = not isGossipClosed | 248 wasGossipOpened = not isGossipClosed |
| 206 isGossipClosed = true | 249 isGossipClosed = true |
| 207 t_lastGossipClosed = GetTime() | 250 t_lastGossipClosed = GetTime() |
| 208 | 251 |
| 209 elseif event == "PLAYER_REGEN_ENABLED" then | 252 elseif event == "PLAYER_REGEN_ENABLED" then |
| 210 --for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end | |
| 211 desactivate() | 253 desactivate() |
| 212 elseif event == "PLAYER_REGEN_DISABLED" then | 254 elseif event == "PLAYER_REGEN_DISABLED" then |
| 213 --for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end | |
| 214 activate() | 255 activate() |
| 215 | 256 |
| 216 elseif event == "ADDON_LOADED" and arg1==AddonName then | 257 elseif event == "ADDON_LOADED" and arg1==AddonName then |
| 217 if Degaine_isAuto==nil then | 258 if Degaine_isAuto==nil then |
| 218 Degaine_isAuto = true | 259 Degaine_isAuto = true |
| 225 end | 266 end |
| 226 end | 267 end |
| 227 -- Hook when standing up | 268 -- Hook when standing up |
| 228 -- (Didn't work, see http://forums.wowace.com/showthread.php?p=310547#post310547) | 269 -- (Didn't work, see http://forums.wowace.com/showthread.php?p=310547#post310547) |
| 229 hooksecurefunc("SitStandOrDescendStart",start); | 270 hooksecurefunc("SitStandOrDescendStart",start); |
| 230 hooksecurefunc("Dismount",start); -- works with GupPet but not with the default interface... | |
| 231 | 271 |
| 232 | 272 |
| 233 --------------------------------------------------------------- | 273 --------------------------------------------------------------- |
| 234 -- Commands | 274 -- Commands |
| 235 --------------------------------------------------------------- | 275 --------------------------------------------------------------- |
