Hello everyone, didn't notice such a thread earlier, sorry if I missed one.
I've been successfully using a few macros to record my dps on the beta and it doesn't seem that many people are aware of it so thought I would share.
All credit goes to GhsCrysis and his video: here
Step one:
make 5 macros:
1)
Code:
/dump CreateFrame("Frame","f")
/dump tinsert(f,function(a,b,c)f[a]=b;c()end)
/dump f[1]("e",{'COMBAT_LOG_EVENT_UNFILTERED','PLAYER_REGEN_DISABLED','PLAYER_REGEN_ENABLED'},function()for _,e in pairs({f.e[1],f.e[2],f.e[3]})do f:RegisterEvent(e)end end)
2)
Code:
/dump f[1]("s",function()f.c=UnitName("target")or"?"f[f.c]={s=GetTime()}print(f.c.." engaged!")Stopwatch_Clear()StopwatchFrame:Show()Stopwatch_Play()end,function()end)
/dump f[1]("f",function()f[f.c].f=GetTime()Stopwatch_Pause()end,function()end)
3)
Code:
/dump f:SetScript('OnEvent',function(_,e,_,g,_,_,s,j,_,_,_,_,_,a,_,_,b)if e==f.e[2]then f:s()end if e==f.e[3]then f:f()end if strfind(g or"","_DA")and f.c and 8>bit.band(j,15)then f[f.c][s]=(f[f.c][s]or 0)+(g=="SWING_DAMAGE"and a or b)end end)
4)
Code:
/dump f[1]("p",function(_,k)t=k or UnitName("target")or f.c;fd=(f[t].f or GetTime())-f[t].s f.o("DMG for "..t)for n,v in pairs(f[t]or{})do if strlen(n)>1 then f.o(n..": "..v.." ("..floor(v/fd).." dps)")end end end,function()f.o=SendChatMessage;end)
5)
Step 2: Target something. Click macros 1, 2, 3, 4.
Step 3: Dps the target, stopwatch will show the time. Once you're done, wait for stopwatch to stop.
Step 4: Once the stopwatch has stopped, click macro 5 and it will show your dps in /s.
Note that in the video description the author says his macros need some editing cause youtube doesn't allow > sign in the video description. I already put those signs where they are supposed to be, so you don't really need to change that, just look for this: (comment from the author) After you copy paste them look at them in game, in Macro 1 check the "PLAYER_REGEN_EN*ABLED" part. Look at the word ENABLED, make sure it isn't EN-ABLED. Then in Macro 2 check to make sure in the "Stopwatch_Play()end,function(*)en*d)" part the last word is "end" and not "en-d"