Mercurial > wow > degaine
comparison Degaine.lua @ 28:a91e7552c682 v1.0beta5
Use a whitelis instead of a blacklist. Used OnUpdate for mounts, didn't work well with UNIT_AURA
| author | contrebasse |
|---|---|
| date | Fri, 10 Dec 2010 22:40:32 +0100 |
| parents | dd1ef3996d7f |
| children | d66bb6a8d8bb |
comparison
equal
deleted
inserted
replaced
| 27:239bedf57140 | 28:a91e7552c682 |
|---|---|
| 7 --------------------------------------------------------------- | 7 --------------------------------------------------------------- |
| 8 -- If you stand up by jumping or walking it won't draw your weapon | 8 -- If you stand up by jumping or walking it won't draw your weapon |
| 9 -- (it's not possible to know if you were sitting or standing before) | 9 -- (it's not possible to know if you were sitting or standing before) |
| 10 | 10 |
| 11 --@debug@ | 11 --@debug@ |
| 12 local debug = true | 12 local debug = false |
| 13 --@end-debug@ | 13 --@end-debug@ |
| 14 | 14 |
| 15 | 15 |
| 16 --------------------------------------------------------------- | 16 --------------------------------------------------------------- |
| 17 -- Globals to local | 17 -- Globals to local |
| 57 BINDING_HEADER_DEGAINE = "Dégainer automatiquement" | 57 BINDING_HEADER_DEGAINE = "Dégainer automatiquement" |
| 58 | 58 |
| 59 -- Print status | 59 -- Print status |
| 60 local printState = function() | 60 local printState = function() |
| 61 DEFAULT_CHAT_FRAME:AddMessage(Degaine_isAuto and "Dégainage automatique |cFF00FF00activé|r" or "Dégainage automatique |cFFFF0000désactivé|r") | 61 DEFAULT_CHAT_FRAME:AddMessage(Degaine_isAuto and "Dégainage automatique |cFF00FF00activé|r" or "Dégainage automatique |cFFFF0000désactivé|r") |
| 62 end | |
| 63 | |
| 64 | |
| 65 --------------------------------------------------------------- | |
| 66 -- Launch drawing weapons | |
| 67 --------------------------------------------------------------- | |
| 68 -- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) | |
| 69 local Degaine_OnUpdate = function(self,t_elapsed) | |
| 70 t_left = t_left - t_elapsed; | |
| 71 if t_left<=0 then | |
| 72 ToggleSheath() | |
| 73 DegaineFrame:SetScript("OnUpdate", nil) | |
| 74 end | |
| 75 end | |
| 76 local start = function() | |
| 77 if Degaine_isAuto and not InCombatLockdown() then | |
| 78 t_left = delay | |
| 79 DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate) | |
| 80 end | |
| 62 end | 81 end |
| 63 | 82 |
| 64 | 83 |
| 65 --------------------------------------------------------------- | 84 --------------------------------------------------------------- |
| 66 -- Events config | 85 -- Events config |
| 92 } | 111 } |
| 93 local events1player = { -- the first arg is "player" | 112 local events1player = { -- the first arg is "player" |
| 94 UNIT_SPELLCAST_FAILED = true, | 113 UNIT_SPELLCAST_FAILED = true, |
| 95 UNIT_SPELLCAST_INTERRUPTED = true, | 114 UNIT_SPELLCAST_INTERRUPTED = true, |
| 96 UNIT_SPELLCAST_SUCCEEDED = true, | 115 UNIT_SPELLCAST_SUCCEEDED = true, |
| 97 UNIT_AURA = function() | 116 } |
| 98 if IsMounted() then | 117 local SpellWhiteList = { |
| 99 wasMounted = true | 118 [8690] = true, -- Heartstone |
| 100 else | 119 [818] = true, -- Basic Campfire |
| 101 if wasMounted then | 120 } |
| 102 wasMounted = false | 121 --[[ |
| 103 start() | |
| 104 end | |
| 105 end | |
| 106 end | |
| 107 } | |
| 108 local SpellBlackList = { -- spells that don't stealth weapons (works with events1player) | 122 local SpellBlackList = { -- spells that don't stealth weapons (works with events1player) |
| 109 [1784] = true, -- Stealth (Rogue) | 123 [1784] = true, -- Stealth (Rogue) |
| 110 [58984] = true, -- Shadowmeld (Nightelf stealth) | 124 [58984] = true, -- Shadowmeld (Nightelf stealth) |
| 111 | 125 |
| 112 -- Tradeskill spells | 126 -- Tradeskill spells |
| 122 [2550] = true, -- Cooking | 136 [2550] = true, -- Cooking |
| 123 [3273] = true, -- First Aid | 137 [3273] = true, -- First Aid |
| 124 [53428] = true -- Runeforge | 138 [53428] = true -- Runeforge |
| 125 -- Archaeology ? | 139 -- Archaeology ? |
| 126 } | 140 } |
| 141 --]] | |
| 127 local events2playername = { -- the 2nd arg is playername | 142 local events2playername = { -- the 2nd arg is playername |
| 128 CHAT_MSG_SAY = true, | 143 CHAT_MSG_SAY = true, |
| 129 CHAT_MSG_YELL = true, | 144 CHAT_MSG_YELL = true, |
| 130 CHAT_MSG_TEXT_EMOTE = true, | 145 CHAT_MSG_TEXT_EMOTE = true, |
| 131 } | 146 } |
| 136 --------------------------------------------------------------- | 151 --------------------------------------------------------------- |
| 137 -- works with GupPet but not with the default interface... | 152 -- works with GupPet but not with the default interface... |
| 138 -- I guess that's because a specific /cancelaura or alike is done | 153 -- I guess that's because a specific /cancelaura or alike is done |
| 139 -- hooksecurefunc("Dismount",start); | 154 -- hooksecurefunc("Dismount",start); |
| 140 | 155 |
| 141 --[[ With OnUpdate | 156 -- With OnUpdate |
| 142 local handleMountsFrame = CreateFrame("frame") | 157 local handleMountsFrame = CreateFrame("frame") |
| 143 local handleMountsOnUpdate | 158 local handleMountsOnUpdate |
| 144 do | 159 do |
| 145 local IsMounted = IsMounted | 160 local IsMounted = IsMounted |
| 146 local wasMounted = IsMounted() | 161 local wasMounted = IsMounted() |
| 153 wasMounted = false | 168 wasMounted = false |
| 154 end | 169 end |
| 155 end | 170 end |
| 156 end | 171 end |
| 157 end | 172 end |
| 158 --]] | |
| 159 | |
| 160 | |
| 161 --------------------------------------------------------------- | |
| 162 -- Launch drawing weapons | |
| 163 --------------------------------------------------------------- | |
| 164 -- Wait a few seconds before drawing, to be able to see the curren animation (and avoid bugs) | |
| 165 local Degaine_OnUpdate = function(self,t_elapsed) | |
| 166 t_left = t_left - t_elapsed; | |
| 167 if t_left<=0 then | |
| 168 ToggleSheath() | |
| 169 DegaineFrame:SetScript("OnUpdate", nil) | |
| 170 end | |
| 171 end | |
| 172 local start = function() | |
| 173 if Degaine_isAuto and not InCombatLockdown() then | |
| 174 t_left = delay | |
| 175 DegaineFrame:SetScript("OnUpdate", Degaine_OnUpdate) | |
| 176 end | |
| 177 end | |
| 178 | 173 |
| 179 | 174 |
| 180 --------------------------------------------------------------- | 175 --------------------------------------------------------------- |
| 181 -- Activation functions | 176 -- Activation functions |
| 182 --------------------------------------------------------------- | 177 --------------------------------------------------------------- |
| 190 else | 185 else |
| 191 --@end-debug@ | 186 --@end-debug@ |
| 192 for k,_ in pairs(events) do DegaineFrame:RegisterEvent(k) end | 187 for k,_ in pairs(events) do DegaineFrame:RegisterEvent(k) end |
| 193 for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end | 188 for k,_ in pairs(events1player) do DegaineFrame:RegisterEvent(k) end |
| 194 for k,_ in pairs(events2playername) do DegaineFrame:RegisterEvent(k) end | 189 for k,_ in pairs(events2playername) do DegaineFrame:RegisterEvent(k) end |
| 190 --DegaineFrame:RegisterEvent("UNIT_AURA") | |
| 191 handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate) | |
| 195 --@end-debug@ | 192 --@end-debug@ |
| 196 end | 193 end |
| 197 --@end-debug@ | 194 --@end-debug@ |
| 198 handleMountsFrame:SetScript("OnUpdate",handleMountsOnUpdate) | |
| 199 end | 195 end |
| 200 local desactivate = function() | 196 local desactivate = function() |
| 201 DegaineFrame:SetScript("OnUpdate", nil) | 197 DegaineFrame:SetScript("OnUpdate", nil) |
| 202 handleMountsFrame:SetScript("OnUpdate",nil) | |
| 203 t_left = -1 | 198 t_left = -1 |
| 204 for k,_ in pairs(events) do DegaineFrame:UnregisterEvent(k) end | 199 for k,_ in pairs(events) do DegaineFrame:UnregisterEvent(k) end |
| 205 for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end | 200 for k,_ in pairs(events1player) do DegaineFrame:UnregisterEvent(k) end |
| 206 for k,_ in pairs(events2playername) do DegaineFrame:UnregisterEvent(k) end | 201 for k,_ in pairs(events2playername) do DegaineFrame:UnregisterEvent(k) end |
| 202 --DegaineFrame:UnregisterEvent("UNIT_AURA") | |
| 203 handleMountsFrame:SetScript("OnUpdate",nil) | |
| 207 end | 204 end |
| 208 Degaine_ToggleAuto = function() | 205 Degaine_ToggleAuto = function() |
| 209 if Degaine_isAuto then | 206 if Degaine_isAuto then |
| 210 Degaine_isAuto = false | 207 Degaine_isAuto = false |
| 211 desactivate() | 208 desactivate() |
| 228 --if arg1 then DEFAULT_CHAT_FRAME:AddMessage("arg1 = "..arg1) end | 225 --if arg1 then DEFAULT_CHAT_FRAME:AddMessage("arg1 = "..arg1) end |
| 229 --if arg2 then DEFAULT_CHAT_FRAME:AddMessage("arg2 = "..arg2) end | 226 --if arg2 then DEFAULT_CHAT_FRAME:AddMessage("arg2 = "..arg2) end |
| 230 --end | 227 --end |
| 231 --@end-debug@ | 228 --@end-debug@ |
| 232 | 229 |
| 230 --[[ IsMounted() renvoie toujours false ici, on doit passer par OnUpdate | |
| 231 if event=="UNIT_AURA" then | |
| 232 if arg1=="player" then | |
| 233 DEFAULT_CHAT_FRAME:AddMessage("player") | |
| 234 if IsMounted() then | |
| 235 DEFAULT_CHAT_FRAME:AddMessage("ismounted") | |
| 236 wasMounted = true | |
| 237 else | |
| 238 DEFAULT_CHAT_FRAME:AddMessage("notmounted") | |
| 239 if wasMounted then | |
| 240 DEFAULT_CHAT_FRAME:AddMessage("wasmounted : start") | |
| 241 wasMounted = false | |
| 242 start() | |
| 243 end | |
| 244 end | |
| 245 end | |
| 246 else | |
| 247 --]] | |
| 233 if events[event] then | 248 if events[event] then |
| 234 if type(events[event])~="function" or events[event]() then | 249 if type(events[event])~="function" or events[event]() then |
| 235 start() | 250 start() |
| 236 end | 251 end |
| 237 elseif events1player[event] then | 252 elseif events1player[event] then |
| 238 if arg1=="player" then | 253 if arg1=="player" then |
| 239 if arg5==nil or not SpellBlackList[arg5] then -- arg5 is SpellID | 254 if arg5==nil or SpellWhiteList[arg5] then -- arg5 is SpellID |
| 240 start() | 255 start() |
| 241 end | 256 end |
| 242 end | 257 end |
| 243 elseif events2playername[event] then | 258 elseif events2playername[event] then |
| 244 if arg2==playername then | 259 if arg2==playername then |
