Advertisement
Guest User

Untitled

a guest
Mar 15th, 2013
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.92 KB | None | 0 0
  1. -------------------
  2. -- Initilization --
  3. -------------------
  4.     local addonName, addonTable = ...
  5.    
  6. -----------------------
  7. -- Local Definitions --
  8. -----------------------
  9.     -- Addon Frame
  10.     local frame = CreateFrame("Frame", addonName.."Frame", UIParent)
  11.    
  12.     -- Table to hold all damage events
  13.     local damageTable = {}
  14.  
  15.     -- OnUpdate interval
  16.     local updateInterval = 0.1
  17.    
  18.     -- GUID Types
  19.     local knownTypes = {
  20.         [0] = "player",
  21.         [1] = "world object",
  22.         [3] = "NPC",
  23.         [4] = "pet",
  24.         [5] = "vehicle"
  25.     }
  26.    
  27. ----------
  28. -- Core --
  29. ----------
  30.     frame:SetSize(500, 500)
  31.     frame:SetPoint("CENTER", UIParent, "CENTER", 0, 0)
  32.    
  33.     frame.text = frame:CreateFontString(nil)
  34.     frame.text:SetFont(STANDARD_TEXT_FONT, 25, "OUTLINE")
  35.     frame.text:SetPoint("CENTER", frame, "CENTER", 0 ,0)
  36.  
  37.     local function damage(self, event, ...)
  38.         local timeStamp, eventType, hideCaster, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags = ...
  39.         local maskedTypeBit = tonumber(sourceGUID:sub(5, 5), 16) % 8
  40.         if destGUID == UnitGUID("player") and knownTypes[maskedTypeBit] == "NPC" then
  41.             if eventType == "SWING_DAMAGE" then
  42.                 local amount = select(12, ...)
  43.                 damageTable[timeStamp] = amount
  44.             end -- if event
  45.         end -- if destGUID
  46.     end -- function
  47.    
  48.     local totalTime = 0
  49.     local totalDamage = 0
  50.     local function onUpdate(self, elapsed)
  51.         totalTime = totalTime + elapsed
  52.         if totalTime >= updateInterval then
  53.             for k, v in pairs(damageTable) do
  54.                 if k >= time() - 5 then
  55.                     totalDamage = totalDamage + v
  56.                 end
  57.             end
  58.            
  59.             if totalDamage > 0 then
  60.                 frame.text:SetText(totalDamage)
  61.             else
  62.                 frame.text:SetText("")
  63.             end
  64.            
  65.             totalDamage = 0
  66.             totalTime = 0
  67.         end -- if totalTime
  68.     end -- function
  69.    
  70. ------------
  71. -- Events --
  72. ------------
  73.     frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
  74.     frame:SetScript("OnEvent", damage)
  75.     frame:SetScript("OnUpdate", onUpdate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement