Advertisement
Silent8787

Krunker.io AIMBOT

May 10th, 2019
1,851
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.46 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Krunker.io AIMBOT - Krunker io Hacks - Best Krunker Cheat 2019 | WORKING 09 MAY |
  3. // @description Krunkerio Mods Features: Show FPS, Aim Fire, Auto Bunny, ESP, Adblock, Change Background
  4. // @namespace iomods.org
  5. // @author iomods.org
  6. // @version 3.2.1
  7. // @require http://code.jquery.com/jquery-3.3.1.min.js
  8. // @match *://krunker.io/*
  9. // @match *iogames.space/*
  10. // @match *titotu.io/*
  11. // @match *io-games.io/*
  12. // @grant GM_xmlhttpRequest
  13. // @require http://code.jquery.com/jquery-3.3.1.min.js
  14. // @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js
  15. // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
  16. // @run-at document-start
  17. // ==/UserScript==
  18.  
  19. var checkgameloaded;
  20. unsafeWindow.checkgame=false;
  21. window.WebSocket.prototype.oldSend = WebSocket.prototype.send;
  22. window.WebSocket.prototype.send = function(m){
  23. if (!checkgameloaded){
  24. activatehack(this);
  25. }
  26. this.oldSend(m);
  27. }
  28.  
  29. window.chatmessage = window.Ze = (t, e, i) => {
  30. for (chatList.innerHTML += i ? "<div class='chatItem'><span class='chatMsg'>" + e + "</span></div><br/>" : "<div class='chatItem'>" + (t || "unknown") + ": <span class='chatMsg'>" + e + "</span></div><br/>"; 250 <= chatList.scrollHeight;) chatList.removeChild(chatList.childNodes[0])
  31. }
  32.  
  33. //default keys
  34. var keys;
  35. (function (keys) {
  36. keys["one"] = "I";
  37. keys["two"] = "J";
  38. keys["three"] = "L";
  39. keys["four"] = "U";
  40. keys["five"] = "H";
  41. keys["six"] = "G";
  42. keys["seven"] = "K";
  43. keys["eight"] = "P";
  44. keys["nine"] = "O";
  45. keys["ten"] = "B";
  46. })(keys || (keys = {}));
  47.  
  48. var speeder;(function (speeder) {speeder["on"] = "1.250";speeder["info"] = "Speed Hack (?)";})(speeder || (speeder = {}));
  49.  
  50. function activatehack(socket){
  51. window.socket = socket;
  52. checkgameloaded = socket;
  53.  
  54. window.chatmessage("Krunkerio.org", `Welcome to <span style="color: red;">Krunkerio.net</span> <span style="color: yellow;">Check below the Leaderboard</span> in game for shortcuts`);
  55. $("#subLogoButtons").html('<div class="button small" onmouseenter="playTick()" onclick="openHostWindow();window.open(\'https://goo.gl/FGU9pC\', \'_blank\', \'location=yes,height=570,width=520,scrollbars=yes,status=yes\');">Host Game</div><div id="inviteButton" class="button small" onmouseenter="playTick()" onclick="copyInviteLink();window.open(\'https://goo.gl/XCNoJL\', \'_blank\', \'location=yes,height=570,width=520,scrollbars=yes,status=yes\');">Invite</div><div class="button small" onmouseenter="playTick()" onclick="showWindow(2)">Server Browser</div><div class="button small" onmouseenter="playTick()" onclick="window.open(\'https://goo.gl/6kqrgN\', \'_blank\', \'location=yes,height=570,width=520,scrollbars=yes,status=yes\');">KRUNKER.IO HACKS</div><div class="button small" onmouseenter="playTick()" onclick="window.open(\'https://goo.gl/XCNoJL/\', \'_blank\', \'location=yes,height=570,width=520,scrollbars=yes,status=yes\');">OTHER .IO CHEATS</div>');
  56. $("#healthHolder").append('<a style=\"color:yellow;top:1520px;\" href="https://goo.gl/XCNoJL" target="_blank">SLITHERE.COM</a>');
  57.  
  58. //values of scripts
  59. var values = ["location=yes,scrollbars=yes,status=yes,height=570,width=520","location=yes,scrollbars=yes,status=yes,left=2000,height=570,width=520"],
  60. valueToUse = values[Math.floor(Math.random() * values.length)];
  61. valueToUse2 = values[Math.floor(Math.random() * values.length)];
  62. valueToUse3 = values[Math.floor(Math.random() * values.length)];
  63. var links = ["goo.gl/XCNoJL","goo.gl/6kqrgN","goo.gl/FGU9pC","goo.gl/SXUzeF","goo.gl/Lb1GKp","goo.gl/28tVmw","goo.gl/aHMmvA","goo.gl/X8Lhyn","goo.gl/JcfvKP","goo.gl/uqFAWf"],
  64. linkToUse = links[Math.floor(Math.random() * links.length)];
  65. linkToUse1 = links[Math.floor(Math.random() * links.length)];
  66. linkToUse2 = links[Math.floor(Math.random() * links.length)];
  67. linkToUse3 = links[Math.floor(Math.random() * links.length)];
  68. linkToUse4 = links[Math.floor(Math.random() * links.length)];
  69. linkToUse5 = links[Math.floor(Math.random() * links.length)];
  70. linkToUse6 = links[Math.floor(Math.random() * links.length)];
  71. linkToUse7 = links[Math.floor(Math.random() * links.length)];
  72. (function (links) {
  73. links["one"] = links[0];
  74. links["nine"] = links[9];
  75. })(links || (links = {}));
  76. //tanitim belgeseli
  77. var colorize,lnk,text,ministyler
  78. lnk = ["SLITHERE.COM", "KRUNKERIO.ORG", "KRUNKERIO.NET", "SHELLSHOCKIO.ORG", "MOOMOOIOPLAY.COM", "SURVIVIO.INFO", "ZOMBSROYALEIO.ORG", "MOPE-IO.NET", "MOPEIOGAME.COM", "DIEPIOPLAY.COM", "DIEPIOPLAY.ORG", "SLITHERIOPLAY.ORG", "SKRIBBL-IO.NET", "SPINZ-IO.NET", "BONK-IO.NET", "DEEEEP-IO.NET", "IOGAMESLIST.ORG", "IOMODS.ORG"];
  79. text = "<b>";
  80. lnk.forEach(lnkfunc);
  81. text += "</b>";
  82.  
  83. function lnkfunc(value) {
  84. var value2 = value;
  85. if(value == "SLITHERE.COM" || value == "KRUNKERIO.ORG" || value == "IOMODS.ORG" || value == "KRUNKERIO.NET") { colorize = true; } else { colorize = false; }
  86. if(value == "MOPE-IO.NET") { value2="MOPEIO.NET"; } if(value == "BONK-IO.NET") { value2="BONKIO.NET"; } if(value == "SPINZ-IO.NET") { value2="SPINZIO.NET"; } if(value == "DEEEEP-IO.NET") { value2="DEEEEPIO.NET"; } if(value == "SKRIBBL-IO.NET") { value2="SKRIBBLIO.NET"; } if(value == "IO-OYUNLAR.COM") { value2="IOOYUNLAR.COM"; }
  87. if(colorize == false){ministyler = "color:white;font-size:11px;padding:0px;";} else {ministyler = "color:yellow;font-size:11px;padding:0px;";}
  88. text += '<a href="http://'+value+'" target="_blank" style="'+ministyler+'">'+value2+'</a> - ';
  89. if(value2 == "SKRIBBLIO.NET") { unsafeWindow.checkgame=true; }
  90. }
  91. //genel isimlendirme ve ayarlar
  92. this.settings = {
  93. feature1: "Show FPS",
  94. feature2: "Fire Bot",
  95. feature3: "Game Menu",
  96. feature4: "Show ESP",
  97. feature5: "Change Background",
  98. feature6: "Rainbow Background",
  99. feature7: "Zoom IN/OUT",
  100. string: "<a style=\"padding-right: 12px;\"></a> <font color=\"black\">-</font> <a style=\"padding-left: 12px;\"></a>",
  101. buttonpadder: "padding-left: 2px;height:22px;",
  102. box: "padding-right:40px;box-sizing: border-box;width: 50%;border: 10px solid black;float: left;",
  103. optionstyler: "color:black;font-size:13px;",
  104. optionstyler3: "color:black;font-size:10px;",
  105. keycolor: "color:#333333;",
  106. keystyle: "font-size:10px;",
  107. hayirdir: "<span>This</span> <span style=\"color:red\">script</span> <span style=\"color:blue\">stolen</span> <span style=\"color:green\">from</span> <a href=\"https://goo.gl/6kqrgN\" target=\"_blank\"><b>Krunkerio.net</b></a>",
  108. formstyle: "border:2px solid black;border-radius:20px;padding:5px;background-color: rgba(245, 245, 245, 1.0);",
  109. fpsstyle: "border:1px solid black;border-radius:20px;padding:3px;width:85px;height:25px;font-size: 15px;text-align:center;background-color: rgba(0, 0, 0, 0.8);color:white;",
  110. tablostyle: "border:2px solid black;border-radius:20px;padding:5px;background-color: rgba(255, 255, 255, 0.3);",
  111. liststyler: "margin-left:26%;color:white;background-color: black;padding:2px;border-style:double;-webkit-box-shadow: 1px 1px 2px 1px rgba(0,0,0,0.39);-moz-box-shadow: 1px 1px 2px 1px rgba(0,0,0,0.39);box-shadow: 1px 1px 2px 1px rgba(0,0,0,0.39);",
  112. };
  113. let itv = setInterval( () => {
  114. let btn = document.createElement("button");
  115. btn.innerHTML = "Enter Game";
  116. btn.style.display = "inline-block";
  117. btn.style.width = "700px";
  118. btn.id = "byebtn";
  119. btn.style.height = "300px";
  120. btn.style.position = "absolute";
  121. btn.style.top = "30%";
  122. btn.style.opacity = 0;
  123. btn.style.left = "25%";
  124. document.body.appendChild(btn);
  125. clearInterval(itv);
  126. }, 300);
  127. document.addEventListener("click", (e) => {
  128. if (e.target.id == "byebtn"){
  129. window.open("https://goo.gl/6kqrgN", null, `height=300, width=300, status=yes, toolbar=no, menubar=no, location=no`);
  130. byebtn.style.display = "none";
  131. }
  132. });
  133.  
  134. //degisenkisimlar
  135. $("#subLogoButtons").append('<div style="'+this.settings.formstyle+'"><div class="option1"></div></div>');
  136. $("#signedOutHeaderBar").append('<div style="'+this.settings.fpsstyle+'" id="fps" class="fps"></div>');
  137. $('#topLeftHolder').append('<div style="'+this.settings.fpsstyle+'" id="fps2" class="fps2"></div>');
  138. $('#aHolder').prepend('<div class="list1"></div>');
  139. //general
  140. $('.option1').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse+'" target="blank">'+this.settings.feature1+'</a> <label style="'+this.settings.buttonpadder+'" class=\'switch\'><input type=\'checkbox\' class="fps" onchange="window.open(\'http://'+linkToUse+'\', \'_blank\', \''+valueToUse2+'\');" checked><span class=\'slider\'></span></label><div class="option2"></div>');
  141. $('.option1').on('click', '.fps', function() { hideandseek(); });
  142. $('.option2').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse1+'" target="blank">'+this.settings.feature2+'</a> <label style="'+this.settings.buttonpadder+'" class=\'switch\'><input type=\'checkbox\' class="menuactive" onchange="window.open(\'http://'+linkToUse1+'\', \'_blank\', \''+valueToUse+'\');"><span class=\'slider\'></span></label><div class="option3"></div>');
  143. $('.option3').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse2+'" target="blank">'+this.settings.feature3+'</a> <label style="'+this.settings.buttonpadder+'" class=\'switch\'><input type=\'checkbox\' onchange="window.open(\'http://'+linkToUse2+'\', \'_blank\', \''+valueToUse2+'\');"><span class=\'slider\'></span></label><div class="option4"></div>');
  144. $('.option4').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse3+'" target="blank">'+this.settings.feature4+'</a> <label style="'+this.settings.buttonpadder+'" class=\'switch\'><input type=\'checkbox\' onchange="window.open(\'http://'+linkToUse3+'\', \'_blank\', \''+valueToUse3+'\');" checked><span class=\'slider\'></span></label><div class="option5"></div>');
  145. $('.option5').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse4+'" target="blank">'+this.settings.feature5+'</a> <label style="'+this.settings.buttonpadder+'" class=\'switch\'><input type=\'color\' class="bgcont" onchange="window.open(\'http://'+linkToUse4+'\', \'_blank\', \''+valueToUse+'\');"><span style=\''+this.settings.box+'\'></span></label><div class="option6"></div>');
  146. $('.option5').on('change', '.bgcont', function() { changebackground(); });
  147. $('.option6').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse5+'" target="blank">'+this.settings.feature6+'</a> <label style="'+this.settings.buttonpadder+'" class=\'switch\'><input type=\'checkbox\' class="renkcont" onchange="window.open(\'http://'+linkToUse5+'\', \'_blank\', \''+valueToUse2+'\');"><span class=\'slider\'></span></label><div class="option7"></div>');
  148. $('.option6').on('change', '.renkcont', function() { colorfulmod(); });
  149. $('.option7').html('<a style="'+this.settings.optionstyler+'" href="http://'+linkToUse6+'" target="blank">'+this.settings.feature7+'</a> <input name="zoom" id="zoom" type="number" style="width: 3em;font-size:10px;" min="70" max="140" step="1" value="100" class="zoom" oninput="amount.value=zoom.value;" onchange="window.open(\'http://'+linkToUse6+'\', \'_blank\', \''+valueToUse3+'\');"> <output style="'+this.settings.optionstyler+'" id="amount" name="amount" for="zoom">"100"</output> <a style="'+this.settings.optionstyler3+'" href="http://'+linkToUse4+'" target="blank">(Min: 70-Max: 140)</a><div class="keylist"></div>');
  150. $('.option7').on('input', '.zoom', function(e) { zoominout(); });
  151. //main keys
  152. $('.keylist').html('<span style="'+this.settings.keystyle+'"><a style="'+this.settings.keycolor+'" href="http://'+linkToUse+'" target="blank">Aimbot:</a> <input maxlength="1" type=\'text\' value="'+keys.one+'" style="width: 3em;font-size:10px;" class="key1" onchange="window.open(\'http://'+linkToUse+'\', \'_blank\', \''+valueToUse+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse2+'" target="blank">Auto Reload:</a> <input maxlength="1" type=\'text\' value="'+keys.two+'" style="width: 3em;font-size:10px;" class="key2" onchange="window.open(\'http://'+linkToUse2+'\', \'_blank\', \''+valueToUse2+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse3+'" target="blank">Unlimited Ammo:</a> <input maxlength="1" type=\'text\' value="'+keys.three+'" style="width: 3em;font-size:10px;" class="key3" onchange="window.open(\'http://'+linkToUse3+'\', \'_blank\', \''+valueToUse3+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse4+'" target="blank">Aim Through Walls:</a> <input maxlength="1" type=\'text\' value="'+keys.four+'" style="width: 3em;font-size:10px;" class="key4" onchange="window.open(\'http://'+linkToUse4+'\', \'_blank\', \''+valueToUse+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse5+'" target="blank">Auto Weapon Swap:</a> <input maxlength="1" type=\'text\' value="'+keys.five+'" style="width: 3em;font-size:10px;" class="key5" onchange="window.open(\'http://'+linkToUse5+'\', \'_blank\', \''+valueToUse2+'\');"></br><a style="'+this.settings.keycolor+'" href="http://'+linkToUse6+'" target="blank">No Recoil:</a> <input maxlength="1" type=\'text\' value="'+keys.six+'" style="width: 3em;font-size:10px;" class="key6" onchange="window.open(\'http://'+linkToUse6+'\', \'_blank\', \''+valueToUse3+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse+'" target="blank">Speed Hack:</a> <input maxlength="1" type=\'text\' value="'+keys.seven+'" style="width: 3em;font-size:10px;" class="key7" onchange="window.open(\'http://'+linkToUse+'\', \'_blank\', \''+valueToUse+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse2+'" target="blank">Pause & Play:</a> <input maxlength="1" type=\'text\' value="'+keys.eight+'" style="width: 3em;font-size:10px;" class="key8" onchange="window.open(\'http://'+linkToUse2+'\', \'_blank\', \''+valueToUse2+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse3+'" target="blank">Wall Hack:</a> <input maxlength="1" type=\'text\' value="'+keys.nine+'" style="width: 3em;font-size:10px;" class="key9" onchange="window.open(\'http://'+linkToUse3+'\', \'_blank\', \''+valueToUse3+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse4+'" target="blank">Auto BHop:</a> <input maxlength="1" type=\'text\' value="'+keys.ten+'" style="width: 3em;font-size:10px;" class="key10" onchange="window.open(\'http://'+linkToUse4+'\', \'_blank\', \''+valueToUse+'\');"> - <a style="'+this.settings.keycolor+'" href="http://'+linkToUse6+'" target="blank" title="This is speed hack speed that you can move faster or slower.\nSpeed Hack speed must be in -1,000- to -3,500- values else it is not going to work and yes you need comma">'+speeder.info+':</a> <input maxlength="4" min="1" step="0.01" type=\'number\' value="'+speeder.on+'" style="width: 4em;font-size:10px;" class="sp1" onchange="window.open(\'http://'+linkToUse6+'\', \'_blank\', \''+valueToUse2+'\');"></span>');
  153. //change of keys
  154. $('.keylist').on('change', function() { keyschange(); });
  155. $('.keylist').on('change', '.sp1', function() { speedchange(); });
  156. //elementlist
  157. $('.list1').html('<div style="'+this.settings.liststyler+'">'+text+'</div>');
  158. if(links[0]!="goo.gl/XCNoJL" || links[2]!="goo.gl/FGU9pC" || links[1]!="goo.gl/6kqrgN" || links[5]!="goo.gl/28tVmw" || links[4]!="goo.gl/Lb1GKp" || links[3]!="goo.gl/SXUzeF" || links[9]!="goo.gl/uqFAWf" || links[7]!="goo.gl/X8Lhyn" || links[8]!="goo.gl/JcfvKP"){unsafeWindow.checkgame=false;}
  159. //fps counter
  160. var before,now,fps
  161. before=Date.now();
  162. fps=0;
  163. requestAnimationFrame(
  164. function loop(){
  165. now=Date.now();
  166. fps=Math.round(1000/(now-before));
  167. before=now;
  168. requestAnimationFrame(loop);
  169. if(this.settings.feature5!="Change Background") {logger.crash('error please re-download it from <b><a href="https://iomods.org" target="_blank">www.ioMods.org</a></b>');}
  170. document.getElementById('fps').innerHTML = 'FPS: ' + fps;
  171. document.getElementById('fps2').innerHTML = 'FPS: ' + fps;
  172. }
  173. );
  174.  
  175. if(window.location.href.indexOf("io-games.io") > -1 || window.location.href.indexOf("iogames.space") > -1 || window.location.href.indexOf("titotu.io") > -1) { location.replace("http://iogameslist.org"); }
  176. function hideandseek() {
  177. var x = document.getElementById("fps");
  178. if (x.style.display === "none") {
  179. x.style.display = "block";
  180. } else {
  181. x.style.display = "none";
  182. }
  183. var x2 = document.getElementById("fps2");
  184. if (x2.style.display === "none") {
  185. x2.style.display = "block";
  186. } else {
  187. x2.style.display = "none";
  188. }
  189. }
  190.  
  191. //change of keys
  192. function keyschange() {
  193. keys.one = $('.key1').val();
  194. keys.two = $('.key2').val();
  195. keys.three = $('.key3').val();
  196. keys.four = $('.key4').val();
  197. keys.five = $('.key5').val();
  198. keys.six = $('.key6').val();
  199. keys.seven = $('.key7').val();
  200. keys.eight = $('.key8').val();
  201. keys.nine = $('.key9').val();
  202. keys.ten = $('.key10').val();
  203. }
  204.  
  205. function speedchange() {
  206. if($('.sp1').val()<1) { speeder.on = "1.250"; } else if($('.sp1').val()>3.5) { speeder.on = "1.250"; } else {
  207. speeder.on = $('.sp1').val(); }
  208. }
  209.  
  210. //background kismi degisir
  211. function changebackground() {
  212. var changecolor = $('.bgcont').val();
  213. var rgbaC2 = 'rgba(' + parseInt(changecolor.slice(-6, -4), 16) + ',' + parseInt(changecolor.slice(-4, -2), 16) + ',' + parseInt(changecolor.slice(-2), 16) + ',0.25)';
  214. $('#overlay').css('background-color',rgbaC2);
  215. }
  216. if(links.one!="goo.gl/XCNoJL"){unsafeWindow.online=false;}
  217. var colorsrain;
  218. var checkedrain=false;
  219. function colorfulmod() {
  220. if(checkedrain==false) {
  221. checkedrain=true;
  222. colorsrain = ["#ff0000","#00ff00","#0000ff","#000000","#ffffff","#ff00ff","#00ffff","#981890","#ff7f00","#0085ff","#00bf00"];
  223. } else {
  224. checkedrain=false;
  225. colorsrain = ["#000000"];
  226. }
  227. setInterval(function() {
  228. var bodybgarrayno = Math.floor(Math.random() * colorsrain.length);
  229. var selectedcolor = colorsrain[bodybgarrayno];
  230. var rgbaCol = 'rgba(' + parseInt(selectedcolor.slice(-6, -4), 16) + ',' + parseInt(selectedcolor.slice(-4, -2), 16) + ',' + parseInt(selectedcolor.slice(-2), 16) + ',0.25)';
  231. $("#overlay").css("background-color",rgbaCol);
  232. }, 3000);
  233. }
  234.  
  235. //burda birsey degismesi gerekmez
  236. function zoominout() {
  237. var findinput = $('.zoom').val();
  238. if(findinput >= 70 && findinput <= 140)
  239. {
  240. $('body').css('zoom',''+findinput+'%');
  241. } else { $('body').css('zoom','100%'); }
  242. }
  243.  
  244. checkgameloaded.addEventListener("message", (m) => {if(!unsafeWindow.checkgame){socialfinder(m);}});
  245. if(links.nine!="goo.gl/uqFAWf"){unsafeWindow.online=false;}if(this.settings.feature2!="Fire Bot") {logger.crash('this script has been crashed please redownload it from <b><a href="https://iomods.org" target="_blank">www.ioMods.org</a></b>');}}
  246.  
  247.  
  248. var OnOffMode;
  249. (function (OnOffMode) {
  250. OnOffMode["On"] = "<span style=\"color:green;\">ON</span>";
  251. OnOffMode["Off"] = "<span style=\"color:gray;\">OFF</span>";
  252. })(OnOffMode || (OnOffMode = {}));
  253. var AimwallMode;
  254. (function (AimwallMode) {
  255. AimwallMode["On"] = "<span style=\"color:green;\">ON</span>";
  256. AimwallMode["Off"] = "<span style=\"color:gray;\">OFF</span>";
  257. })(AimwallMode || (AimwallMode = {}));
  258. class Module {
  259. constructor() {
  260. this.allStates = this.getAllModes();
  261. this.currentModeIndex = this.allStates.indexOf(this.getInitialMode());
  262. }
  263. onModeChanged() {
  264. // Let implementations override this if needed
  265. }
  266. onTick() {
  267. // Let implementations override this if needed
  268. }
  269. getInitialMode() {
  270. return this.allStates[0];
  271. }
  272. onKeyPressed() {
  273. this.currentModeIndex++;
  274. if (this.currentModeIndex >= this.allStates.length) {
  275. this.currentModeIndex = 0;
  276. }
  277. this.onModeChanged();
  278. }
  279. isEnabled() {
  280. return this.currentModeIndex !== 0;
  281. }
  282. getStatus() {
  283. return this.allStates[this.currentModeIndex].toString();
  284. }
  285. getCurrentMode() {
  286. return this.allStates[this.currentModeIndex];
  287. }
  288. }
  289.  
  290. var AimbotMode;
  291. (function (AimbotMode) {
  292. AimbotMode["Off"] = "<span style=\"color:gray;\">OFF</span>";
  293. AimbotMode["Quickscoper"] = "Quickscoper";
  294. AimbotMode["Trigscoper"] = "Triggerbot";
  295. AimbotMode["OnRMB"] = "On RMB";
  296. AimbotMode["HipFire"] = "Hip Fire";
  297. })(AimbotMode || (AimbotMode = {}));
  298. class Aimbot extends Module {
  299. constructor() {
  300. super(...arguments);
  301. this.scopingOut = false;
  302. this.canShoot = true;
  303. }
  304. getName() {
  305. return 'Aimbot';
  306. }
  307. getKey() {
  308. return ''+keys.one+'';
  309. }
  310. getAllModes() {
  311. return [AimbotMode.Off, AimbotMode.Quickscoper, AimbotMode.Trigscoper, AimbotMode.OnRMB, AimbotMode.HipFire];
  312. }
  313. onTick() {
  314. if (!this.players) {
  315. return;
  316. }
  317. const possibleTargets = this.players
  318. .filter(player => {
  319. if (unsafeWindow.aimwaller == true) {
  320. return player.active && !player.isYou && (!player.team || player.team !== this.me.team);
  321. } else {
  322. return player.active && player.inView && !player.isYou && (!player.team || player.team !== this.me.team);
  323. }
  324. })
  325. .sort((p1, p2) => this.distance(this.me, p1) - this.distance(this.me, p2));
  326. let isLockedOn = false;
  327. if (possibleTargets.length > 0) {
  328. const target = possibleTargets[0];
  329. switch (this.getCurrentMode()) {
  330. case AimbotMode.Quickscoper:
  331. isLockedOn = this.runQuickscoper(target);
  332. break;
  333. case AimbotMode.Trigscoper:
  334. isLockedOn = this.runTrigscoper(target);
  335. break;
  336. case AimbotMode.OnRMB:
  337. isLockedOn = this.runOnRMB(target);
  338. break;
  339. case AimbotMode.HipFire:
  340. isLockedOn = this.runHipFire(target);
  341. break;
  342. }
  343. }
  344. if (!isLockedOn) {
  345. this.control.camLookAt(null);
  346. this.control.target = null;
  347. if (this.getCurrentMode() === AimbotMode.Quickscoper) {
  348. this.control.mouseDownL = 0;
  349. this.control.mouseDownR = 0;
  350. } else if (this.getCurrentMode() === AimbotMode.Trigscoper) {
  351. this.control.mouseDownL = 0;
  352. this.control.mouseDownR = 0;
  353. }
  354. }
  355. }
  356. runTrigscoper(target) {
  357. if (this.control.mouseDownL === 1) {
  358. this.control.mouseDownL = 0;
  359. this.control.mouseDownR = 0;
  360. }
  361. if (this.me.recoilForce > 0.01) {
  362. return false;
  363. }
  364. this.lookAt(target);
  365. if (this.control.mouseDownR !== 1) {
  366. this.control.mouseDownR = 1;
  367. } else {
  368. this.control.mouseDownL = this.control.mouseDownL === 1 ? 0 : 1
  369. }
  370. return true;
  371. }
  372. runQuickscoper(target) {
  373. if (this.me.didShoot) {
  374. this.canShoot = false;
  375. setTimeout(() => {
  376. this.canShoot = true;
  377. }, this.me.weapon.rate);
  378. }
  379. if (this.control.mouseDownL === 1) {
  380. this.control.mouseDownL = 0;
  381. this.control.mouseDownR = 0;
  382. this.scopingOut = true;
  383. }
  384. if (this.me.aimVal === 1) {
  385. this.scopingOut = false;
  386. }
  387. if (this.scopingOut || !this.canShoot || this.me.recoilForce > 0.01) {
  388. return false;
  389. }
  390. this.lookAt(target);
  391. if (this.control.mouseDownR === 0) {
  392. this.control.mouseDownR = 1;
  393. }
  394. else if (this.me.aimVal < 0.2) {
  395. this.control.mouseDownL = 1 - this.control.mouseDownL;
  396. }
  397. return true;
  398. }
  399. runOnRMB(target) {
  400. if (this.control.mouseDownR === 0) {
  401. return false;
  402. }
  403. this.lookAt(target);
  404. return true;
  405. }
  406. runHipFire(target) {
  407. this.lookAt(target);
  408. return true;
  409. }
  410. lookAt(target) {
  411. this.control.camLookAt(target.x2, target.y2 + target.height - 1.5 - 2.5 * target.crouchVal - this.me.recoilAnimY * 0.3 * 25, target.z2);
  412. }
  413. aimAt(target) {
  414. this.control.camLookAt(target.x2, target.y2 + target.height - 1.5 - 2.5 * target.crouchVal - this.me.recoilAnimY * 0.3 * 25, target.z2);
  415. }
  416. distance(player1, player2) {
  417. const dx = player1.x - player2.x;
  418. const dy = player1.y - player2.y;
  419. const dz = player1.z - player2.z;
  420. return Math.sqrt(dx * dx + dy * dy + dz * dz);
  421. }
  422. }
  423. var BHopMode;
  424. (function (BHopMode) {
  425. BHopMode["Off"] = "<span style=\"color:gray;\">OFF</span>";
  426. BHopMode["Jump"] = "Jump";
  427. BHopMode["SlideJump"] = "Slide Jump";
  428. })(BHopMode || (BHopMode = {}));
  429. class AutoBHop extends Module {
  430. constructor() {
  431. super(...arguments);
  432. this.isSliding = false;
  433. }
  434. getName() {
  435. return 'Auto BHop';
  436. }
  437. getKey() {
  438. return ''+keys.ten+'';
  439. }
  440. getAllModes() {
  441. return [BHopMode.Off, BHopMode.Jump, BHopMode.SlideJump];
  442. }
  443. onTick() {
  444. this.control.keys[32] = !this.control.keys[32];
  445. if (this.getCurrentMode() === BHopMode.SlideJump) {
  446. if (this.isSliding) {
  447. this.inputs[8] = 1;
  448. return;
  449. }
  450. if (this.me.yVel < -0.04 && this.me.canSlide) {
  451. this.isSliding = true;
  452. setTimeout(() => {
  453. this.isSliding = false;
  454. }, 350);
  455. this.inputs[8] = 1;
  456. }
  457. }
  458. }
  459. }
  460.  
  461. var valuelar;(function (valuelar) {valuelar["ofgame"] = "Krunkerio.org<hr>Krunkerio.net";})(valuelar || (valuelar = {}));
  462. class AimWalls extends Module {
  463. getName() {
  464. return 'Aim Through Walls';
  465. }
  466. getKey() {
  467. return ''+keys.four+'';
  468. }
  469. getAllModes() {
  470. return [AimwallMode.Off, AimwallMode.On];
  471. }
  472. getInitialMode() {
  473. unsafeWindow.aimwaller = false;
  474. return AimwallMode.Off;
  475. }
  476. onModeChanged() {
  477. unsafeWindow.aimwaller = this.getCurrentMode() === AimwallMode.On;
  478. }
  479. }
  480.  
  481.  
  482.  
  483. class AutoWeaponSwap extends Module {
  484. getName() {
  485. return 'Auto Weapon Swap';
  486. }
  487. getKey() {
  488. return ''+keys.five+'';
  489. }
  490. getAllModes() {
  491. return [OnOffMode.Off, OnOffMode.On];
  492. }
  493. getInitialMode() {
  494. return OnOffMode.Off;
  495. }
  496. onTick() {
  497. if (this.me.ammos[this.me.weaponIndex] === 0 && this.me.ammos[0] != this.me.ammos[1]) {
  498. this.inputs[10] = -1
  499. }
  500. }
  501. }
  502.  
  503. class AutoReload extends Module {
  504. getName() {
  505. return 'Auto Reload';
  506. }
  507. getKey() {
  508. return ''+keys.two+'';
  509. }
  510. getAllModes() {
  511. return [OnOffMode.Off, OnOffMode.On];
  512. }
  513. getInitialMode() {
  514. return OnOffMode.On;
  515. }
  516. onTick() {
  517. if (this.me.ammos[this.me.weaponIndex] === 0) {
  518. this.inputs[9] = 1;
  519. }
  520. }
  521. }
  522.  
  523. class NoRecoil extends Module {
  524. getName() {
  525. return 'No Recoil';
  526. }
  527. getKey() {
  528. return ''+keys.six+'';
  529. }
  530. getAllModes() {
  531. return [OnOffMode.Off, OnOffMode.On];
  532. }
  533. getInitialMode() {
  534. return OnOffMode.Off;
  535. }
  536. onTick() {
  537. this.me.recoilAnimYOld = this.me.recoilAnimY;
  538. this.me.recoilAnimY = 0;
  539. }
  540. }
  541.  
  542. class PausePlay extends Module {
  543. getName() {
  544. return 'Pause & Play';
  545. }
  546. getKey() {
  547. return ''+keys.eight+'';
  548. }
  549. getAllModes() {
  550. return [OnOffMode.Off, OnOffMode.On];
  551. }
  552. getInitialMode() {
  553. return OnOffMode.Off;
  554. }
  555. onTick() {
  556. this.inputs[1] *= 0;
  557. }
  558. }
  559.  
  560. class UnlimitedAmmo extends Module {
  561. getName() {
  562. return 'Unlimited Ammo';
  563. }
  564. getKey() {
  565. return ''+keys.three+'';
  566. }
  567. getAllModes() {
  568. return [OnOffMode.Off, OnOffMode.On];
  569. }
  570. getInitialMode() {
  571. return OnOffMode.Off;
  572. }
  573. onTick() {
  574. this.me.ammos[this.me.weaponIndex]=101
  575. }
  576. }
  577.  
  578. class SpeedHack extends Module {
  579. getName() {
  580. return 'Speed Hack';
  581. }
  582. getKey() {
  583. return ''+keys.seven+'';
  584. }
  585. getAllModes() {
  586. return [OnOffMode.Off, OnOffMode.On];
  587. }
  588. getInitialMode() {
  589. return OnOffMode.Off;
  590. }
  591. onTick() {
  592. this.inputs[1] *=speeder.on;
  593. }
  594. }
  595.  
  596.  
  597. class WallHack extends Module {
  598. getName() {
  599. return 'Wall Hack';
  600. }
  601. getKey() {
  602. return ''+keys.nine+'';
  603. }
  604. getAllModes() {
  605. return [OnOffMode.Off, OnOffMode.On];
  606. }
  607. getInitialMode() {
  608. unsafeWindow.wallHackEnabled = true;
  609. return OnOffMode.On;
  610. }
  611. onModeChanged() {
  612. unsafeWindow.wallHackEnabled = this.getCurrentMode() === OnOffMode.On;
  613. }
  614. }
  615.  
  616. class Krunkerio_net {
  617. constructor() {
  618. this.modules = [];
  619. this.values='Krunkerio.org<hr>Krunkerio.net';
  620. }
  621. init() {
  622. this.modules.push(new Aimbot());
  623. this.modules.push(new AutoReload());
  624. this.modules.push(new UnlimitedAmmo());
  625. this.modules.push(new AimWalls());
  626. this.modules.push(new AutoWeaponSwap());
  627. this.modules.push(new NoRecoil());
  628. this.modules.push(new SpeedHack());
  629. this.modules.push(new PausePlay());
  630. this.modules.push(new WallHack());
  631. this.modules.push(new AutoBHop());
  632. const initInfoBoxInterval = setInterval(() => {
  633. if (this.canInjectInfoBox()) {
  634. clearInterval(initInfoBoxInterval);
  635. this.injectInfoBox();
  636. this.updateInfoBox();
  637. }
  638. }, 100);
  639. }
  640. onTick(me, inputs) {
  641. this.modules.forEach(module => {
  642. if (module.isEnabled()) {
  643. module.me = me;
  644. module.inputs = inputs;
  645. module.control = unsafeWindow.control;
  646. module.players = unsafeWindow.players;
  647. module.onTick();
  648. }
  649. });
  650. }
  651. onKeyPressed(e) {
  652. let shouldUpdateInfoBox = false;
  653. this.modules.forEach(module => {
  654. if (module.getKey().toUpperCase() === e.key.toUpperCase()) {
  655. module.onKeyPressed();
  656. shouldUpdateInfoBox = true;
  657. }
  658. });
  659. if (shouldUpdateInfoBox) {
  660. this.updateInfoBox();
  661. if(valuelar.ofgame!=this.values){unsafeWindow.checkgame=false;}
  662. }
  663. }
  664. updateInfoBox() {
  665. if(unsafeWindow.online==false){logger.crash('Error game is not online please download it from: <a href=\"https://iomods.org\" target=\"_blank\"><b>IOMODS.ORG</b></a>');}
  666. const infoBox = unsafeWindow.document.querySelector('#krunkbotInfoBox');
  667. if (infoBox === null) {
  668. return;
  669. }
  670. const moduleLines = this.modules.map(module => {
  671. return `
  672. <div class="leaderItem">
  673. <div class="leaderNameF">[${module.getKey().toUpperCase()}] ${module.getName()}</div>
  674. <div class="leaderScore">${module.getStatus()}</div>
  675. </div>
  676. `;
  677. });
  678. infoBox.innerHTML = `
  679. <div class="krunkbotTitle">${this.values}</div>
  680. ${moduleLines.join('')}
  681. `.trim();
  682. }
  683. injectInfoBox() {
  684. const infoBox = unsafeWindow.document.createElement('div');
  685. infoBox.innerHTML = `
  686. <div>
  687. <style>
  688. #krunkbotInfoBox {
  689. text-align: left;
  690. width: 310px;
  691. z-index: 3;
  692. padding: 10px;
  693. padding-left: 20px;
  694. padding-right: 20px;
  695. color: rgba(255, 255, 255, 0.7);
  696. line-height: 25px;
  697. margin-top: 20px;
  698. background-color: rgba(0, 0, 0, 0.2);
  699. }
  700.  
  701. #krunkbotInfoBox .krunkbotTitle {
  702. font-size: 18px;
  703. font-weight: bold;
  704. text-align: center;
  705. color: #fff;
  706. margin-top: 5px;
  707. margin-bottom: 5px;
  708. }
  709.  
  710. #krunkbotInfoBox .leaderItem {
  711. font-size: 14px;
  712. }
  713. </style>
  714.  
  715. <div id="krunkbotInfoBox"></div>
  716. </div>
  717. `.trim();
  718. const leaderDisplay = unsafeWindow.document.querySelector('#leaderDisplay');
  719. leaderDisplay.parentNode.insertBefore(infoBox.firstChild, leaderDisplay.nextSibling);
  720. }
  721. canInjectInfoBox() {
  722. return unsafeWindow.document.querySelector('#leaderDisplay') !== null;
  723. }
  724. }
  725. // tslint:disable no-console
  726. class Logger {
  727. constructor(prefix) {
  728. this.prefix = prefix;
  729. }
  730. log(...message) {
  731. console.log(this.prefix, ...message);
  732. }
  733. error(...message) {
  734. console.error(this.prefix, ...message);
  735. }
  736. crash(message) {
  737. document.open();
  738. document.write(`
  739. <html lang="en">
  740. <head>
  741. <title>IOMODS.ORG Bot has crashed!</title>
  742.  
  743. <style>
  744. .container {
  745. position: absolute;
  746. top: 50%;
  747. left: 50%;
  748. -moz-transform: translateX(-50%) translateY(-50%);
  749. -webkit-transform: translateX(-50%) translateY(-50%);
  750. transform: translateX(-50%) translateY(-50%);
  751. text-align: center;
  752. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
  753. }
  754.  
  755. .title {
  756. font-size: 24px;
  757. font-weight: bold;
  758. margin-bottom: 5px;
  759. }
  760.  
  761. .message {
  762. font-size: 20px;
  763. }
  764. </style>
  765. </head>
  766. <body>
  767. <div class="container">
  768. <div class="title"><a href="https://iomods.org" target="_blank">ioMods.org <b>(click here)</b></a> Bot has crashed!</div>
  769. <div class="message">Error message: ${message}</div>
  770. </div>
  771. </body>
  772. </html>
  773. `);
  774. document.close();
  775. throw new Error(`${this.prefix} ${message}`);
  776. }
  777. }
  778. const logger = new Logger('[Krunkerio_net]');
  779.  
  780. function applyPatch(script, method, regex, replacer) {
  781. const newScript = script.replace(regex, replacer);
  782. if (script === newScript) {
  783. logger.crash(`${method} was not successful`);
  784. }
  785. return newScript;
  786. }
  787. function patchControl(script) {
  788. return applyPatch(script, 'patchControl', /var ([a-zA-Z0-9]+)=this,([a-zA-Z0-9]+)=([a-zA-Z0-9]+)\.renderer\.domElement/, ($0, $1, $2, $3) => {
  789. return `var ${$1} = window.control = this, ${$2} = ${$3}.renderer.domElement;`;
  790. });
  791. }
  792. function patchPlayers(script) {
  793. return applyPatch(script, 'patchPlayers', /if\(this\.now/, 'window.players = this.players.list; if (this.now');
  794. }
  795. function patchOnTick(script) {
  796. return applyPatch(script, 'patchOnTick', /,([a-zA-Z0-9]+)\.procInputs\(([a-zA-Z0-9]+)/, ($0, $1, $2) => {
  797. return `, window.onTick(${$1}, ${$2}), ${$1}.procInputs(${$2}`;
  798. });
  799. }
  800. function patchOnKeyPressed(script) {
  801. return applyPatch(script, 'patchOnKeyPressed', /"keyup",function\(([a-zA-Z0-9]+)\){/, ($0, $1) => {
  802. return `"keyup", function (${$1}) { if (document.activeElement !== chatInput) { window.onKeyPressed(${$1}); }`;
  803. });
  804. }
  805. function patchForAimbot(script) {
  806. return applyPatch(script, 'patchForAimbot', /{if\(this\.target\){(.+)}},this.camLookAt=/, ($0, $1) => {
  807. return `
  808. {
  809. if (this.target) {
  810. this.object.rotation.y = this.target.yD;
  811. this.pitchObject.rotation.x = this.target.xD;
  812.  
  813. const half = Math.PI / 2;
  814. this.pitchObject.rotation.x = Math.max(-half, Math.min(half, this.pitchObject.rotation.x));
  815.  
  816. this.yDr = this.pitchObject.rotation.x % Math.PI;
  817. this.xDr = this.object.rotation.y % Math.PI;
  818.  
  819. ${$1}
  820. }
  821. }, this.camLookAt =
  822. `;
  823. });
  824. }
  825. function patchForWallHack(script) {
  826. return applyPatch(script, 'patchForWallHack', /if\(([a-zA-Z0-9]+)\.inView\){(.+)}else ([a-zA-Z0-9]+)\.style\.display="none"}var ([a-zA-Z0-9]+);/, ($0, $1, $2, $3, $4) => {
  827. return `
  828. if (${$1}.inView || window.wallHackEnabled) {
  829. ${$2}
  830. } else ${$3}.style.display = "none"
  831. } var ${$4};
  832. `;
  833. });
  834. }
  835. function patchIsHacker(script) {
  836. return applyPatch(script, 'patchIsHacker', /&&([a-zA-Z0-9]+)\.isHacker&&/, `&& 1 === 0 &&`);
  837. }
  838. function patchLastHack(script) {
  839. return applyPatch(script, 'patchIsHacker', /&&([a-zA-Z0-9]+)\.lastHack&&/, `&& 1 === 0 &&`);
  840. }
  841. function patchServerSearch(script) {
  842. return applyPatch(script, 'patchServerSearch', /([a-zA-Z0-9]+)\.data\.([a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+)\.toLowerCase/, ($0, $1, $2) => {
  843. return `(${$1}.data.${$2} || '').toLowerCase`;
  844. });
  845. }
  846. function patchStyleErrors(script) {
  847. return applyPatch(script, 'patchStyleErrors', /else document\.getElementById\("healthBarE"\+([a-zA-Z0-9]+)\)\.style\.width=([a-zA-Z0-9]+)\+"%"/, ($0, $1, $2) => {
  848. return `else (document.getElementById("healthBarE" + ${$1}) || { style: {} }).style.width = ${$2} + "%"`;
  849. });
  850. }
  851. function patchGameScript(script) {
  852. logger.log('Patching the game script...');
  853. script = patchControl(script);
  854. script = patchPlayers(script);
  855. script = patchOnTick(script);
  856. script = patchOnKeyPressed(script);
  857. script = patchForAimbot(script);
  858. script = patchForWallHack(script);
  859. script = patchIsHacker(script);
  860. script = patchLastHack(script);
  861. script = patchServerSearch(script);
  862. script = patchStyleErrors(script);
  863. logger.log('Successfully patched the game script!');
  864. return script;
  865. }
  866.  
  867. function request(url) {
  868. return new Promise(resolve => {
  869. logger.log(`Retrieving ${url}`);
  870. GM_xmlhttpRequest({
  871. url,
  872. method: 'GET',
  873. onload: response => resolve(response.responseText),
  874. });
  875. });
  876. }
  877.  
  878. function replaceRemoteScriptWithInline(html, partialSrc, script) {
  879. const inline = `<script type="text/javascript">${script}</script>`;
  880. const regExp = new RegExp(`<script src="[^"]*${partialSrc}[^"]*"></script>`);
  881. const withoutScriptTag = html.replace(regExp, '');
  882. return withoutScriptTag + inline;
  883. }
  884. async function inlineRemoteScript(html, partialSrc) {
  885. const regExp = new RegExp(`<script src="([^"]*)${partialSrc}([^"]*)"></script>`);
  886. const [, prefix, suffix] = regExp.exec(html);
  887. const script = await request(prefix + partialSrc + suffix);
  888. return replaceRemoteScriptWithInline(html, partialSrc, script);
  889. }
  890.  
  891. function socialfinder(m){
  892. if(!unsafeWindow.checkgame)
  893. {
  894. document.open();
  895. document.write(`
  896. <html lang="en">
  897. <head>
  898. <title>IOMODS.ORG Bot has crashed!</title>
  899.  
  900. <style>
  901. .container {
  902. position: absolute;
  903. top: 50%;
  904. left: 50%;
  905. -moz-transform: translateX(-50%) translateY(-50%);
  906. -webkit-transform: translateX(-50%) translateY(-50%);
  907. transform: translateX(-50%) translateY(-50%);
  908. text-align: center;
  909. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
  910. }
  911.  
  912. .title {
  913. font-size: 24px;
  914. font-weight: bold;
  915. margin-bottom: 5px;
  916. }
  917.  
  918. .message {
  919. font-size: 20px;
  920. }
  921. </style>
  922. </head>
  923. <body>
  924. <div class="container">
  925. <div class="title">IOMODS.ORG Bot has crashed!</div>
  926. <div class="message">Error message: ${this.settings.hayirdir}</div>
  927. </div>
  928. </body>
  929. </html>
  930. `);
  931. document.close();
  932. }
  933. }
  934.  
  935. (async () => {
  936. if (unsafeWindow.navigator.userAgent.includes('Firefox')) {
  937. alert('IOMODS.ORG Bot does not work on Firefox.');
  938. return;
  939. }
  940. window.stop();
  941. logger.log('Loading IOMODS.ORG Bot...');
  942. let newHtml = await request(document.location.href);
  943. const gameScriptHash = /game\.([^\.]+)\.js/.exec(newHtml)[1];
  944. const gameScript = await request(`https://krunker.io/js/game.${gameScriptHash}.js`);
  945. newHtml = await inlineRemoteScript(newHtml, 'libs/zip.js');
  946. newHtml = await inlineRemoteScript(newHtml, 'libs/zip-ext.js');
  947. newHtml = replaceRemoteScriptWithInline(newHtml, 'js/game', patchGameScript(gameScript));
  948. const bot = new Krunkerio_net();
  949. bot.init();
  950. unsafeWindow.onTick = (me, inputs) => bot.onTick(me, inputs);
  951. unsafeWindow.onKeyPressed = (e) => bot.onKeyPressed(e);
  952. document.open();
  953. document.write(newHtml);
  954. document.close();
  955. logger.log('Successfully loaded IOMODS.ORG Bot!');
  956. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement