您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A agario mod v1
- // ==UserScript==
- // @name Agario Mod V1
- // @namespace http://agar.io/
- // @version V1
- // @description A agario mod v1
- // @author Odyis
- // @match http://*/*
- // @grant none
- // ==/UserScript==
- var ourskins = "Odyis;0chan;18-25;1up;8ball;UmguwJ0;ace;agariomods.com;al sahim;alaska;albania;algeria;anarchy;android;anonymous;aperture;apple;atari;avatar;awesome;awwmuffin;baka;bandaid;bane;baseball;basketball;batman;beats;belarus;belgium;bender;bert;bielarus;bitcoin;black widow;blobfish;bluh;bobross;bobsaget;boo;boogie2988;borg;bp;breakfast;breizh;buckballs;burgundy;butters;byzantium;c;catalonia;catalunya;catman;chaika;charmander;chechenya;checkpointplus;cheese;chickfila;chocolate;chrome;chucknorris;cirno;cj;cling on;coca cola;cokacola;colombia;colombiaa;controless;converse;cookie;coookie;cornella;cornellà;coruja;creeper;creepydoll;csfb;cuba;cyprus;czech;czechia;czechrepublic;darksideofmoon;deadpool;deal with it;deathly hallows;deathstar;demon;derp;desu;dhole;dickbutt;doge;doggie;dolan;domo;domokun;dong;donut;doraemon;dreamcast;drunken;ebin;egg;egoraptor;egypt;eksi;electrokitty;epicface;expand;eye;facebook;fast forward;fastforward;fbi;fidel;fiji;finn;firefox;fishies;flash;florida;fnatic;fnaticc;foe;forocoches;freeman;freemason;friesland;frogout;fuckfacebook;gaben;gabenn;garfield;gaston;generikb;getinmybelly;getinthebox;gimper;github;giygas;gnomechild;gonzo;grammar nazi;grayhat;grima;grumpy;hagrid;halflife;halflife3;halo;handicapped;hap;hatty;hawaii;hawkeye;hebrew;heisenburg;helix;hipsterwhale;hispachan;hitler;homestuck;honeycomb;hosokawa;hue;hydro;iceland;ie;illuminati;illuminatiii;imaqtpie;imgur;imperial japan;imperialists;imperialjapan;instagram;iron man;isaac;isis;isreal;itchyfeetleech;ivysaur;jahrein;james bond;java;jew;jewnose;jimmies;jupiter;kalmar union;kame;kappa;kenny;kingdomoffrance;kingjoffrey;kirby;kitty;klingon;knights templar;knightstemplar;knowyourmeme;kurdistan;kyle;ladle;le snake;lenny;lgbt;liberland;libertyy;liechtenstien;linux;llessur;loadingreadyrun;loki;love;luigi;macedonia;malta;mario;mars;maryland;masterball;mastercheif;mcdonalds;meatboy;meatwad;megamilk;mike tyson;mike;mlg;moldova;mortalkombat;mr burns;mr.bean;mr.popo;n64;naga;nasa;nauru;nazi;nick fury;nick;nickelodeon;nipple;northbrabant;northernlion;nosmoking;notch;nsa;obama;obey;osu;ouch;palau;pandaexpress;pedo;pedobear;peka;penguin;pepe;pepsi;pewdiepie;pi;pig;piggy;pika;pinkfloyd;pinkstylist;pirate;piratebay;pizza;pizzaa;playstation;poop;potato;pt;quantum leap;question;rageface;retard smile;rewind;rockstar;rolfharris;roomba;rss;ryukyu;s.h.e.i.l.d;samoa;satan;scream;seal;serbia;sharingan;shell;shine;shrek;sinistar;sir;skull;skype;skyrim;slack;slovakia;slovenia;slowpoke;smash;snafu;snapchat;soccer;soliare;solomid;somalia;space ace;space;spawn;spiderman;spongegar;spore;spqr;spy;squirtle;stalinjr;star wars rebel;starbucks;starchild;starrynight;stitch;stupid;summit1g;sunface;superman;taco;teamfortress;thor;tintin;tonga;transformer;transformers;triforce;trollface;tubbymcfatfuck;turkey;tv;twitch;twitter;uguu;ukip;uppercase;uruguay;utorrent;vatican;vietnam;virus;voat;voyager;wakawaka;wales;walrus;wazowski;wewlad;white light;windows;wit my woes;wwf;wykop;xsk;ycm;yinyang;ylilauta;ylilautaa;yoba;yobaa;yobaaa;yourmom;youtube;zeon;zimbabwe;zoella;zoidberg";
- var showsh = false;
- var showt = localStorage.getItem("showt")=="true";
- var ldown = false;
- var showfps = false;
- var showpio = false; //packets in/out per second
- if(showt===null){localStorage.setItem("showt","true");showt=true;}
- setInterval(function(){if(showsh)DrawStats(false);if(showt)count();},300);
- var gamejs = "", modBlocking = true;
- var tester = document.getElementsByTagName("script");
- var i = 0, main_out_url = document.location.protocol+"//agar.io/main_out.js", discovered_mainouturl = 0;
- var W = '';
- var Ja = '';
- var b = '';
- var c3eg2 = '';
- var in_game = false;
- var pandb = '';
- /*bgm*/
- var bgmusic = '';
- $('#audiotemplate').clone()[0];
- var tracks = ['BotB 17936 Isolation Tank.mp3','BotB 17934 bubblybubblebubblingbubbles.mp3','BotB 17935 bloblobloblboblbolboblboblbobolbloblob.mp3','BotB 17937 Woofytunes.mp3','BotB 17938 slowgrow.mp3'];
- /*sfx*/
- //sfx play on event (only one of each sfx can play - for sfx that won't overlap with itself)
- var ssfxlist = [
- 'spawn',
- 'gameover'
- ];
- var ssfxs = [];
- for (i=0;i<ssfxlist.length;i++) {
- var newsfx = new Audio("//skins.agariomods.com/botb/sfx/" + ssfxlist[i] + ".mp3");
- newsfx.loop = false;
- ssfxs.push(newsfx);
- }
- function sfx_play(id) {
- if (document.getElementById("sfx").value==0) return;
- var event = ssfxs[id];
- event.volume = document.getElementById("sfx").value;
- event.play();
- }
- //sfx insertion on event (multiple of same sfx can be played simultaneously)
- var sfxlist = [
- 'pellet',
- 'split',
- 'eat',
- 'bounce',
- 'merge',
- 'virusfeed',
- 'virusshoot',
- 'virushit'
- ];
- var sfxs = [];
- for (i=0;i<sfxlist.length;i++) {
- var newsfx = new Audio("//skins.agariomods.com/botb/sfx/" + sfxlist[i] + ".mp3");
- newsfx.loop = false;
- newsfx.onended = function() {
- $(this).remove();
- }
- sfxs.push(newsfx);
- }
- function sfx_event(id) {
- if (document.getElementById("sfx").value==0) return;
- var event = jQuery.clone(sfxs[id]);
- event.volume = document.getElementById("sfx").value;
- event.load();
- event.play();
- }
- /* lets start to deal with regressions */
- var test = 0;
- var passed = 0;
- var failed = 0;
- var chart_update_interval = 10;
- var chart = null;
- var chart_data = [];
- var chart_counter = 0;
- var chart_s = '';
- var chart_m = '';
- var chart_G = '';
- var chart_Na= '';
- var chart_k = '';
- for (i=0; i<tester.length; i++ ){
- src = tester[i].src;
- if (src.substring(0, main_out_url.length ) == main_out_url) {
- discovered_mainouturl = src.replace("//agar.io/","");
- }
- }
- if(discovered_mainouturl != 0) {
- httpGet(discovered_mainouturl, function(data) {
- gamejs = "window.agariomods = " + data.replace("socket open","socket open (agariomods.com mod in place)");
- gamejs = gamejs.replace(/\n/g, "");
- offset = gamejs.search("..=\"poland;");
- Ja = gamejs.substr(offset,2);
- offset = gamejs.search(".....src=\"skins");
- b = gamejs.substr(offset+2,1);
- offset = gamejs.search(".."+b+"..src");
- W = gamejs.substr(offset,1);
- //this.P&&b.strokeText
- var components = /this.(.)&&b.strokeText/.exec(gamejs);
- pandb = components[1];
- var components = /strokeText\((.{1,14})\);/.exec(gamejs);
- c3eg2 = components[1];
- var components = /\((.)\=..x,.\=..y\)/.exec(gamejs);
- chart_s = components[1];
- var components = /\(.\=(.).x,.\=..y\)/.exec(gamejs);
- chart_m = components[1];
- var components = /(.)\=Math.max\(.,..\(\)\);/.exec(gamejs);
- chart_G = components[1];
- var components = /.\=Math.max\(.,(..)\(\)\);/.exec(gamejs);
- chart_Na = components[1];
- var components = /(.)\[0\]\.name\&\&\(/.exec(gamejs);
- chart_k = components[1];
- //console.log ("chartmod info: chart_m = "+chart_m+"; chart_s = "+chart_s+"; chart_G = "+chart_G+"; chart_Na = "+chart_Na+"; chart_k = "+chart_k);
- agariomodsRuntimeInjection();
- });
- }
- // XMLHttp, because apparently raven is doing funky stuff with jQuery
- function httpGet(theUrl, callback) {
- var xmlHttp = new XMLHttpRequest();
- xmlHttp.open("GET", theUrl, true);
- xmlHttp.send(null);
- xmlHttp.onreadystatechange = function() {
- if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
- callback(xmlHttp.responseText);
- }
- };
- }
- function agariomodsRuntimeInjection() {
- var script = document.createElement("script");
- script.src='//cdnjs.cloudflare.com/ajax/libs/canvasjs/1.4.1/canvas.min.js';
- document.head.appendChild(script);
- var tester = document.getElementsByTagName("head");
- var oldhtml = tester[0].innerHTML;
- oldhtml = oldhtml.replace('width:350px;', '');
- oldhtml = oldhtml.replace('-webkit-transform:translate(-50%,-50%);', '');
- oldhtml = oldhtml.replace('-ms-transform:translate(-50%,-50%);', '');
- oldhtml = oldhtml.replace('transform:translate(-50%,-50%);', '');
- oldhtml = oldhtml.replace('top:50%;left:50%;','margin:10px;');
- tester[0].innerHTML = oldhtml;
- var script = document.createElement("script");
- agariomodsRuntimePatches();
- script.innerHTML = gamejs;
- document.head.appendChild(script);
- agariomodsRuntimeHacks();
- bgmusic = $('#audiotemplate').clone()[0];
- bgmusic.src = "//skins.agariomods.com/botb/" + tracks[Math.floor(Math.random() * tracks.length)];
- bgmusic.load();
- bgmusic.loop = false;
- bgmusic.onended = function() {
- var track = tracks[Math.floor(Math.random() * tracks.length)];
- bgmusic.src = "//skins.agariomods.com/botb/" + track;
- bgmusic.play();
- }
- window.onbeforeunload = function() {
- return 'Are you sure you want to quit agar.io?';
- };
- // as a trackpad user, this fix should reduce the frequency at which I am killed.
- $("#canvas").on('mousedown', function(event){
- event.preventDefault();
- });
- $("#chart-container").css("pointerEvents", "none");
- $("#chart-container-agariomods").css("pointerEvents", "none");
- $("#fps-agariomods").css("pointerEvents", "none");
- $("#pi-agariomods").css("pointerEvents", "none");
- }
- function agariomodsRuntimePatches() {
- gamejs_patch(")&&this",")&&(this","test");
- gamejs_patch(/\w>\w\/1\.1\?.*-50%\)"\);/,"","fixing menu on resize");
- gamejs_patch(';reddit;', ';reddit;'+ourskins+';', "add our skinlist to the original game skinlist.");
- gamejs_patch(b+'=this.name.toLowerCase();', b+'=this.name.toLowerCase();var agariomods="";var ourskins = "'+ourskins+'";if(('+b+'.length >0) && (ourskins.split(";").indexOf('+b+')>-1)) {agariomods="//skins.agariomods.com/i/"+'+b+'+".png";} else if ('+b+'.substring(0, 2) == "i/" && document.getElementById("imgur").checked) {agariomods="//i.imgur.com/"+this.name.substring(2)+".jpg";} else if (document.getElementById("imgur").checked) {agariomods="//agar.io/skins/" + this.name.toLowerCase() + ".png";}', "add check for which skin mode we are in. be it no skin, default skin, imgur skin, or an agariomods skin.");
- gamejs_patch('xa=!1', 'zz=!1,yq=!1,xx=!1,xz=!1,xa=!1', "adding variables");
- gamejs_patch(W +'['+b+'].src="skins/"+'+b+'+".png"', W+'['+b+'].src=agariomods', "check for agariomods img src variable");
- gamejs_patch("this."+pandb+"&&b.strokeText("+c3eg2+");b.fillText("+c3eg2+")", "if (String(c).substring(0, 2) != \"i/\") {this."+pandb+"&&b.strokeText("+c3eg2+");b.fillText("+c3eg2+")}", "add imgur check for hiding username when using imgur id aka c3eg2");
- gamejs_patch(b+"=this.name.toLowerCase();", b+"=this.name.toLowerCase(); if ("+b+".substring(0, 2) == \"i/\") {" +Ja+ "+="+b+";} ;", "add imgur check #2.");
- gamejs = addChartHooks(gamejs);
- gamejs = addOnCellEatenHook(gamejs);
- gamejs = addTeamMassHook(gamejs);
- gamejs = addCanvasBGHook(gamejs);
- gamejs = addVirusColorHook(gamejs);
- gamejs = addFunctions(gamejs);
- gamejs = addOnShowOverlayHook(gamejs);
- gamejs = addOnHideOverlayHook(gamejs); //Because I don't want to detect when we hide it, only when the game does.
- gamejs = addLeaderboardHook(gamejs);
- gamejs = addConnectHook(gamejs);
- gamejs = addRecieveHook(gamejs);
- gamejs = addOnSendHook(gamejs);
- gamejs = addOnDrawHook(gamejs);
- //gamejs = gamejs.replace(/;/g, '\n');
- console.log("Testing complete, "+passed+" units passed and "+failed+" units failed.");
- if (failed) console.log(new Error("UNIT FAILED"));
- }
- function gamejs_patch(search, replace, purpose) {
- gamejs = gamejs.replace(search,replace);
- testCondition((-1 != gamejs.indexOf(replace)), test++, purpose);
- }
- function testCondition (condition, id, comment) {
- if(condition) {
- console.log("test: #"+id+" PASSED - "+ comment);
- passed++;
- } else {
- console.error("test: #"+id+" FAILED - "+ comment);
- failed++;
- }
- }
- function agariomodsRuntimeHacks() {
- jQuery('#helloDialog').css({left: '5px'});
- jQuery('#helloDialog').css({top: '5px'});
- jQuery('#helloDialog').css({margin: '0px'});
- jQuery('#helloDialog').css({marginLeft: 'auto'});
- jQuery('#helloDialog').css({marginRight: 'auto'});
- // opacity: 0.5;
- //
- jQuery('#helloDialog').css({opacity: '0.85'});
- jQuery('#helloDialog').css({width: '450px'});
- document.body.style.backgroundSize = 'cover';
- document.body.style.backgroundRepeat = 'no-repeat';
- document.body.style.backgroundAttachment = "fixed";
- var nodeDiv = document.createElement("div");
- $( document ).ready(function() {
- hd = document.getElementById("helloDialog");
- cachedhd = hd.innerHTML;
- hd.innerHTML = cachedhd.replace("<center>Agar.io</center>", "<a target=\"_blank\" style=\"position:absolute; padding-left:435px;top:-10px; z-index: -1; height:120px;\" href=\"https://www.reddit.com/r/Agario/\"><img src=\"//i.imgur.com/TkTWOrc.png\" height=\"120px\"/></a>");
- });
- document.getElementById("nick").placeholder = "agariomods.com";
- nodeDiv.id = "includedContent";
- nodeDiv.style.width = "400px"
- nodeDiv.style.backgroundColor = "#000000";
- nodeDiv.style.zIndex = 999;
- nodeDiv.style.position = "relative";
- nodeDiv.style.padding = "8px";
- nodeDiv.style.borderRadius = "5px";
- nodeDiv.style.color = "#dddddd";
- nodeDiv.style.margin = "10px";
- nodeDiv.style.marginTop = "0";
- nodeDiv.style.maxHeight = "250px"; //The settings and the ad are being pushed down too far on some screens (1366*768). ~Mevin1
- nodeDiv.style.overflow = "auto"; //add scroll bar
- nodeDiv.innerHTML += '1.9.5: Go catch up with the <a target="_blank" href="http://agariomods.com/documentation.html">Documentation</a><br><h4><a href="http://www.agariomods.com/help.html" target="_blank"><font color="pink">CLICK HERE FOR HELP</font></a></h4>\
- <div style="background-color: #ffffff; color: #000000; padding: 2px; margin: 0px;">\
- <small><b>Disable ad blockers</b> - They are breaking the game and our modifications in random and unexpected ways.</small>\
- </div>';
- jQuery('#region').parent().get(0).appendChild(nodeDiv);
- jQuery(".form-group:first").replaceWith('<br>');
- var selector = jQuery('#region');
- var playBtn = jQuery('#playBtn');
- var nodeInput = document.createElement("span");
- var nodeSpan = document.createElement("span");
- var nodeBr = document.createElement("br");
- var nodeLinks = document.createElement("div");
- nodeLinks.innerHTML = "<big><a href='http://skins.agariomods.com' target='_blank'>SKINS</a> - <a href='http://agariomods.com/chat.html' target='_blank'>CHAT</a> - <a href='http://agariomods.com' target='_blank'>WEBSITE</a> - <a href='http://agariomods.com/help.html' target='_blank'>HELP</a> - <a href onclick=\"alert('---HOTKEYS---\\nHold Z - Show Stats In-Game\\nSuicide - Alt+Q\\nToggle Benchmarker - T\\nClear Benchmarks - Alt+T\\nFPS Counter - Alt+1\\nPackets In/Out Per Second - Alt+2\\nTry Script Lag Recover - Alt+R');return false;\" target='_blank'>HOTKEYS</a></big>";
- nodeLinks.style.marginLeft='10px';
- nodeSpan.className = "glyphicon glyphicon-refresh btn btn-info";
- nodeSpan.style.fontSize = "1.5em";
- nodeSpan.style.cssFloat = "left";
- nodeSpan.style.paddingTop = "2px";
- nodeSpan.style.width = "15%";
- nodeSpan.style.height = "33px";
- nodeSpan.addEventListener("click", function (e) {
- document.getElementById("iphack").value=document.getElementById("iphack").value.replace(/\s+/g, '');
- var ip = document.getElementById("iphack").value.replace("ws://","");
- if(ip.length>8)connect("ws://"+ip);
- });
- // nodeInput.className = "form-control";
- nodeInput.id = "iphack"
- nodeInput.style.width = "85%";
- nodeInput.style.cssFloat = "left";
- nodeInput.style.cssClear = "right";
- nodeInput.style.padding = "5px;";
- nodeInput.style.margin = "5px;";
- nodeInput.style.border = "2px solid green";
- nodeInput.innerHTML = "Zeach, the owner of Agar.io has told us to remove this particular feature, he has banned the ability to connect to a server directly by it's IP which breaks all mods. ";
- jQuery('#locationUnknown').prepend(nodeLinks);
- jQuery(playBtn).parent().get(0).appendChild(nodeInput);
- jQuery(playBtn).parent().get(0).appendChild(nodeSpan);
- jQuery(playBtn).parent().get(0).appendChild(nodeBr);
- jQuery(playBtn).parent().prepend("<b>Current Server IP: </b><span id='ip'></span>");
- var nodeAudio = document.createElement("audio");
- nodeAudio.id = 'audiotemplate';
- jQuery(playBtn).parent().get(0).appendChild(nodeAudio);
- jQuery('#playBtn').off();
- $('.btn-needs-server').prop('disabled', true);
- jQuery('#playBtn').click(function() {
- setNick(document.getElementById('nick').value);
- return false;
- });
- jQuery('.form-group:first').after( "<hr style='margin: 7px; border-width: 2px'>" );
- jQuery('.form-group:first').removeAttr("class");
- }
- /* begin mikeys new code */
- var chart_update_interval = 10;
- var chart = null;
- var chart_data = [];
- var chart_counter = 0;
- var stat_canvas = null;
- var stats = null;
- var my_cells = null;
- var my_color = "#ff8888";
- var pie = null;
- var stats_chart;
- var display_chart = LS_getValue('display_chart', 'true') === 'true';
- var display_stats = LS_getValue('display_stats', 'false') === 'true';
- /////////////////////////////////////////////////////////
- var g_stat_spacing = 0;
- var g_display_width = 220;
- var g_layout_width = g_display_width;
- ////////////////////////////////////////////////////////////////
- function addChartHooks(script) {
- var match = script.match(/max\((\w+),(\w+)\(/);
- var high = match[1];
- var current = match[2];
- match = script.match(/1==(\w+)\.length&&\(/);
- var my_cells = match[1];
- var split = script.split(match[0]);
- script = split[0] + '1=='+my_cells+'.length&&(OnGameStart('+my_cells+'),' + split[1];
- split = script.split(script.match(/"Score: "\+~~\(\w+\/100\)/)[0]);
- match = split[1].match(/-(\d+)\)\);/);
- var subSplit = split[1].split(match[0]);
- split[1] = subSplit[0] + '-'+match[1]+'),('+my_cells+'&&'+my_cells+'[0]&&OnUpdateMass('+current+'())));' + subSplit[1];
- return split[0] + '"Current: "+~~('+current+'()/100)+" High: "+~~('+high+'/100)' + split[1];
- }
- function addTeamMassHook(script) {
- var match = script.match(/1==(\w+)\.length&&\(/);
- var my_cells = match[1];
- var match = script.match(/;(\w+)\.(\w+)\(this\.name\)/);
- var split = script.split(match[0]);
- var avar = match[2];
- script = split[0]+";"+match[1]+'.'+match[2]+'(this.name);if(yq){if(p[0]&&N==":teams"&&'+my_cells+'.indexOf(this)==-1){if(this.color.substr(p[0].color.search("ff"),2)=="ff"){this.k.'+match[2]+'(this.name+" ["+~~(this.size*this.size/100)+"]");}}}'+split[1];
- var match = script.match(/indexOf\((\w+)\)\)\)\{/);
- var split = script.split(match[0]);
- return split[0]+'indexOf('+match[1]+')))||(this.size>=32&'+my_cells+'[0]&&N==":teams"&&!this.d)){if(yq){if(this.name==""){this.k=new ka(this.h(),"#FFFFFF",true,"#000000");this.k.'+avar+'(this.name);}};'+split[1];
- var split = script.split(match[0]);
- }
- function addFunctions(script) {
- var match = script.match(/((\w)\.setAcid)/);
- var split = script.split(match[0]);
- script = split[0]+match[2]+'.Suicide=function(){var b=new ArrayBuffer(1);(new DataView(b)).setUint8(0, 20);q.send(b)};'+match[2]+'.setVColors=function(a){zz=a};'+match[2]+'.setTeamMass=function(a){yq=a;if(a){jQuery(\'#names\').attr(\'checked\',false);check(document.getElementById(\'names\'));}};'+match[2]+'.setBG=function(a){xx=a;if(a){var url=localStorage.getItem("bgurl");if(url==null){url=""};var promp=prompt("Image URL",url);if(null==promp){jQuery("#bgimg").attr("checked",false);check(document.getElementById("bgimg"));xx=!a;return;}localStorage.setItem("bgurl",promp);jQuery("#acid").attr("checked",false);check(document.getElementById("acid"));document.body.style.backgroundImage=\'url("\'+promp+\'")\';xz=confirm("Show Grid Lines?");}};'+match[1]+split[1]
- var split = script.split("setNames=function(a){");
- return split[0]+"setNames=function(a){if(!a){jQuery(\'#tmass\').attr(\'checked\',false);check(document.getElementById(\'tmass\'));}"+split[1];
- }
- function addCanvasBGHook(script) {
- var match = script.match(/rRect\(0,0,(\w),(\w)\)/);
- var split = script.split(match[0]);
- script = split[0]+'rRect(0,0,'+match[1]+','+match[2]+');xx&&!xz?g.clearRect(0, 0, r, s):'+split[1].substr(1);
- var match = script.match(/BFF";/);
- var split = script.split(match[0]);
- return split[0]+'BFF";xx&&xz?g.clearRect(0,0,r,s):'+split[1];
- }
- function addVirusColorHook(script) {
- var match = script.match(/(\?\(\w\.fillStyle=")/);
- var split = script.split(match[0]);
- return split[0]+'||zz&&this.d'+match[1]+split[1]
- }
- function addLeaderboardHook(script) {
- var match = script.match(/(fillStyle="#FFAAAA")(.+)(\w+)(\+1\+"\. ")/);
- var split = script.split(match[0]);
- return split[0]+match[1]+',OnLeaderboard('+match[3]+'+1)'+match[2]+match[3]+match[4]+split[1]
- }
- function addOnCellEatenHook(script) {
- // null!=p&&p.T();
- // l&&k&&(k.S()
- // var match = script.match(/(\w+)&&(\w+)&&\((\w+)\.S/);
- var match = script.match(/(\w+)&&(\w+)&&\((\w+)\.(\w+)/);
- var split = script.split(match[0]);
- return split[0] + match[1] + '&&' + match[2] + '&&(OnCellEaten('+match[1]+','+match[2]+'),' + match[3] + '.' + match[4] + split[1];
- }
- function addOnShowOverlayHook(script) {
- var match = script.match(/\w+\("#overlays"\)\.fadeIn\((\w+)\?\w+:\w+\);/);
- var split = script.split(match[0]);
- return split[0] + match[0] + 'OnShowOverlay(' + match[1] + ');' + split[1];
- }
- function addConnectHook(script) {
- var match = script.match(/console\.log\("Connecting to "\+a\);/);
- var split = script.split(match[0]);
- return split[0] + match[0] + 'document.getElementById("ip").innerHTML=a.replace(/wss?:\\/\\//,"");' + split[1];
- }
- function addRecieveHook(script) {
- // Za(new DataView(a.data))
- var match = script.match(/\w\(new DataView\(..data\)\)/);
- var split = script.split(match[0]);
- return split[0] + match[0] + ';Recieve();' + split[1];
- }
- function addOnSendHook(script) {
- var match = script.match(/\w+\.send\(\w+\.buffer\)/);
- var split = script.split(match[0]);
- return split[0] + match[0] + ';OnSend();' + split[1];
- }
- function addOnHideOverlayHook(script) {
- var match = script.match(/\w+\("#overlays"\)\.hide\(\)/);
- var split = script.split(match[0]);
- return split[0] + match[0] + ';OnHideOverlay()' + split[1];
- }
- function addOnDrawHook(script) {
- var match = script.match(/\w+\.width&&(\w+)\.drawImage\(\w+,\w+-\w+\.width-10,10\);/);
- var split = script.split(match[0]);
- return split[0] + match[0] + 'OnDraw(' + match[1] + ');' + split[1];
- }
- var __STORAGE_PREFIX = "mikeyk730__";
- function LS_getValue(aKey, aDefault) {
- var val = localStorage.getItem(__STORAGE_PREFIX + aKey);
- if (null === val && 'undefined' != typeof aDefault) return aDefault;
- return val;
- }
- function LS_setValue(aKey, aVal) {
- localStorage.setItem(__STORAGE_PREFIX + aKey, aVal);
- }
- function GetRgba(hex_color, opacity)
- {
- var patt = /^#([\da-fA-F]{2})([\da-fA-F]{2})([\da-fA-F]{2})$/;
- var matches = patt.exec(hex_color);
- return "rgba("+parseInt(matches[1], 16)+","+parseInt(matches[2], 16)+","+parseInt(matches[3], 16)+","+opacity+")";
- }
- function secondsToHms(d)
- {
- d = Number(d);
- var h = Math.floor(d / 3600);
- var m = Math.floor(d % 3600 / 60);
- var s = Math.floor(d % 3600 % 60);
- return ((h > 0 ? h + ":" + (m < 10 ? "0" : "") : "") + m + ":" + (s < 10 ? "0" : "") + s);
- }
- ////////////////////////////////////////////////////////////////
- jQuery(document).ready(function()
- {
- jQuery('body').append('<div id="chart-container" style="display:none; position:absolute; height:176px; width:300px; left:10px; bottom:44px"></div>\
- <div id="chart-container-agariomods" style="opacity: 0.7; position:absolute; height:20px; width:300px; right:10px; bottom:10px;"> agariomods.com - modding <b>without</b> cheating</div>\
- <div id="debug" style="position:absolute; top:5px; left:10px;">\
- <div id="fps-agariomods" style="color: white; display: none; background-color: rgba(0,0,0,.5); padding:0 4px;"><b>FPS: </b><span>0</span></div>\
- <div id="pio-agariomods" style="color: white; display: none; background-color: rgba(0,0,0,.5); padding:0 4px;"><b>PI/O/s: </b><span>0</span>/<span>0</span></div>\
- </div>\
- <img src="http://kelvin.gq/agariomods?'+Date.now()+'" style="display:none;">');
- jQuery('#instructions').remove();
- //jQuery('.glyphicon-cog').addClass("glyphicon-refresh")
- //jQuery('.glyphicon-cog').removeClass("glyphicon-cog");
- //jQuery('.btn-settings').attr('onclick','connect("ws://"+document.getElementById("ip").innerHTML);if(in_game)OnShowOverlay(false);');
- //jQuery('.btn-settings').attr('type','button');
- //jQuery('#gamemode').removeAttr('required');
- //jQuery('.btn-settings').removeClass("btn-settings");
- jQuery('.btn-settings').hide();
- jQuery('#settings').show();
- var checkbox_div = jQuery('#settings input[type=checkbox]').closest('div');
- checkbox_div.append('<label><input type="checkbox" id="acid" onchange="setAcid($(this).is(\':checked\'));if($(this).is(\':checked\')){$(\'#bgimg\').attr(\'checked\',false);check(document.getElementById(\'bgimg\'));}">Acid</label>');
- checkbox_div.append('<label><input type="checkbox" onchange="if(this.checked){jQuery(\'#chart-container\').show()}else{jQuery(\'#chart-container\').hide()}">Show chart</label>');
- checkbox_div.append('<label><input type="checkbox" onchange="setVColors($(this).is(\':checked\'));">Colorless Viruses</label>');
- checkbox_div.append('<label><input id="imgur" type="checkbox">Imgur Skins</label>');
- checkbox_div.append('<label><input type="checkbox" id="tmass" onchange="setTeamMass($(this).is(\':checked\'));">Show Teamed Mass</label>');
- checkbox_div.append('<label><input id="bgimg" type="checkbox" onchange="setBG($(this).is(\':checked\'));">Set Background</label>');
- checkbox_div.append('<div id="sliders"><label>SFX<input id="sfx" type="range" value="0" step=".1" min="0" max="1"></label><label>BGM<input type="range" id="bgm" value="0" step=".1" min="0" max="1" oninput="volBGM(this.value);"></label></div>'); jQuery('#overlays').append('<div id="stats" style="opacity: 0.85; position: absolute; top:330px; left: 460px; width: 480px; display: none; background-color: #FFFFFF; border-radius: 15px; padding: 5px 15px 5px 15px; transform: translate(0,-50%); white-space: nowrap; overflow:hidden;"><div id="statArea" style="vertical-align:top; width:250px; display:inline-block;"></div><div id="pieArea" style="vertical-align: top; width:200px; height:150px; display:inline-block; vertical-align:top"> </div><div id="gainArea" style="width:500px; vertical-align:top"></div><div id="lossArea" style="width:500px; "></div><div id="chartArea" style="width:450px; display:inline-block; vertical-align:top"></div></div>');
- jQuery('#stats').hide(0);
- jQuery('#playBtn').width('74%');
- });
- function ResetChart()
- {
- chart = null;
- chart_data.length = 0;
- chart_counter = 0;
- jQuery('#chart-container').empty();
- }
- function UpdateChartData(mass)
- {
- chart_counter++;
- if (chart_counter%chart_update_interval > 0)
- return false;
- chart_data.push({
- x: chart_counter,
- y: mass/100
- });
- return true;
- }
- function CreateChart(e, color, interactive)
- {
- return new CanvasJS.Chart(e,{
- interactivityEnabled: interactive,
- title: null,
- axisX:{
- valueFormatString: " ",
- lineThickness: 0,
- tickLength: 0
- },
- axisY:{
- lineThickness: 0,
- tickLength: 0,
- gridThickness: 2,
- gridColor: "white",
- labelFontColor: "white"
- },
- backgroundColor: "rgba(0,0,0,0.2)",
- data: [{
- type: "area",
- color: color,
- dataPoints: chart_data
- }]
- });
- }
- function UpdateChart(mass, color)
- {
- my_color = color;
- if (chart === null)
- chart = CreateChart("chart-container", color, false);
- if (UpdateChartData(mass) && display_chart)
- chart.render();
- jQuery('.canvasjs-chart-credit').hide();
- };
- function ResetStats()
- {
- stats = {
- pellets: {num:0, mass:0},
- w: {num:0, mass:0},
- cells: {num:0, mass:0},
- viruses: {num:0, mass:0},
- birthday: Date.now(),
- time_of_death: null,
- high_score: 0,
- top_slot: Number.POSITIVE_INFINITY,
- gains: {},
- losses: {},
- };
- }
- function OnGainMass(me, other)
- {
- var mass = other.size * other.size;
- if (other.d){
- stats.viruses.num++;
- if (document.getElementById("gamemode").value!=":teams") stats.viruses.mass += mass; /*DONE: shouldn't add if game mode is teams. TODO: Find a better way of doing this. ~Mevin1*/
- sfx_event(7);
- }
- else if (Math.floor(mass) <= 400 && !other.name){
- stats.pellets.num++;
- stats.pellets.mass += mass;
- sfx_event(0);
- }
- /* heuristic to determine if mass is 'w', not perfect */
- else if (!other.name && mass <= 1444 && (mass >= 1369 || (other.x == other.ox && other.y == other.oy))){
- /*console.log('w', mass, other.name, other);*/
- if (other.color != me.color){ /*don't count own ejections, again not perfect*/
- stats.w.num++;
- stats.w.mass += mass;
- }
- sfx_event(2);
- }
- else {
- /*console.log('cell', mass, other.name, other);*/
- var key = other.name + ':' + other.color;
- stats.cells.num++;
- stats.cells.mass += mass;
- if (stats.gains[key] == undefined)
- stats.gains[key] = {num: 0, mass: 0};
- stats.gains[key].num++;
- stats.gains[key].mass += mass;
- sfx_event(2);
- }
- }
- function OnLoseMass(me, other)
- {
- var mass = me.size * me.size;
- var key = other.name + ':' + other.color;
- if (stats.losses[key] == undefined)
- stats.losses[key] = {num: 0, mass: 0};;
- stats.losses[key].num++;
- stats.losses[key].mass += mass;
- sfx_event(2);
- }
- function DrawPie(pellet, w, cells, viruses)
- {
- var total = pellet + w + cells + viruses;
- pie = new CanvasJS.Chart("pieArea", {
- title: null,
- animationEnabled: false,
- legend:{
- verticalAlign: "center",
- horizontalAlign: "left",
- fontSize: 12,
- fontFamily: "Helvetica"
- },
- theme: "theme2",
- data: [{
- type: "pie",
- startAngle:-20,
- showInLegend: true,
- toolTipContent:"{legendText} {y}%",
- dataPoints: [
- { y: 100*pellet/total, legendText:"pellets"},
- { y: 100*cells/total, legendText:"cells"},
- { y: 100*w/total, legendText:"w"},
- { y: 100*viruses/total, legendText:"viruses"},
- ]
- }]
- });
- pie.render();
- }
- function GetTopN(n, p)
- {
- var r = [];
- var a = Object.keys(stats[p]).sort(function(a, b) {return -(stats[p][a].mass - stats[p][b].mass)});
- for (var i = 0; i < n && i < a.length; ++i){
- var key = a[i];
- var mass = stats[p][key].mass;
- var name = key.slice(0,key.length-8);
- if (!name) name = "An unnamed cell";
- var color = key.slice(key.length-7);
- r.push({name:name, color:color, mass:Math.floor(mass/100)});
- }
- return r;
- }
- function AppendTopN(n, p, list)
- {
- var a = GetTopN(n,p);
- for (var i = 0; i < a.length; ++i){
- var text = '<bdi>'+a[i].name + '</bdi> (' + (p == 'gains' ? '+' : '-') + a[i].mass + ' mass)';
- list.append('<li style="font-size: 12px; "><div style="width: 10px; height: 10px; border-radius: 50%; margin-right:5px; background-color: ' + a[i].color + '; display: inline-block;"></div>' + text + '</li>');
- }
- return a.length > 0;
- }
- function DrawStats(game_over)
- {
- if (!game_over != in_game) return;
- jQuery('#statArea').empty();
- jQuery('#pieArea').empty();
- jQuery('#gainArea').empty();
- jQuery('#lossArea').empty();
- jQuery('#chartArea').empty();
- jQuery('#stats').show();
- if (game_over){
- sfx_play(1);
- StopBGM();
- }
- stats.time_of_death = Date.now();
- var time = stats.time_of_death ? stats.time_of_death : Date.now();
- var seconds = (time - stats.birthday)/1000;
- var list = jQuery('<ul>');
- list.append('<li style="font-size: 12px; ">Game time: ' + secondsToHms(seconds) + '</li>');
- list.append('<li style="font-size: 12px; ">High score: ' + ~~(stats.high_score/100) + '</li>');
- if (stats.top_slot == Number.POSITIVE_INFINITY){
- list.append('<li style="font-size: 12px; ">You didn\'t make the leaderboard</li>');
- }
- else{
- list.append('<li style="font-size: 12px; ">Leaderboard max: ' + stats.top_slot + '</li>');
- }
- list.append('<li style="font-size: 12px; padding-top: 15px">' + stats.pellets.num + " pellets eaten (" + ~~(stats.pellets.mass/100) + ' mass)</li>');
- list.append('<li style="font-size: 12px; ">' + stats.cells.num + " cells eaten (" + ~~(stats.cells.mass/100) + ' mass)</li>');
- list.append('<li style="font-size: 12px; ">' + stats.w.num + " masses eaten (" + ~~(stats.w.mass/100) + ' mass)</li>');
- list.append('<li style="font-size: 12px; ">' + stats.viruses.num + " viruses eaten (" + ~~(stats.viruses.mass/100) + ' mass)</li>');
- jQuery('#statArea').append('<b>Game Summary</b>');
- jQuery('#statArea').append(list);
- DrawPie(stats.pellets.mass, stats.w.mass, stats.cells.mass, stats.viruses.mass);
- jQuery('#gainArea').append('<b>Top Gains</b>');
- list = jQuery('<ol>');
- if (AppendTopN(5, 'gains', list))
- jQuery('#gainArea').append(list);
- else
- jQuery('#gainArea').append('<ul><li style="font-size: 12px; ">You have not eaten anybody</li></ul>');
- jQuery('#lossArea').append('<b>Top Losses</b>');
- list = jQuery('<ol>');
- if (AppendTopN(5, 'losses', list))
- jQuery('#lossArea').append(list);
- else
- jQuery('#lossArea').append('<ul><li style="font-size: 12px; ">Nobody has eaten you</li></ul>');
- if (stats.time_of_death !== null){
- jQuery('#chartArea').width(450).height(150);
- stat_chart = CreateChart('chartArea', my_color, true);
- stat_chart.render();
- }
- else {
- jQuery('#chartArea').width(450).height(0);
- }
- jQuery('.canvasjs-chart-credit').hide();
- }
- var styles = {
- heading: {font:"20px Ubuntu", spacing: 41, alpha: 1},
- subheading: {font:"18px Ubuntu", spacing: 31, alpha: 1},
- normal: {font:"12px Ubuntu", spacing: 21, alpha: 0.6}
- }
- function AppendText(text, context, style)
- {
- context.globalAlpha = styles[style].alpha;
- context.font = styles[style].font;
- g_stat_spacing += styles[style].spacing;
- var width = context.measureText(text).width;
- g_layout_width = Math.max(g_layout_width, width);
- context.fillText(text, g_layout_width/2 - width/2, g_stat_spacing);
- }
- function RenderStats(reset)
- {
- if (reset) g_layout_width = g_display_width;
- if (!display_stats || !stats) return;
- g_stat_spacing = 0;
- var gains = GetTopN(3, 'gains');
- var losses = GetTopN(3, 'losses');
- var height = 30 + styles['heading'].spacing + styles['subheading'].spacing * 2 + styles['normal'].spacing * (4 + gains.length + losses.length);
- stat_canvas = document.createElement("canvas");
- var scale = Math.min(g_display_width, .3 * window.innerWidth) / g_layout_width;
- stat_canvas.width = g_layout_width * scale;
- stat_canvas.height = height * scale;
- var context = stat_canvas.getContext("2d");
- context.scale(scale, scale);
- context.globalAlpha = .4;
- context.fillStyle = "#000000";
- context.fillRect(0, 0, g_layout_width, height);
- context.fillStyle = "#FFFFFF";
- AppendText("Stats", context, 'heading');
- var text = stats.pellets.num + " pellets eaten (" + ~~(stats.pellets.mass/100) + ")";
- AppendText(text, context,'normal');
- text = stats.w.num + " mass eaten (" + ~~(stats.w.mass/100) + ")";
- AppendText(text, context,'normal');
- text = stats.cells.num + " cells eaten (" + ~~(stats.cells.mass/100) + ")";
- AppendText(text, context,'normal');
- text = stats.viruses.num + " viruses eaten (" + ~~(stats.viruses.mass/100) + ")";
- AppendText(text, context,'normal');
- AppendText("Top Gains",context,'subheading');
- for (var j = 0; j < gains.length; ++j){
- text = (j+1) + ". " + gains[j].name + " (" + gains[j].mass + ")";
- context.fillStyle = gains[j].color;
- AppendText(text, context,'normal');
- }
- context.fillStyle = "#FFFFFF";
- AppendText("Top Losses",context,'subheading');
- for (var j = 0; j < losses.length; ++j){
- text = (j+1) + ". " + losses[j].name + " (" + losses[j].mass + ")";
- context.fillStyle = losses[j].color;
- AppendText(text, context,'normal');
- }
- }
- jQuery(window).resize(function() {
- RenderStats(false);
- });
- window.OnGameStart = function(cells)
- {
- initbench(false);
- in_game = true;
- my_cells = cells;
- ResetChart();
- ResetStats();
- RenderStats(true);
- DrawStats(false);
- if (kd == true) {
- showsh = false;
- document.getElementById("overlays").style.display = "none";
- document.getElementById("overlays").style.backgroundColor = "rgba(0,0,0,.498039)";
- document.getElementById("overlays").style.pointerEvents = "auto";
- document.getElementById("stats").style.opacity = 0.85;
- document.getElementById("helloDialog").style.display = "block";
- kd = false;
- }
- StartBGM();
- sfx_play(0);
- }
- window.StartBGM = function ()
- {
- if (document.getElementById("bgm").value==0) return;
- if (bgmusic.src == "") bgmusic.src = "//skins.agariomods.com/botb/" + tracks[Math.floor(Math.random() * tracks.length)]; //i guess i'll leave this here ~mevin1
- bgmusic.volume = document.getElementById("bgm").value;
- bgmusic.play();
- }
- window.StopBGM = function ()
- {
- if (document.getElementById("bgm").value==0) return;
- bgmusic.pause()
- bgmusic.src = "//skins.agariomods.com/botb/" + tracks[Math.floor(Math.random() * tracks.length)];
- bgmusic.load()
- }
- window.volBGM = function (vol)
- {
- bgmusic.volume = document.getElementById("bgm").value;
- }
- window.OnShowOverlay = function(game_in_progress)
- {
- bstyle(true);
- if (!game_in_progress) in_game = false;
- DrawStats(!game_in_progress);
- if (kd == true) {
- document.getElementById("overlays").style.display = "block";
- document.getElementById("overlays").style.backgroundColor = "rgba(0,0,0,.498039)";
- document.getElementById("overlays").style.pointerEvents = "auto";
- document.getElementById("stats").style.opacity = 1;
- document.getElementById("helloDialog").style.display = "block";
- kd = false;
- }
- if (in_game) {
- showsh = true;
- canvas.onmousedown(0,0);
- }
- else
- {
- showsh = false;
- //document.getElementById("benchmarker").style.display = "none";
- //showt=false;
- }
- }
- var fired = false; //for some reason OnHideOverlay fires twice
- window.OnHideOverlay = function()
- {
- if (fired == true) {fired = false; return;} else {fired = true;} //Only continue on first fire
- bstyle(false);
- if (showsh == true) showsh = false;
- }
- window.OnUpdateMass = function(mass)
- {
- stats.high_score = Math.max(stats.high_score, mass);
- UpdateChart(mass, GetRgba(my_cells[0].color,0.4));
- benchcheck(mass);
- }
- window.OnCellEaten = function(predator, prey)
- {
- if (!my_cells) return;
- if (my_cells.indexOf(predator) != -1){
- OnGainMass(predator, prey);
- RenderStats(false);
- }
- if (my_cells.indexOf(prey) != -1){
- OnLoseMass(prey, predator);
- RenderStats(false);
- }
- }
- window.OnLeaderboard = function(position)
- {
- stats.top_slot = Math.min(stats.top_slot, position);
- }
- window.OnDraw = function(context)
- {
- if (showfps) document.getElementById("fps-agariomods").children[1].innerHTML = countFPS();
- display_stats && stat_canvas && context.drawImage(stat_canvas, 10, 10);
- }
- window.Recieve = function()
- {
- if (showpio) document.getElementById("pio-agariomods").children[1].innerHTML = countPI();
- }
- window.OnSend = function()
- {
- if (showpio) document.getElementById("pio-agariomods").children[2].innerHTML = countPO();
- }
- window.countFPS = (function () {
- var lastLoop = (new Date()).getMilliseconds();
- var count = 1;
- var fps = 0;
- return function () {
- var currentLoop = (new Date()).getMilliseconds();
- if (lastLoop > currentLoop) {
- fps = count;
- count = 1;
- } else {
- count += 1;
- }
- lastLoop = currentLoop;
- return fps;
- };
- }());
- window.countPI = (function () {
- var lastLoop = (new Date()).getMilliseconds();
- var count = 1;
- var packet = 0;
- return function () {
- var currentLoop = (new Date()).getMilliseconds();
- if (lastLoop > currentLoop) {
- packet = count;
- count = 1;
- } else {
- count += 1;
- }
- lastLoop = currentLoop;
- return packet;
- };
- }());
- window.countPO = (function () {
- var lastLoop = (new Date()).getMilliseconds();
- var count = 1;
- var packet = 0;
- return function () {
- var currentLoop = (new Date()).getMilliseconds();
- if (lastLoop > currentLoop) {
- packet = count;
- count = 1;
- } else {
- count += 1;
- }
- lastLoop = currentLoop;
- return packet;
- };
- }());
- window.onpageshow = function() {
- initbench(true);
- document.getElementById("bgimg").checked=false;
- jQuery('#helloDialog').css({transform: ''});
- jQuery('#helloDialog').css({scale: ''});
- $("div#settings label").change(function() {
- $("div#settings.checkbox input").each(function() {
- if (this.id=="bgimg")return;
- localStorage.setItem("setting"+$(this).parent().text().replace(" ","_"),this.checked);
- });
- $("div#settings input[type=range]").each(function() {
- localStorage.setItem("setting"+$(this).parent().text().replace(" ","_"),this.value);
- });
- });
- $("div#settings input").each(function() {
- check(this);
- });
- }
- window.check = function(elem){
- var evt = document.createEvent("HTMLEvents");
- evt.initEvent("change", false, true);
- elem.dispatchEvent(evt);
- }
- $(document).ready(function() {
- if (!localStorage.getItem("setting_Imgur Skins")) localStorage.setItem("settingImgur_Skins","true"); localStorage.setItem("settingShow_Chart","true");
- $("div#settings.checkbox input").each(function() {
- if (this.id=="bgimg")return;
- if ($(this).parent().text()==" No names")$(this).attr("id","names");
- $(this).attr("checked",(localStorage.getItem("setting"+$(this).parent().text().replace(" ","_")))=="true");
- });
- $("div#settings input[type=range]").each(function() {
- $(this).attr("value",(localStorage.getItem("setting"+$(this).parent().text().replace(" ","_"))));
- });
- });
- var kd = false;
- $(document).keydown(function(e) {
- //Stats Shortcut
- if (e.keyCode == 90) {
- if (kd == false && document.getElementById("overlays").style.display == 'none') {
- kd = true;
- document.getElementById("overlays").style.display = "block";
- document.getElementById("overlays").style.backgroundColor = "rgba(0,0,0,0)";
- document.getElementById("overlays").style.pointerEvents = "none";
- document.getElementById("stats").style.opacity = 1;
- document.getElementById("helloDialog").style.display = "none";
- showsh = true;
- DrawStats(false);
- }
- }
- //Benchmarker Shortcut
- if (e.keyCode == 84&&!e.altKey&&document.activeElement.type!="text") {
- showt = !showt;
- localStorage.setItem("showt",showt);
- document.getElementById("benchmarker").style.display = showt?"block":"none";
- }
- //Benchmarker Clear Shortcut
- if (e.keyCode == 84&&e.altKey) {
- deleteScores();
- }
- //FPS Hotkey
- if (e.altKey && e.keyCode == 49) {
- showfps = !showfps;
- document.getElementById("fps-agariomods").style.display = showfps?"block":"none";
- }
- //Packets In Per Second Hotkey
- if (e.altKey && e.keyCode == 50) {
- showpio = !showpio;
- document.getElementById("pio-agariomods").style.display = showpio?"block":"none";
- }
- //Suicide
- if (e.altKey && e.keyCode == 81 && in_game) {
- jQuery("#overlays").show()
- OnShowOverlay(false);
- Suicide();
- }
- //Firefox Fullscreen
- if (e.ctrlKey && e.keyCode === 70 && navigator.userAgent.match("Firefox")) {
- e.preventDefault();
- if (document.mozFullScreenElement)
- {
- document.mozCancelFullScreen();
- }
- else
- {
- document.getElementById("overlays").mozRequestFullScreen();
- }
- }
- //EXPERIMENTAL
- //Attempts to recover from lag by temporarily pausing Javascript
- //Alt+R
- if (e.keyCode == 82&&e.altKey) {
- if(ldown)return;
- ldown = true
- console.log("pausing");
- var currentTime = new Date().getTime();
- while (currentTime + 500 >= new Date().getTime()){} //0.5 Second Timeout
- }
- });
- $(document).keyup(function(e) {
- //Hide Stats
- if (e.keyCode == 90) {
- if (kd == true) {
- kd = false;
- document.getElementById("overlays").style.display = "none";
- document.getElementById("overlays").style.backgroundColor = "rgba(0,0,0,.498039)";
- document.getElementById("overlays").style.pointerEvents = "auto";
- document.getElementById("stats").style.opacity = 0.85;
- document.getElementById("helloDialog").style.display = "block";
- showsh = false;
- }
- }
- //EXPERIMENTAL
- //To prevent extreamly long pause times fron holding down Alt+R
- if (e.keyCode == 82&&e.altKey) {
- if(ldown)ldown=false;
- }
- });
- //Agar.io Benchmarker Mod
- //Version 0.4 ~ Edited By Mevin1
- /*
- •Changes
- -WTF? An entire other div just for background? nope
- -using Date.now() instead of a benchmarker for timing
- */
- //Create global vars
- var m, benchmarker;
- var benchmarks = ["250mass", "500mass", "1000mass", "2500mass", "5000mass"/*, "Rank10", "Rank1"*/];
- var mass_benchmarks = [250, 500, 1000, 2500, 5000];
- /*var rank_benchmarks = [10, 1];
- var rankPrev = 11;//broken*/
- var massPrev = 0;
- //Create div
- $("body").append('<div id="benchmarker"></div>');
- function initbench(first) {
- //Style div
- $("div#benchmarker").css({
- "backgroundColor": "rgba(0,0,0,0.4)" /*"transparent"*/ ,
- "opacity": "1.0",
- "color": "white",
- "fontFamily": "Ubuntu,Arial,sans-serif",
- "position": "fixed",
- "padding": "10px",
- "text-align": "center",
- "pointer-events": "none"/*,
- "display": "none"*/
- });
- if(first){
- bstyle(true);
- showt?$("div#benchmarker").css({
- "display": "block"
- }):
- $("div#benchmarker").css({
- "display": "none"
- });
- }
- //Create HTML to be added to div
- var newHTML = '<table>' +
- '<h3>Benchmarker</h3>' +
- '<span>Time Elapsed: --:--</span>' +
- '<tr><th>Benchmark</th><th>Time</th><th>Best</th></tr>' + //Headers
- '<tr id="250mass"><td>250 Mass</td><td class="time">-----</td><td class="best">-----</td></tr>' + //250 Mass
- '<tr id="500mass"><td>500 Mass</td><td class="time">-----</td><td class="best">-----</td></tr>' + //500 Mass
- '<tr id="1000mass"><td>1000 Mass</td><td class="time">-----</td><td class="best">-----</td></tr>' + //1000 Mass
- '<tr id="2500mass"><td>2500 Mass</td><td class="time">-----</td><td class="best">-----</td></tr>' + //2500 Mass
- '<tr id="5000mass"><td>5000 Mass</td><td class="time">-----</td><td class="best">-----</td></tr>' + //5000 Mass
- //'<tr id="Rank10"><td>Rank 10</td><td class="time">-----</td><td class="best">-----</td></tr>' + //Rank 10
- //'<tr id="Rank1"><td>Rank 1</td><td class="time">-----</td><td class="best">-----</td></tr>' + //Rank 1
- '</table>';
- //Add HTML to div
- $("div#benchmarker").html(newHTML);
- //Load local storage --- best times
- for (var i = 0; i < benchmarks.length; i++) {
- if (localStorage.getItem("best_" + benchmarks[i])) {
- $("#" + benchmarks[i] + " .best").html(localStorage.getItem("best_" + benchmarks[i]));
- }
- }
- //Style the table
- $("table").css({
- "margin": "8px",
- "padding": "8px"
- });
- //Centering
- $("div#benchmarker h3").css("text-align", "center");
- $("div#benchmarker span").css({
- "text-align": "center",
- "display": "inline-block"
- });
- //Cells
- $("td,th").css({
- "padding": "5px",
- "text-align": "left"
- });
- //Margins
- //$("div#benchmarker span").css({"margin":"0px","padding":"0px"});
- $("div#benchmarker h3").css({
- "margin-top": "4px"
- });
- }
- function bstyle(over){
- over?$("div#benchmarker").css({
- "left": "",
- "top": "",
- "right": "5px",
- "bottom": "5px",
- "z-index": "1000"
- }):$("div#benchmarker").css({
- "left": "5px",
- "top": "5px",
- "right": "",
- "bottom": "",
- "z-index": "1"
- });
- }
- function count() { //Occurs every second
- if (showt&&in_game){
- $("div#benchmarker span").html("Time Elapsed: " + mToMs(Date.now() - stats.birthday));
- }}
- function mToMs(millis) {
- var minutes = Math.floor(millis / 60000);
- var seconds = ((millis % 60000) / 1000).toFixed(0);
- return minutes + ":" + (seconds < 10 ? '0' : '') + seconds;
- }
- function snp(y) { //Turns XX:XX to XXXX
- return y.replace(/[^0-9]+/g, '');
- }
- function logBenchmark(benchmark, time) {
- //Manuallly record benchmark.
- if ($("#" + benchmark + " .time").html() == "-----") { //Checks if the benchmark time is recorded yet
- console.log("Benchmark set: " + benchmark + " at " + time);
- $("#" + benchmark + " .time").html(time); //Record time
- if (($("#" + benchmark + " .best").html() == "-----") || (snp(time) < snp(localStorage.getItem('best_' + benchmark)))) { //Checks if best time is beaten or undefined
- console.log("Best time set: " + benchmark + " at " + time);
- $("#" + benchmark + " .best").html(time); //Record time
- localStorage.setItem("best_" + benchmark, time); //Save to local storage
- }
- }
- }
- function deleteScores() {
- var prompt = confirm("Are you sure you want to delete your best times?");
- if (prompt == true) {
- for (var i = 0; i < benchmarks.length; i++) {
- localStorage.removeItem("best_" + benchmarks[i]);
- $("#" + benchmarks[i] + " .best").html("-----");
- }
- }
- }
- function benchcheck(mass) {
- mass = Math.floor(mass / 100);
- for (var i = 0; i < mass_benchmarks.length; i++) {
- if ((massPrev < mass_benchmarks[i]) && (mass >= mass_benchmarks[i])) {
- //Check if mass has passed from below benchmark to above benchmark
- logBenchmark(mass_benchmarks[i] + "mass", mToMs(Date.now() - stats.birthday));
- }
- }
- }