NeyBots|Released AGARZ Bots

Agarz.com Bots

当前为 2019-01-12 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name NeyBots|Released AGARZ Bots
  3. // @namespace www.NeyBots.ga
  4. // @version 1
  5. // @description Agarz.com Bots
  6. // @author FreeTzYT
  7. // @require https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js
  8. // @match *.agarz.com/*
  9. // @run-at document-body
  10. // @grant none
  11. // ==/UserScript==
  12. // ==/UserScript==
  13. /* jshint -W097 */
  14. 'use strict';
  15. var url = null;
  16. var injectionHTML = '';
  17. injectionHTML += `PGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZ2IoNzcsIDc3LCA3Nyk7IHBhZGRpbmc6MnB4OyBmbG9hdDpsZWZ0OyBjb2xvcjp3aGl0ZTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTFweDsgdG9wOi0xcHg7IGJvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjUpOyB6LWluZGV4IDogOTk5OyI+IDxpbWcgc3JjPSJodHRwczovL2kuaW1ndXIuY29tL2Y0V1ZCR2gucG5nIiBzdHlsZT0iaGVpZ2h0OjMzcHg7IHdpZHRoOjE4OHB4OyBmbG9hdDpsZWZ0OyI+PGRpdiBzdHlsZT0iY3Vyc29yOmRlZmF1bHQ7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjEycHg7IiBpZD0ibXNnIj4gPGRpdiBzdHlsZT0iCWZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjZweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMyk7IHBhZGRpbmc6N3B4OyBib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsiIGlkPSJtc2d0eHQiPlRoYW5rcyBGb3IgVXNpbmcgTmV5Qm90cy5nYTwvZGl2PiA8L2Rpdj4gPGRpdiBzdHlsZT0iY3Vyc29yOmRlZmF1bHQ7IGZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjEycHg7IiBpZD0iaG90a2V5cyI+IDxkaXYgaWQ9InNwbGl0Ym90cyIgc3R5bGU9IglmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo2cHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjMpOyBwYWRkaW5nOjdweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7Ij48ZGl2IHN0eWxlPSIJZmxvYXQ6bGVmdDsgYm9yZGVyLXJhZGl1czozcHg7IHBhZGRpbmc6MnB4IDZweDsgYmFja2dyb3VuZC1jb2xvcjojYzczNTM1OyIgPlg8L2Rpdj48ZGl2IHN0eWxlPSIJZmxvYXQ6bGVmdDsgcGFkZGluZzoycHg7IG1hcmdpbi1sZWZ0OjVweDsiPlNwbGl0PC9kaXY+PC9kaXY+IDxkaXYgaWQ9ImVqZWN0Ym90cyIgc3R5bGU9IiBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo2cHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjMpOyBwYWRkaW5nOjdweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7Ij48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoycHggNnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiNjNzM1MzU7Ij5DPC9kaXY+PGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDsgcGFkZGluZzoycHg7IG1hcmdpbi1sZWZ0OjVweDsiPkVqZWN0PC9kaXY+PC9kaXY+IDxkaXYgaWQ9ImNoYW5nZWJvdHNtb2RlIiBzdHlsZT0iCWZsb2F0OmxlZnQ7IG1hcmdpbi1sZWZ0OjZweDsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDAuMyk7IHBhZGRpbmc6N3B4OyBib3JkZXItcmFkaXVzOjVweDsgLW1vei1ib3JkZXItcmFkaXVzOjVweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjVweDsiPjxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7IGJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjJweCA2cHg7IiBzdHlsZT0iY29sb3I6IHllbGxvdyI+UDwvZGl2PjxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7IHBhZGRpbmc6MnB4OyBtYXJnaW4tbGVmdDo1cHg7Ij5Cb3RNb2RlPC9kaXY+PC9kaXY+IDxkaXYgc3R5bGU9IiBmbG9hdDpsZWZ0OyBtYXJnaW4tbGVmdDo2cHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwLjMpOyBwYWRkaW5nOjdweDsgYm9yZGVyLXJhZGl1czo1cHg7IC1tb3otYm9yZGVyLXJhZGl1czo1cHg7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo1cHg7Ij48ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyBib3JkZXItcmFkaXVzOjNweDsgcGFkZGluZzoycHggNnB4OyI+UGluZzwvZGl2PjxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7IGJvcmRlci1yYWRpdXM6M3B4OyBwYWRkaW5nOjJweCA2cHg7IiBpZD0iaW9oZWxwZXJwaW5nIj4wPC9kaXY+PC9kaXY+IDwvZGl2PiA8L2Rpdj4gPC9kaXY+IDxkaXYgc3R5bGU9Igl0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDc3LCA3NywgNzcpOyBwYWRkaW5nOjVweDsgZmxvYXQ6bGVmdDsgei1pbmRleDogOTk5OyBjb2xvcjp3aGl0ZTsgcG9zaXRpb246YWJzb2x1dGU7IGxlZnQ6LTFweDsgdG9wOjQ0cHg7IGJvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjUpOyI+IDxkaXYgaWQ9ImJvdHNjb3VudGVyIj48ZGl2IHN0eWxlPSJmbG9hdDpub25lIj4gQm90czogMC8wPC9kaXY+PC9kaXY+IDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6NXB4OyBib3gtc2l6aW5nIDogYm9yZGVyLWJveDsiIGlkPSJjb3VudGRvd24iPjBkYXlzIDBocnMgMG1pbnMgMHNlY3M8L2Rpdj4gPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDo1cHg7IGJveC1zaXppbmcgOiBib3JkZXItYm94OyI+Ym90TW9kZTogPHNwYW4gaWQ9ImJvdG1vZGUiPlN0YW5kYXJkPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MTBweDtmb250LXNpemU6IDEycHg7Ij5Ub2tlbiA8YSBocmVmPSJodHRwOi8vYXBpLmlwaWZ5Lm9yZy8iIHRhcmdldD0iX2JsYW5rIj5DbGljayBGb3IgVG9rZW48L2E+IDwvZGl2Pg==`;
  18. var user = {
  19. x: 0,
  20. y: 0,
  21. cell: {
  22. x: 0,
  23. y: 0,
  24. },
  25. ip: null,
  26. offsetX: 0,
  27. offsetY: 0,
  28. origin: window.location.origin,
  29. mouseFreeze: false
  30. }
  31.  
  32. var send_Login = false;
  33. window._botSocket = window.WebSocket;
  34. function changeCanvas() {
  35. if (window.location.origin === "http://agar.red") {
  36. $('head').append(`<style type="text/css">#overlays {background: rgba(0, 0, 0, 0)!important;}</style>`);
  37. $('head').append(`<style type="text/css">#helloDialog {background: rgba(35, 35, 35, 0.84)!important;}</style>`);
  38. }
  39. }
  40. try {
  41. setTimeout(function() {
  42. changeCanvas();
  43. },5000);
  44. } catch(e) {
  45. setTimeout(function() {
  46. changeCanvas();
  47. },5000);
  48. }
  49. class Server {
  50. constructor(server) {
  51. this._ws = null;
  52. this._botServerIP = server;
  53. this.connect();
  54. }
  55. connect() {
  56. this._ws = new _botSocket(this._botServerIP);
  57. this._ws.binaryType = "arraybuffer";
  58. this._ws.onopen = this.OnOpen.bind(this);
  59. this._ws.onerror = this.OnError.bind(this);
  60. this._ws.onclose = this.OnClose.bind(this);
  61. this._ws.onmessage = this.OnMessage.bind(this);
  62. }
  63. OnOpen() {
  64. this._ws.send(JSON.stringify({
  65. read: 0,
  66. opcode: 0
  67. }));
  68. console.log("Server: Connected to bot server!");
  69. }
  70. OnError(err) {}
  71. OnClose(err) {
  72. send_Login = false;
  73. console.log("Server: Connected close", err);
  74. document.getElementById("msgtxt").innerHTML = `<span style='color:#dc1111;'>botServer Offline!</span>`;
  75. setTimeout(this.connect.bind(this), 5000);
  76. }
  77. OnMessage(msg) {
  78. var buf = JSON.parse(msg.data);
  79. switch (buf.data) {
  80. case 0:
  81. {
  82. switch (buf.opcode) {
  83. case 0:
  84. {
  85. document.getElementById("msgtxt").innerHTML = `<span style='color:#11dc11;'>IP Accepted!</span>`;
  86. setTimeout(function() {
  87. if (send_Login === false) {
  88. send_Login = true;
  89. this._ws.send(JSON.stringify({
  90. read: 0,
  91. opcode: 1
  92. }));
  93. }
  94. }.bind(this), 3000);
  95. switch (buf.readInfo) {
  96. case 0:
  97. {
  98. if (buf.reason === 0) {
  99. document.getElementById("msgtxt").innerHTML = `<span style='color:#11dc11;'>Login Accepted!</span>`;
  100. setInterval(function() {
  101. if (this._ws.readyState == 1) {
  102. if(user.mouseFreeze == true) return;
  103. this._ws.send(JSON.stringify({
  104. read: 0,
  105. opcode: 2,
  106. reason: {
  107. x: user.x,
  108. y: user.y
  109. }
  110. }))
  111. }
  112. }.bind(this), 50);
  113. setInterval(function() {
  114. if (this._ws.readyState == 1) {
  115. this._ws.send(JSON.stringify({
  116. read: 0,
  117. opcode: 3,
  118. reason: {
  119. ip: user.ip,
  120. origin: user.origin
  121. }
  122. }))
  123. }
  124. }.bind(this), 1000);
  125. } else if (buf.reason === 1) {
  126. document.getElementById("msgtxt").innerHTML = `<span style='color:#dc1111;'>Login Failed!</span>`;
  127. }
  128. }
  129. break;
  130. }
  131. }
  132. break;
  133. case 1:
  134. {
  135. document.getElementById("msgtxt").innerHTML = "<span style='color:#dc1111;'>IP alive!</span>";
  136. }
  137. break;
  138. case 2:
  139. {
  140. if (buf.reason.bots === 0) {
  141. document.getElementById("botscounter").innerHTML = `<div>${buf.reason.bots} / ${buf.reason.maxbots}</div>`;
  142. }
  143. if (buf.reason.bots > 0) {
  144. document.getElementById("botscounter").innerHTML = `<div>${buf.reason.bots} / ${buf.reason.maxbots}</div>`;
  145. }
  146. document.getElementById("countdown").innerHTML = `<div>${(buf.reason.time / 86400 >> 0)}days ${(buf.reason.time / 3600 % 24 >> 0)}hrs ${(buf.reason.time / 60 % 60 >> 0)}mins ${(buf.reason.time % 60 >> 0)}secs</div>`;
  147. }
  148. break;
  149. case 3:
  150. {
  151. document.getElementById("iohelperping").innerHTML = buf.ping;
  152. setTimeout(function() {
  153. this._ws.send(JSON.stringify({
  154. read: 0,
  155. opcode: 6
  156. }));
  157. }.bind(this), 1000);
  158. }
  159. break;
  160. }
  161. }
  162. break;
  163. }
  164. }
  165. sendSplit() {
  166. this._ws.send(JSON.stringify({
  167. read: 0,
  168. opcode: 4
  169. }));
  170. }
  171. sendEject() {
  172. this._ws.send(JSON.stringify({
  173. read: 0,
  174. opcode: 5
  175. }));
  176. }
  177. }
  178. document.addEventListener('keydown', function(e) {
  179. var key = e.keyCode || e.which;
  180. switch(key) {
  181. case 88:
  182. {
  183. document.getElementById("splitbots").innerHTML = `<div style="float:left;
  184. border-radius:3px;
  185. padding:2px 6px; background-color:#4db53c;" id="splitbots">X</div><div style="float:left;
  186. padding:2px;
  187. margin-left:5px;">Split</div>`;
  188. try {
  189. window.serverice.sendSplit();
  190. } catch(e) {}
  191. }
  192. break;
  193. case 67:
  194. {
  195. document.getElementById("ejectbots").innerHTML = `<div style="float:left;
  196. border-radius:3px;
  197. padding:2px 6px; background-color:#4db53c;" id="ejectbots">C</div><div style="float:left;
  198. padding:2px;
  199. margin-left:5px;">Eject</div>`;
  200. try {
  201. window.serverice.sendEject();
  202. } catch(e) {}
  203. }
  204. break;
  205. case 80:
  206. {
  207. if(user.mouseFreeze == false) {
  208. document.getElementById("botmode").innerHTML = `Mouse Freeze`;
  209. user.mouseFreeze = true;
  210. } else if(user.mouseFreeze == true) {
  211. document.getElementById("botmode").innerHTML = `Standard`;
  212. user.mouseFreeze = false;
  213. }
  214. }
  215. break;
  216. }
  217. });
  218. document.addEventListener('keyup', function(e) {
  219. var key = e.keyCode || e.which;
  220. switch(key) {
  221. case 88:
  222. {
  223. document.getElementById("splitbots").innerHTML = `<div style="float:left;
  224. border-radius:3px;
  225. padding:2px 6px; background-color:#c73535;" >X</div><div style="float:left;
  226. padding:2px;
  227. margin-left:5px;">Split</div>`;
  228. }
  229. break;
  230. case 67:
  231. {
  232. document.getElementById("ejectbots").innerHTML = `<div style="float:left;border-radius:3px;padding:2px 6px; background-color:#c73535;" >C</div><div style="float:left;
  233. padding:2px;
  234. margin-left:5px;">Eject</div>`;
  235. }
  236. break;
  237. }
  238. });
  239.  
  240. function AtobMenu() {
  241. try {
  242. if (!document.contains(document.getElementById("q"))) {
  243. var q = document.createElement("div");
  244. q.setAttribute("id", "bfacgui");
  245. document.body.appendChild(q);
  246. }
  247. q.innerHTML = `${window.atob(injectionHTML)}`;
  248. } catch (e) {
  249. setTimeout(function() {
  250. AtobMenu();
  251. }, 3000);
  252. }
  253. }
  254. setTimeout(AtobMenu ,3000);
  255. setTimeout(function() {
  256. window.serverice = new Server("ws://neybots-freetz.c9users.io:8082");
  257. },5000);
  258.  
  259.  
  260. WebSocket.prototype._send = WebSocket.prototype.send;
  261. WebSocket.prototype.send = function() {
  262. this._send.apply(this, arguments);
  263. console.log("url:" + this.url);
  264. if(url != this.url && this.url != "ws://neybots-freetz.c9users.io:8082/") {
  265. url = this.url;
  266. }
  267. var msg;
  268. switch(origin) {
  269. case "http://gkclan.me":
  270. msg = new DataView(arguments[0].buffer);
  271. break;
  272. // case "http://agar.red":
  273. // msg = new DataView(arguments[0].buffer);
  274. // break;
  275. case "https://popsplit.us":
  276. msg = new DataView(arguments[0].buffer);
  277. break;
  278. case "http://abs0rb.me":
  279. msg = new DataView(arguments[0].buffer);
  280. break;
  281. case "http://www.agario.info":
  282. msg = new DataView(arguments[0].buffer);
  283. break;
  284. case "http://cellz.io":
  285. msg = new DataView(arguments[0].buffer);
  286. break;
  287. case "http://agar.io":
  288. msg = new DataView(arguments[0].buffer);
  289. break;
  290. default:
  291. msg = new DataView(arguments[0]);
  292. break;
  293. }
  294. if ((msg.byteLength > 0) && (msg.getUint8(0) != 16)) {
  295. var f = "";
  296. for (var i = 0; i < msg.byteLength; i++) {
  297. var a = msg.getUint8(i);
  298. f = f + a + " ";
  299. }
  300. var realbuffers = f.split(' ');
  301. var minusrealbuffermassiv = realbuffers.length;
  302. var drr = realbuffers.splice(i, minusrealbuffermassiv);
  303. console.log("Detected new package: " + realbuffers);
  304. }
  305. if (msg.getInt8(0, true) !== 16 || msg.getUint8(0, true) !== 16) return;
  306. switch (msg.byteLength) {
  307. case 21:
  308. user.x = msg.getFloat64(1, true);
  309. user.y = msg.getFloat64(9, true);
  310. break;
  311. case 13:
  312. user.x = msg.getInt32(1, true);
  313. user.y = msg.getInt32(5, true);
  314. break;
  315. default:
  316. user.x = msg.getInt16(1, true);
  317. user.y = msg.getInt16(5, true);
  318. break;
  319.  
  320. }
  321. if (this.url.match('localhost') || this.url.match('127.0.0.1')) return;
  322. user.ip = this.url;
  323. //window.console.clear();
  324. };