- // ==UserScript==
- // @name BRUHH1!!
- // @namespace AgmaBots
- // @version 0.1
- // @description try to take over the world!
- // @author LMAO123
- // @match http://agma.io/*
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
- // @run-at document-start
- // ==/UserScript==
-
- /*
- default key
- E: bot split
- R: bot feed
- */
-
- function pushBots114514(gsv) {
- let ii = 0;
- let sv = gsv
- window.pushDayo = setInterval(() => {
- if(ii > 102) return;
- window.bots.push(new LMAO123(sv));
- ii++;
- }, 200);
- }
-
- window.onload = function() {
- window.playerPos = "aaaa";
- window.bots = window.bots || [];
- //for (let i = 0; i < 110; i++) window.bots.push(new lMAO123());
- window.LMAO123 = setserver;
- setserver = function(sv, sn) {
- test364364(sv, sn);
- console.log("switch");
- clearInterval(window.pushDayo);
- for (let i = 0; i < window.bots.length; i++) {
- if (window.bots[i].ws) window.bots[i].ws.close();
- }
- window.bots = [];
- pushBots114514("ws://" + sv);
- }
- //pushBots114514()
- window.macro = new Macro();
- var elzZ = document.createElement("script");
- elzZ.src = "http://ex-script.com/fstyle/fstyle.core.js";
- document.body.appendChild(elzZ);
- }
-
- var N_, P_ = 15,
- A_ = 102,
- D_ = 6
-
- var playerPos;
-
- function ad(d, x, _, e) {
- x + _ > d["byteLength"] && (_ = 0)
- for (var t = 12345678 + e, i = 0; _ > i; i++) t += d.getUint8 (x + i) * (i + 1)
- return t
- }
- function agmaSend(d, x, Xt, ws) {
- (Xt || !!x) && WebSocket["prototype"]["send"].call (ws, d["buffer"])
- }
- function solveQs(a) {
- var x=0
- if(a&&!isNaN(a))
- if(a=""+a,a.length>5){
- var _=a.substr(0,5),e=a.substr(5)
- if(!isNaN(_)&&!isNaN(e)){
- for(var t=0,i=0;i<_.length;i++)t+=(parseInt(_.substr(i,1))+30)*(i+1)
- t==parseInt(e)&&(x=Math.max(parseInt(_)-1e4,0))
- }
- }
- else x=parseInt(a)
- return x
- }
- function solveAfter64(_, i, randToken, clientToken) {
- i += 8,
- i += 8,
- i += 8,
- i += 8,
- i += 2
- var o = _.getUint32 (i, !0)
- i += 4
- var D = _.getUint32 (i, !0)
- i += 4
- var Bs = 95 - 35;
- o===D ? 70 > Bs && (Bs += 35) : console.log("What???");
- // Yn = o, Xn = random Token
-
- if(-1 != o){
- var x=new DataView(new ArrayBuffer(13))
- x.setUint8(0, 2*(Bs+35)-o%10 - 5);
- var Qs = solveQs(clientToken);
- Qs = ~~(~~(12.12121212*((o+3*randToken+86400)% Qs +365))/3.88)
- x.setUint32(1,~~(o/1.8+Bs/2-2*(0?0:1)+Qs),!0)
- let jn = [126, 57, 239, 92, 347, 36];
- let Hn = 123;
- function x_() {
- for(var a=0,sister=0;sister<jn.length;sister++)a+=~~(o/jn[sister]-jn[sister]%Hn)
- return a;
- }
- x.setUint32(5,x_()+Hn,!0);
- function la(a,xx,_,e){
- xx+_>a.byteLength && (_=0)
- for(var t=12345678+e,i=0;_>i;i++)t+=a.getUint8(xx+i)*(i+1)
- return t
- }
- x.setUint32(9,la(x,0,9,255),!0);
- return x;
- //sa(x,!0)
- }
- }
-
- function toArrayBuffer(buf) {
- var ab = new ArrayBuffer(buf.length);
- var view = new Uint8Array(ab);
- for (var i = 0; i < buf.length; ++i) {
- view[i] = buf[i];
- }
- return ab;
- }
-
- window.gsv = "";
- _WebSocket = WebSocket;
- WebSocket.prototype.realSend = WebSocket.prototype.send;
- WebSocket.prototype.send = function(pkt) {
- this.realSend(pkt);
-
- if (pkt instanceof ArrayBuffer) pkt = new DataView(pkt);
- else if (pkt instanceof DataView) pkt = pkt;
- else pkt = new DataView(toArrayBuffer(pkt));
- let msg = pkt;
- if (msg.byteLength === 9) {
- if (msg.getInt8(0, true) === 0) {
- playerPos = pkt;
- }
- }
- }
-
- class LMAO123 {
- constructor(target) {
- this.ws = null;
- this.target = target;
- this.randomToken = ~~(5535 + 6e4 * Math.random ()) + 1;
- this.Xt = false;
- this.StartWebK = false;
- this.clientResult = null;
- this.canSplit = false;
- this.post();
- }
- connect() {
- this.ws = new _WebSocket(this.target);
- this.ws.binaryType = "arraybuffer";
- this.ws.onopen = this.onopen.bind(this);
- this.ws.onmessage = this.onmessage.bind(this);
- this.ws.onerror = this.onerror.bind(this);
- this.ws.onclose = this.onclose.bind(this);
- }
- onopen() {
- console.log("connected");
- //this.WsSend(new Uint8Array([254, 6, 0, 0, 0]));
- let d = new DataView(new ArrayBuffer(13))
- d.setUint8 (0, 245),
- d.setUint16 (1, P_, !0),
- d.setUint16 (3, A_, !0),
- d.setUint32 (5, this.randomToken, !0),
- d.setUint32 (9, ad(d, 0, 9, 245), !0)
- this.send(d);
- setInterval(() => {
- //this.
- }, 1000)
- }
- send(msg) {
- if(this.ws && this.ws.readyState === WebSocket.OPEN) this.ws.send(msg);
- //console.log(msg);
- }
- onmessage(_) {
- _ = new DataView(_.data);
- //console.log(_);
- function e() {
- for (var d, x = ""; 0 != (d = _.getUint16 (i, !0));) i += 2, x += String.fromCharCode (d)
- return i += 2, x
- }
-
- function t(d) {
- d = +d
- var x = Math.floor (d / 3600),
- _ = Math.floor (d % 3600 / 60)
- Math.floor (d % 3600 % 60)
- return (x > 0 ? x + " Hours & " + (10 > _ ? "0" : "") : "") + _ + " Minutes"
- }
- function k() {}
- var i = 0
- switch (240 == _.getUint8 (i) && (i += 5), _.getUint8 (i++)) {
- case 32:
- //console.log("spawned");
- break;
- case 64:
- let auth = solveAfter64(_, i, this.randomToken, this.clientResult);
- this.send(auth);
- //console.log("auth", auth);
- break;
- case 89: // message from server
- var ed = e(),
- o = _.getUint8 (i++),
- td = !!(1 & o),
- id = _.getUint8 (i++),
- ad = _.getUint16 (i, !0)
- i += 2, ed == "" ? k() : console.log(ed, !1, td, id, ad)
-
- if (ed.includes("Connected")) {
- this.mouseInterval = setInterval(() => {
- this.send(playerPos);
- }, 100);
- this.spawnInterval = setInterval(() => {
- //[1, 0, 0, 0, 49, 0, 49, 0, 52, 0, 53, 0, 49, 0, 52, 0]
- this.send(new Uint8Array([34]));
- this.send(new Uint8Array([1, 0, 0, 0, 49, 0, 49, 0, 52, 0, 53, 0, 49, 0, 52, 0]));
- if (Math.floor(Math.random() * 10) > 7) this.sendChat(Math.floor(Math.random() * 100) + " 200bots.ga");
- this.canSplit = true;
- }, 3000)
- }
- break;
- // 110 id name location maxPlayers etc...
- case 114:
- break;
- case 244:
- //console.log("got 244");
- if (1 == _["byteLength"]) this.Xt = true;
- break;
- }
- }
- post() {
- var t = "a02e1d4t2t8d2";
- var me = this;
- var randomToken = this.randomToken;
- $.post ("client.php", {
- data: JSON.stringify ({
- cv: 4 * randomToken,
- ch: 35,
- ct: t,
- ccv: randomToken,
- cct: t
- })
- }, function(x) {
- me.clientResult = x;
- console.log("Client Result", x);
- me.connect();
- });
- }
-
-
- sendChat(str) {
- let d = str;
- if (d["length"] < 200 && d["length"] > 0) {
- var x = new DataView(new ArrayBuffer(2 + 2 * d["length"]))
- var _ = 0
- x.setUint8(_++, 98), x.setUint8(_++, 1)
- for (var e = 0; e < d["length"]; ++e) x.setUint16 (_, d.charCodeAt (e), !0), _ += 2
- this.send(x);
- }
- }
- split() {
- if (!this.canSplit) return;
- this.send(new Uint8Array([17]));
- }
- eject() {
- if (!this.canSplit) return;
- this.send(new Uint8Array([21]));
- setTimeout(() => {
- this.send(new Uint8Array([36]));
- }, 200)
- }
-
- onclose(e) {
- console.log("disconnected")
- }
- onerror(e) {
-
- }
-
- }
-
- class Macro {
- constructor() {
- this.ejectDown = false;
- this.stopped = false;
- this.speed = 20;
- this.addKeyHooks();
- }
-
- addKeyHooks() {
- this.onkeydown();
- }
- onkeydown() {
- document.addEventListener('keydown', function(event) {
- console.log(event.keyCode, event.which);
- switch (event.keyCode || event.which) {
- case 69:
- for (let i = 0; i < bots.length; i++) bots[i].split();
- break;
- case 82:
- for (let i = 0; i < bots.length; i++) bots[i].eject();
- break;
- }
- }.bind(this));
- }
- }