Originally Posted by Ketho
Your last script works fine for me. Check if you have any errors by getting BugSack
|
Thanks. Seems for some reason I needed to restart client, not just /reload.
The last piece I think is now logging each XP gain in a table.
Edit: All sorted. Sharing below for those interested.
Lua Code:
local EventFrame = CreateFrame("Frame")
local defaults = {
TotalXP = 0,
TotalXPEvents = 0,
IndividualGains = {},
}
EventFrame:RegisterEvent("ADDON_LOADED")
EventFrame:RegisterEvent("CHAT_MSG_COMBAT_XP_GAIN")
EventFrame:SetScript("OnEvent",
function(self, event, ...)
if event == "CHAT_MSG_COMBAT_XP_GAIN" then
local arg1 = ...
local DateTime = date("%d/%m/%y %H:%M:%S")
local XPGained = string.match(string.match(arg1, "%d+ experience"), "%d+")
local Creature = string.match(arg1, "(%a+) dies")
local QuestOrCreature = "Creature"
if Creature == nil then
QuestOrCreature = "Quest"
end
-- Increment number of XP events
CharacterDB.TotalXPEvents = CharacterDB.TotalXPEvents + 1
print('Total XP events ' .. CharacterDB.TotalXPEvents)
-- Add to total XP gained
CharacterDB.TotalXP = CharacterDB.TotalXP + tonumber(XPGained)
print('Total XP ' .. CharacterDB.TotalXP)
-- Setup table for new individual XP gain
local NewGain = {}
NewGain["Timestamp"] = DateTime
NewGain["XP Gained"] = XPGained
NewGain["Zone"] = GetZoneText()
NewGain["Minimap Zone"] = GetMinimapZoneText()
NewGain["Level"] = UnitLevel("player")
NewGain["Total XP"] = CharacterDB.TotalXP
NewGain["Quest or Creature"] = QuestOrCreature
NewGain["Creature"] = Creature
-- Log individual XP gain statistics
table.insert(CharacterDB.IndividualGains, NewGain)
elseif event == "ADDON_LOADED" then
local addon = ...
if addon == "XPLogger" then
CharacterDB = CharacterDB or defaults
print('----------------')
print('XPLogger loaded')
print('Total XP ' .. CharacterDB.TotalXP)
print('Total XP events ' .. CharacterDB.TotalXPEvents)
print('----------------')
self:UnregisterEvent(event)
end
end
end)
Will now write a parser.