Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -------------------
- -- Initilization --
- -------------------
- local addonName, addonTable = ...
- -----------------------
- -- Local Definitions --
- -----------------------
- -- Addon Frame
- local frame = CreateFrame("Frame", addonName.."Frame", UIParent)
- -- Table to hold all damage events
- local damageTable = {}
- -- OnUpdate interval
- local updateInterval = 0.1
- -- GUID Types
- local knownTypes = {
- [0] = "player",
- [1] = "world object",
- [3] = "NPC",
- [4] = "pet",
- [5] = "vehicle"
- }
- ----------
- -- Core --
- ----------
- frame:SetSize(500, 500)
- frame:SetPoint("CENTER", UIParent, "CENTER", 0, 0)
- frame.text = frame:CreateFontString(nil)
- frame.text:SetFont(STANDARD_TEXT_FONT, 25, "OUTLINE")
- frame.text:SetPoint("CENTER", frame, "CENTER", 0 ,0)
- local function damage(self, event, ...)
- local timeStamp, eventType, hideCaster, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags = ...
- local maskedTypeBit = tonumber(sourceGUID:sub(5, 5), 16) % 8
- if destGUID == UnitGUID("player") and knownTypes[maskedTypeBit] == "NPC" then
- if eventType == "SWING_DAMAGE" then
- local amount = select(12, ...)
- damageTable[timeStamp] = amount
- end -- if event
- end -- if destGUID
- end -- function
- local totalTime = 0
- local totalDamage = 0
- local function onUpdate(self, elapsed)
- totalTime = totalTime + elapsed
- if totalTime >= updateInterval then
- for k, v in pairs(damageTable) do
- if k >= time() - 5 then
- totalDamage = totalDamage + v
- end
- end
- if totalDamage > 0 then
- frame.text:SetText(totalDamage)
- else
- frame.text:SetText("")
- end
- totalDamage = 0
- totalTime = 0
- end -- if totalTime
- end -- function
- ------------
- -- Events --
- ------------
- frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
- frame:SetScript("OnEvent", damage)
- frame:SetScript("OnUpdate", onUpdate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement