I asked about it on the Orion discord. Credit to adverserath for the amazing script

I added some comments and made it flow a little better.
Consider adding a screen shot of your "epic dps" below.
Code: Select all
function ShowDPS() {
var dps = 0;
var highestdps = 0;
var lastMessage = null;
var pastMessage = null;
var damage_text = [];
while (true) {
dps = 0;
lastMessage = Orion.LastJournalMessage();
pastMessage = lastMessage;
while (pastMessage && pastMessage.Timer() > Orion.Now() - 1000) {
if (pastMessage.Serial() == '0xFFFFFFFF' && Orion.Contains(pastMessage.Text(), 'damageecho') && !Orion.Contains(pastMessage.Text(), Player.Serial())) {
//Damage parsing.
damage_text = pastMessage.Text().match(/^damageecho:\s\w*=\w*\s\w*=(\d*)/i);
//Adding damage.
dps += parseInt(damage_text[1]);
}
//Check for dps update.
if (dps > highestdps) {
//Update dps.
highestdps = dps;
}
pastMessage = pastMessage.PrevMessage();
}
DPSGump(dps, highestdps);
Orion.Wait(200);
}
}
function DPSGump(dps, highestdps) {
var gump = Orion.CreateCustomGump(1);
gump.Clear();
//Set background.
gump.AddHtmlGump(1, 0, 0, 160, 60, '0x1400', 1, 0);
//Display.
gump.AddText(10, 10, '0x0035', 'Current DPS -- ' + dps);
gump.AddText(10, 30, '0x0035', 'Highest DPS -- ' + highestdps);
gump.Update();
}