您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show Advanced button stats
// ==UserScript== // @name Advanced button stats // @namespace http://www.reddit.com/r/thebutton/ABS-pastymage // @version 0.5.17 // @description Show Advanced button stats // @author pastymage (forked from /u/bwochinski 0.5) // @match *://www.reddit.com/r/thebutton/* // @grant none // ==/UserScript== //CONFIG var advInterval = 500; //update interval in milliseconds var advKeepAmt = 60; //history to keep (in seconds) //if you want it to automatically click, change -1 in the // line below to the time (remaining) that you want var timeyouwant = -1 //Important variables var parHist = []; var histLen = (1000 / advInterval) * advKeepAmt; var lowestTime = 60.00; var clicked = false; if ( !document.getElementsByClassName ) { document.getElementsByClassName = function(cl, tag) { var els, matches = [], i = 0, len, regex = new RegExp('(?:\\s|^)' + cl + '(?:\\s|$)'); // If no tag name is specified, // we have to grab EVERY element from the DOM els = document.getElementsByTagName(tag || "*"); if ( !els[0] ) return false; for ( len = els.length; i < len; i++ ) { if ( els[i].className.match(regex) ) { matches.push( els[i]); } } return matches; // an array of elements that have the desired classname }; } // Very simple implementation. We're only checking for an id, class, or tag name. // Does not accept CSS selectors in pre-querySelector browsers. function qq(el, tag) { var firstChar = el.charAt(0); switch ( firstChar ) { case "#": return document.getElementById( el.slice(1) ); case ".": var res = document.getElementsByClassName( el.slice(1)); return res; default: return document.getElementsByTagName(tag); } }; function qqf(el, tag) { var res = qq(el,tag); return res[0]; } function setupABSDisplay() { var div; var tmp; const LEFTSTYLE = "style='Font: 18px Verdana normal black; width: 100%; float: left;'" // const LEFTSTYLE = "style='Font: 18px Verdana normal black; width: 400px; float: left;''" const RIGHTSTYLE = "style='Font: 18px Verdana normal black; width: 90px; float: left;'" div=document.createElement('div'); div.id='advButtonStats' div.style='position: absolute; bottom: 0; margin-top: 100px; margin: 0 auto; width: 480px;' qqf(".thebutton-form").appendChild(div); tmp=document.createElement('div'); tmp.innerHTML = "<div id='advSPACER' " + LEFTSTYLE + "><br></div>"; qq("#advButtonStats").appendChild(tmp.firstChild); tmp.innerHTML = "<div id='advBOPS' " + RIGHTSTYLE + ">BOPS:</div>"; qq("#advButtonStats").appendChild(tmp.firstChild); tmp.innerHTML = "<div id='advLowest' " + RIGHTSTYLE + ">Lowest Seen:</div>"; qq("#advButtonStats").appendChild(tmp.firstChild); tmp.innerHTML = "<div id='advPPM' " + RIGHTSTYLE + ">Clicks/min:</div>"; qq("#advButtonStats").appendChild(tmp.firstChild); tmp.innerHTML = "<div id='advFlair' " + RIGHTSTYLE + ">Current Flair:</div>"; qq("#advButtonStats").appendChild(tmp.firstChild); tmp.innerHTML = "<div id='advSPC' " + RIGHTSTYLE + ">Avg Secs/Click:</div>"; qq("#advButtonStats").appendChild(tmp.firstChild); if (timeyouwant != -1) { tmp.innerHTML = "<div id='advCamp' " + RIGHTSTYLE + "><b>Auto Click:</b> " + timeyouwant.toString() + "</div>"; qq("#advButtonStats").appendChild(tmp.firstChild); } } function advStatUpdate() { if (parHist.length > histLen) { parHist.pop(); } var advText = qqf(".thebutton-participants").textContent.replace(",",""); parHist.unshift(parseInt(advText)); //console.log(parHist); var curBOPS = (parHist[0] - parHist[parHist.length - 1]) / (parHist.length / (1000 / advInterval)); var curPPM = (parHist[0] - parHist[parHist.length - 1]) * (60 / advKeepAmt) * (advKeepAmt / (parHist.length / (1000 / advInterval))); var curTime = parseFloat(qq("#thebutton-s-10s").textContent + qq("#thebutton-s-1s").textContent + "." + qq("#thebutton-s-100ms").textContent + qq("#thebutton-s-10ms").textContent); if (!clicked) { if (curTime < lowestTime) { lowestTime = curTime; document.title=curTime.toString(); } else { document.title="the button"; } } if (!clicked && (curTime < timeyouwant + 1) && (curtime >= timeyouwant)) { document.title = "Done!" qq("#thebutton").click(); clicked=true; } qq("#advBOPS").innerHTML = "<b>BOPS:</b> " + curBOPS.toFixed(5); qq("#advPPM").innerHTML = "<b>Clicks/min:</b> " + Math.round(curPPM); qq("#advFlair").innerHTML = "<b>Current Flair:</b> <span class='flair flair-press-" + String(curTime + 9).substring(0,1) + "'>" + String(curTime).substring(0,2) + "s</span>"; qq("#advLowest").innerHTML = "<b>Lowest Seen:</b> " + lowestTime + "s</span>"; qq("#advSPC").innerHTML = "<b>Avg Secs/Click:</b> " + (1 / curBOPS.toFixed(5)).toFixed(2); } function main() { setupABSDisplay(); advStatUpdate(); setInterval(advStatUpdate, advInterval); } main();