Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
agar.io game client with bots
//replace http://agar.io/main_out.js by this file
//with Fiddler Web Debugger (AutoResponder tab)
//bots can be created in different rooms - so try restart the page if need
var totalBotCount = 0;
function game(h, r, bot, botUrl, botName) {
var window = h;
var canvas;
var botsUrl;
var botsCount = 15;
var botsCreated = false;
if(bot){
totalBotCount++;
botName = botName + "_b" + totalBotCount;
}
function init() {
if(bot){
console.log("bot - " + botName);
connectTo(botUrl);
setInterval(sendPosition, 100);
return;
}
//! bot
loadRegions();
setInterval(loadRegions, 18E4);
A = X = document.getElementById("canvas");
canvas = A;
d = canvas.getContext("2d");
canvas.onmousedown = function(a) {
if (fa) {
var b = a.clientX - (5 + k / 5 / 2), c = a.clientY - (5 + k / 5 / 2);
if (Math.sqrt(b * b + c * c) <= k / 5 / 2) {
sendPosition();
sendCommand(17);
return
}
}
O = a.clientX;
P = a.clientY;
Y();
sendPosition()
};
canvas.onmousemove = function(e) {
O = e.clientX;
P = e.clientY;
Y()
};
canvas.onmouseup = function() {};
var a = !1, b = !1, c = !1;
if(!bot) window.onkeydown = function(e) {
32 != e.keyCode || a || (sendPosition(), sendCommand(17), a = !0);
81 != e.keyCode || b || (sendCommand(18), b = !0);
87 != e.keyCode || c || (sendPosition(), sendCommand(21), c = !0);
27 == e.keyCode && r("#overlays").fadeIn(200)
};
if(!bot) window.onkeyup = function(e) {
32 == e.keyCode && (a = !1);
87 == e.keyCode && (c = !1);
81 == e.keyCode && b && (sendCommand(19), b = !1)
};
if(!bot) window.onblur = function() {
sendCommand(19);
c = b = a = !1
};
h.onresize = ga;
ga();
window.requestAnimationFrame ? window.requestAnimationFrame(ha) : setInterval(Z, 1E3 / 60);
setInterval(sendPosition, 100);
ia(r("#region").val())
}
function va() {
if (.5 > g)
G = null;
else {
for (var a = Number.POSITIVE_INFINITY, b = Number.POSITIVE_INFINITY, c = Number.NEGATIVE_INFINITY, e = Number.NEGATIVE_INFINITY, d = 0, f = 0; f < p.length; f++)
p[f].shouldRender() && (d = Math.max(p[f].size, d), a = Math.min(p[f].x, a), b = Math.min(p[f].y, b), c = Math.max(p[f].x, c), e = Math.max(p[f].y, e));
G = QUAD.init({minX: a - (d + 100),minY: b - (d + 100),maxX: c + (d + 100),maxY: e + (d + 100)});
for (f = 0; f < p.length; f++)
if (a = p[f], a.shouldRender())
for (b = 0; b < a.points.length; ++b)
G.insert(a.points[b])
}
}
function Y() {
Q = (O - k / 2) / g + s;
R = (P - q / 2) / g + t
}
function loadRegions() {
null == S && (S = {}, r("#region").children().each(function() {
var a = r(this), b = a.val();
b && (S[b] = a.text())
}));
r.get("http://m.agar.io/info", function(a) {
for (var b in a.regions)
r('#region option[value="' +
b + '"]').text(S[b] + " (" + a.regions[b].numPlayers + " players)")
}, "json")
}
function hideMenu() {
if(bot) return;
r("#adsBottom").hide();
r("#overlays").hide()
//autoRestart = true;
}
function ia(a) {
a && a != $ && ($ = a, ka())
}
function la() {
r.ajax("http://m.agar.io/",
{
error: function() {
setTimeout(la, 1E3)
},
success: function(a) {
a = a.split("\n");
connectTo("ws://" + a[0])
},
dataType: "text",
method: "POST",
cache: false,
crossDomain: !0,
data: $ || "?"})
}
function ka() {
if(!bot) r("#connecting").show();
la()
}
function connectTo(url) {
l && (l.onopen = null, l.onmessage = null, l.onclose = null, l.close(), l = null);
C = [];
m = [];
w = {};
p = [];
D = [];
u = [];
console.log("Connecting to " + url);
l = new WebSocket(url);
l.binaryType = "arraybuffer";
l.onopen = function(){
onConnected(url)
};
l.onmessage = xa;
l.onclose = ya;
l.onerror = function() {
console.log("socket error")
}
}
function onConnected(url) {
r("#connecting").hide();
console.log("socket open");
botsUrl = url;
var a = new ArrayBuffer(5);
var b = new DataView(a);
b.setUint8(0, 255);
b.setUint32(1, 1, !0);
l.send(a);
restartGame()
}
function ya(a) {
console.log("socket close");
setTimeout(ka, 500)
}
function xa(a) {
function b() {
for (var a = ""; ; ) {
var b = e.getUint16(c, !0);
c += 2;
if (0 == b)
break;
a += String.fromCharCode(b)
}
return a
}
var c = 1, e = new DataView(a.data);
switch (e.getUint8(0)) {
case 16:
za(e);
break;
case 17:
x = e.getFloat64(1, !0);
y = e.getFloat64(9, !0);
H = e.getFloat64(17, !0);
break;
case 20:
m = [];
C = [];
break;
case 32:
C.push(e.getUint32(1, !0));
break;
case 48:
for (u = []; c < e.byteLength; )
u.push({id: 0,name: b()});
oa();
break;
case 49:
a = e.getUint32(c, !0);
c += 4;
u = [];
for (var d = 0; d < a; ++d) {
var f = e.getUint32(c, !0), c = c + 4;
u.push({id: f,name: b()})
}
oa();
break;
case 64:
I = e.getFloat64(1, !0), J = e.getFloat64(9, !0), K = e.getFloat64(17, !0), L = e.getFloat64(25, !0), x = (K + I) / 2, y = (L + J) / 2, H = 1, 0 == m.length && (s = x, t = y, g = H)
}
}
function za(a) {
E = +new Date;
var b = Math.random(), c = 1;
aa = !1;
for (var e = a.getUint16(c, !0), c = c + 2, d = 0; d < e; ++d) {
var f = w[a.getUint32(c, !0)], g = w[a.getUint32(c + 4, !0)], c = c + 8;
f && g && (g.destroy(), g.ox = g.x, g.oy = g.y, g.oSize = g.size, g.nx = f.x, g.ny = f.y, g.nSize = g.size, g.updateTime = E)
}
for (; ; ) {
e = a.getUint32(c, !0);
c += 4;
if (0 == e)
break;
d = a.getFloat64(c, !0);
c += 8;
f = a.getFloat64(c, !0);
c += 8;
g = a.getFloat64(c, !0);
c += 8;
a.getUint8(c++);
for (var h = a.getUint8(c++), l = a.getUint8(c++), k =
a.getUint8(c++), h = (h << 16 | l << 8 | k).toString(16); 6 > h.length; )
h = "0" + h;
h = "#" + h;
k = a.getUint8(c++);
l = !!(k & 1);
k & 2 && (c += 4);
k & 4 && (c += 8);
k & 8 && (c += 16);
for (k = ""; ; ) {
var n = a.getUint16(c, !0), c = c + 2;
if (0 == n)
break;
k += String.fromCharCode(n)
}
n = null;
w.hasOwnProperty(e) ? (n = w[e], n.updatePos(), n.ox = n.x, n.oy = n.y, n.oSize = n.size, n.color = h) : (n = new pa(e, d, f, g, h, l, k), n.pX = d, n.pY = f);
n.nx = d;
n.ny = f;
n.nSize = g;
n.updateCode = b;
n.updateTime = E;
-1 != C.indexOf(e) && -1 == m.indexOf(n) && (document.getElementById("overlays").style.display = "none", m.push(n), 1 == m.length && (s = n.x, t = n.y))
}
a.getUint16(c, !0);
c += 2;
f = a.getUint32(c, !0);
c += 4;
for (d = 0; d < f; d++)
e = a.getUint32(c, !0), c += 4, w[e] && (w[e].updateCode = b);
for (d = 0; d < p.length; d++)
p[d].updateCode != b && p[d--].destroy();
aa && 0 == m.length
&& showOverlays()
}
function showOverlays(){
if(! bot)
r("#overlays").fadeIn(3E3);
else
restartGame();
}
function sendPosition() {
if (null != l && l.readyState == l.OPEN) {
var a = O - k / 2, b = P - q / 2;
64 > a * a + b * b || qa == Q && ra == R;
qa = Q;
ra = R;
var x = Q;
var y = R;
if(!bot){
clientX = x;
clientY = y;
} else {
x = clientX;
y = clientY;
}
a = new ArrayBuffer(21);
b = new DataView(a);
b.setUint8(0, 16);
b.setFloat64(1, x, !0);
b.setFloat64(9, y, !0);
b.setUint32(17, 0, !0);
//if(bot) console.log("X="+x+", Y="+y);
l.send(a);
}
}
function restartGame() {
if (null != l && l.readyState == l.OPEN && null != M) {
var a = new ArrayBuffer(1 + 2 * M.length), b = new DataView(a);
b.setUint8(0, 0);
for (var c = 0; c < M.length; ++c)
b.setUint16(1 + 2 * c, M.charCodeAt(c), !0);
l.send(a)
}
}
function sendCommand(a) {
if (null != l && l.readyState == l.OPEN) {
var b = new ArrayBuffer(1);
(new DataView(b)).setUint8(0, a);
l.send(b)
}
}
function ha() {
Z();
h.requestAnimationFrame(ha)
}
function ga() {
k = h.innerWidth;
q = h.innerHeight;
X.width = A.width = k;
X.height = A.height = q;
Z()
}
function Aa() {
if (0 != m.length) {
for (var a = 0, b = 0; b < m.length; b++)
a += m[b].size;
a = Math.pow(Math.min(64 / a, 1), .4) * Math.max(q / 1080, k / 1920);
g = (9 * g + a) / 10
}
}
function Z() {
if(bot) return;
var g = 0.5;
var a = +new Date;
++Ba;
E = +new Date;
if (0 < m.length) {
Aa();
for (var b = 0, c = 0, e = 0; e < m.length; e++)
m[e].updatePos(), b += m[e].x / m.length, c += m[e].y / m.length;
x = b;
y = c;
H = g;
s = (s + b) / 2;
t = (t + c) / 2
} else
x > K - (k / 2 - 100) / g && (x = K - (k / 2 - 100) / g), y > L - (q / 2 - 100) / g && (y = L - (q / 2 - 100) / g), x < I + (k / 2 - 100) / g && (x = (I + k / 2 - 100) / g), y < J + (q / 2 - 100) / g && (y = (J + q / 2 - 100) / g), s = (29 * s + x) / 30, t = (29 * t + y) / 30, g = (9 * g + H) / 10;
va();
Y();
d.clearRect(0, 0, k, q);
d.fillStyle = ba ? "#111111" : "#F2FBFF";
d.fillRect(0, 0, k, q);
d.save();
d.strokeStyle = ba ? "#AAAAAA" : "#000000";
d.globalAlpha = .2;
d.scale(g, g);
b = k / g;
c = q / g;
for (e = -.5 + (-s + b / 2) % 50; e < b; e += 50)
d.beginPath(), d.moveTo(e, 0), d.lineTo(e, c), d.stroke();
for (e = -.5 + (-t + c / 2) % 50; e < c; e += 50)
d.beginPath(), d.moveTo(0, e), d.lineTo(b, e), d.stroke();
d.restore();
p.sort(function(a, b) {
return a.size == b.size ? a.id - b.id : a.size - b.size
});
d.save();
d.translate(k / 2, q / 2);
d.scale(g, g);
d.translate(-s, -t);
for (e = 0; e < D.length; e++)
D[e].draw();
for (e = 0; e < p.length; e++)
p[e].draw();
d.restore();
z && 0 != u.length && d.drawImage(z, k - z.width - 10, 10);
N = Math.max(N, Ca());
0 != N && (null == T && (T = new U(24, "#FFFFFF")), T.setValue("Score: " + ~~(N / 100)), c = T.render(), b = c.width, d.globalAlpha = .2, d.fillStyle = "#000000", d.fillRect(10, q - 10 - 24 - 10, b + 10, 34), d.globalAlpha = 1, d.drawImage(c, 15, q - 10 - 24 - 5));
Da();
a = +new Date - a;
a > 1E3 / 60 ? v -= .01 : a < 1E3 / 65 && (v += .01);
.4 > v && (v = .4);
1 < v && (v = 1)
}
function Da() {
if (fa && ca.width) {
var a = k / 5;
d.drawImage(ca, 5, 5, a, a)
}
}
function Ca() {
for (var a = 0, b = 0; b < m.length; b++)
a += m[b].nSize * m[b].nSize;
return a
}
function oa() {
if(bot) return;
if (0 != u.length)
if (V) {
z = document.createElement("canvas");
var a = z.getContext("2d"), b = 60 + 24 * u.length, c = Math.min(200, .3 * k) / 200;
z.width = 200 * c;
z.height = b * c;
a.scale(c, c);
a.globalAlpha = .4;
a.fillStyle = "#000000";
a.fillRect(0, 0, 200, b);
a.globalAlpha = 1;
a.fillStyle = "#FFFFFF";
c = null;
c = "Leaderboard";
a.font = "30px Ubuntu";
a.fillText(c, 100 - a.measureText(c).width / 2, 40);
a.font = "20px Ubuntu";
for (b = 0; b < u.length; ++b)
c = u[b].name || "An unnamed cell", V || (c = "An unnamed cell"), -1 != C.indexOf(u[b].id) ? (m[0].name &&
(c = m[0].name), a.fillStyle = "#FFAAAA") : a.fillStyle = "#FFFFFF", c = b + 1 + ". " + c, a.fillText(c, 100 - a.measureText(c).width / 2, 70 + 24 * b)
} else
z = null
}
function pa(a, b, c, e, d, f, g) {
p.push(this);
w[a] = this;
this.id = a;
this.ox = this.x = b;
this.oy = this.y = c;
this.oSize = this.size = e;
this.color = d;
this.isVirus = f;
this.points = [];
this.pointsAcc = [];
this.createPoints();
this.setName(g)
}
function U(a, b, c, e) {
a && (this._size = a);
b && (this._color = b);
this._stroke = !!c;
e && (this._strokeColor = e)
}
var X, d, A, k, q, G = null, l = null, s = 0, t = 0, C = [], m = [], w = {}, p = [], D = [], u = [], O = 0, P = 0, Q = -1, R = -1, Ba = 0, E = 0, M = null, I = 0, J = 0, K = 1E4, L = 1E4, g = 1, $ = null, sa = !0, V = !0, da = !1, aa = !1, N = 0, ba = !1, ta = !1, x = 0, y = 0, H = 1, fa = "ontouchstart" in h && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), ca = new Image;
ca.src = "img/split.png";
var S = null;
if(!bot) h.setNick = function(a) {
hideMenu();
M = a;
restartGame();
N = 0
if( !bot && ! botsCreated){
console.log("create bots...");
botsCreated = true;
for (i = 0; i < botsCount; i++) {
//нужно делать паузу перед новым ботом,
//чтобы сервер не отклонил слишком частые соединения
setTimeout(function(){
game(window, r, true, botsUrl, M);
}, 500);
}
}
};
else {
M = botName;
}
if(!bot) h.setRegion = ia;
if(!bot) h.setSkins = function(a) {
sa = a
};
if(!bot) h.setNames = function(a) {
V = a
};
if(!bot) h.setDarkTheme = function(a) {
ba = a
};
if(!bot) h.setColors = function(a) {
da = a
};
if(!bot) h.setShowMass = function(a) {
ta = a
};
if(!bot) h.spectate = function() {
sendCommand(1);
hideMenu()
};
if(!bot) h.connect = loadRegions;
var qa = -1, ra = -1, z = null, v = 1, T = null, W = {}, Ea = "poland;usa;china;russia;canada;australia;spain;brazil;germany;ukraine;france;sweden;hitler;north korea;south korea;japan;united kingdom;earth;greece;latvia;lithuania;estonia;finland;norway;cia;maldivas;austria;nigeria;reddit;yaranaika;confederate;9gag;indiana;4chan;italy;ussr;pewdiepie;bulgaria;tumblr;2ch.hk;hong kong;portugal;jamaica;german empire;mexico;sanik;switzerland;croatia;chile;indonesia;bangladesh;thailand;iran;iraq;peru;moon;botswana;bosnia;netherlands;european union;taiwan;pakistan;hungary;satanist;qing dynasty;nazi;matriarchy;patriarchy;feminism;ireland;texas;facepunch;prodota;cambodia;steam;piccolo;ea;india;kc;denmark;quebec;ayy lmao;sealand;bait;tsarist russia;origin;vinesauce;stalin;belgium;luxembourg;stussy;prussia;8ch;argentina;scotland;sir;romania;belarus;wojak;isis;doge".split(";"), Fa = ["m'blob"];
pa.prototype = {id: 0,points: null,pointsAcc: null,name: null,nameCache: null,sizeCache: null,x: 0,y: 0,size: 0,ox: 0,oy: 0,oSize: 0,nx: 0,ny: 0,nSize: 0,updateTime: 0,updateCode: 0,drawTime: 0,destroyed: !1,isVirus: !1,destroy: function() {
var a;
for (a = 0; a < p.length; a++)
if (p[a] == this) {
p.splice(a, 1);
break
}
delete w[this.id];
a = m.indexOf(this);
-1 != a && (aa = !0, m.splice(a, 1));
a = C.indexOf(this.id);
-1 != a && C.splice(a, 1);
this.destroyed = !0;
D.push(this)
},getNameSize: function() {
return Math.max(~~(.3 * this.size), 24)
},setName: function(a) {
if (this.name = a)
null == this.nameCache ? this.nameCache = new U(this.getNameSize(), "#FFFFFF", !0, "#000000") : this.nameCache.setSize(this.getNameSize()), this.nameCache.setValue(this.name)
},createPoints: function() {
for (var a = this.getNumPoints(); this.points.length > a; ) {
var b = ~~(Math.random() * this.points.length);
this.points.splice(b, 1);
this.pointsAcc.splice(b, 1)
}
0 == this.points.length && 0 < a && (this.points.push({c: this,v: this.size,x: this.x,y: this.y}), this.pointsAcc.push(Math.random() - .5));
for (; this.points.length < a; ) {
var b = ~~(Math.random() * this.points.length), c = this.points[b];
this.points.splice(b, 0, {c: this,v: c.v,x: c.x,y: c.y});
this.pointsAcc.splice(b, 0, this.pointsAcc[b])
}
},getNumPoints: function() {
var a = 10;
20 > this.size && (a = 5);
this.isVirus && (a = 30);
return ~~Math.max(this.size * g * (this.isVirus ? Math.min(2 * v, 1) : v), a)
},movePoints: function() {
this.createPoints();
for (var a = this.points, b = this.pointsAcc, c = b.concat(), e = a.concat(), d = e.length, f = 0; f < d; ++f) {
var g = c[(f - 1 + d) % d], h = c[(f + 1) % d];
b[f] += Math.random() - .5;
b[f] *= .7;
10 < b[f] && (b[f] = 10);
-10 > b[f] && (b[f] = -10);
b[f] = (g + h + 8 * b[f]) / 10
}
for (var k = this, f = 0; f < d; ++f) {
c = e[f].v;
g = e[(f - 1 + d) % d].v;
h = e[(f + 1) % d].v;
if (15 < this.size && null != G) {
var l = !1, n = a[f].x, m = a[f].y;
G.retrieve2(n - 5, m - 5, 10, 10, function(a) {
a.c != k && 25 > (n - a.x) * (n - a.x) + (m - a.y) * (m - a.y) && (l = !0)
});
!l && (a[f].x < I || a[f].y < J || a[f].x > K || a[f].y > L) && (l = !0);
l && (0 < b[f] && (b[f] = 0), b[f] -= 1)
}
c += b[f];
0 > c && (c = 0);
c = (12 * c + this.size) / 13;
a[f].v = (g + h + 8 * c) / 10;
g = 2 * Math.PI / d;
h = this.points[f].v;
this.isVirus && 0 == f % 2 && (h += 5);
a[f].x = this.x + Math.cos(g * f) * h;
a[f].y = this.y + Math.sin(g * f) *
h
}
},updatePos: function() {
var a;
a = (E - this.updateTime) / 120;
a = 0 > a ? 0 : 1 < a ? 1 : a;
a = a * a * (3 - 2 * a);
this.getNameSize();
if (this.destroyed && 1 <= a) {
var b = D.indexOf(this);
-1 != b && D.splice(b, 1)
}
this.x = a * (this.nx - this.ox) + this.ox;
this.y = a * (this.ny - this.oy) + this.oy;
this.size = a * (this.nSize - this.oSize) + this.oSize;
return a
},shouldRender: function() {
return this.x + this.size + 40 < s - k / 2 / g || this.y + this.size + 40 < t - q / 2 / g || this.x - this.size - 40 > s + k / 2 / g || this.y - this.size - 40 > t + q / 2 / g ? !1 : !0
},draw: function() {
if (this.shouldRender()) {
var a = !this.isVirus &&
.5 > g;
d.save();
this.drawTime = E;
var b = this.updatePos();
this.destroyed && (d.globalAlpha *= 1 - b);
d.lineWidth = 10;
d.lineCap = "round";
d.lineJoin = this.isVirus ? "mitter" : "round";
da ? (d.fillStyle = "#FFFFFF", d.strokeStyle = "#AAAAAA") : (d.fillStyle = this.color, d.strokeStyle = this.color);
if (a)
d.beginPath(), d.arc(this.x, this.y, this.size, 0, 2 * Math.PI, !1);
else
for (this.movePoints(), d.beginPath(), a = this.getNumPoints(), d.moveTo(this.points[0].x, this.points[0].y), b = 1; b <= a; ++b) {
var c = b % a;
d.lineTo(this.points[c].x, this.points[c].y)
}
d.closePath();
a = this.name.toLowerCase();
sa ? -1 != Ea.indexOf(a) ? (W.hasOwnProperty(a) || (W[a] = new Image, W[a].src = "skins/" + a + ".png"), b = W[a]) : b = null : b = null;
a = b ? -1 != Fa.indexOf(a) : !1;
d.stroke();
d.fill();
null != b && 0 < b.width && !a && (d.save(), d.clip(), d.drawImage(b, this.x - this.size, this.y - this.size, 2 * this.size, 2 * this.size), d.restore());
if (da || 15 < this.size)
d.strokeStyle = "#000000", d.globalAlpha *= .1, d.stroke();
d.globalAlpha = 1;
null != b && 0 < b.width && a && d.drawImage(b, this.x - 2 * this.size, this.y - 2 * this.size, 4 * this.size, 4 * this.size);
b = -1 != m.indexOf(this);
a = ~~this.y;
if ((V || b) && this.name && this.nameCache) {
var e = this.nameCache;
e.setValue(this.name);
e.setSize(this.getNameSize());
c = Math.ceil(10 * g) / 10;
e.setScale(c);
var e = e.render(), h = ~~(e.width / c), c = ~~(e.height / c);
d.drawImage(e, ~~this.x - ~~(h / 2), a - ~~(c / 2), h, c);
a += e.height / 2 + 4
}
ta && b && (null == this.sizeCache && (this.sizeCache = new U(this.getNameSize() / 2, "#FFFFFF", !0, "#000000")), b = this.sizeCache, b.setSize(this.getNameSize() / 2), b.setValue(~~(this.size * this.size / 100)), c = Math.ceil(10 * g) / 10, b.setScale(c),
e = b.render(), h = ~~(e.width / c), c = ~~(e.height / c), d.drawImage(e, ~~this.x - ~~(h / 2), a - ~~(c / 2), h, c));
d.restore()
}
}};
U.prototype = {_value: "",_color: "#000000",_stroke: !1,_strokeColor: "#000000",_size: 16,_canvas: null,_ctx: null,_dirty: !1,_scale: 1,setSize: function(a) {
this._size != a && (this._size = a, this._dirty = !0)
},setScale: function(a) {
this._scale != a && (this._scale = a, this._dirty = !0)
},setColor: function(a) {
this._color != a && (this._color = a, this._dirty = !0)
},setStroke: function(a) {
this._stroke != a && (this._stroke = a, this._dirty = !0)
},setStrokeColor: function(a) {
this._strokeColor != a && (this._strokeColor = a, this._dirty = !0)
},setValue: function(a) {
a != this._value && (this._value = a, this._dirty = !0)
},render: function() {
null == this._canvas && (this._canvas = document.createElement("canvas"), this._ctx = this._canvas.getContext("2d"));
if (this._dirty) {
this._dirty = !1;
var a = this._canvas, b = this._ctx, c = this._value, d = this._scale, g = this._size, f = g + "px Ubuntu";
b.font = f;
var h = b.measureText(c).width, k = ~~(.2 * g);
a.width = (h + 6) * d;
a.height = (g + k) * d;
b.font = f;
b.scale(d, d);
b.globalAlpha = 1;
b.lineWidth = 3;
b.strokeStyle = this._strokeColor;
b.fillStyle = this._color;
this._stroke && b.strokeText(c, 3, g - k / 2);
b.fillText(c, 3, g - k / 2)
}
return this._canvas
}};
if(!bot) h.onload = init;
else init();
}
var playerX = 0;
var playerY = 0;
game(window, jQuery);
@v0van1981

This comment has been minimized.

Show comment Hide comment
@v0van1981

v0van1981 May 10, 2015

можно определять айпи текущего сервера и коннектить ботов к нему
connect(ws://айпи)

можно определять айпи текущего сервера и коннектить ботов к нему
connect(ws://айпи)

@edolganov

This comment has been minimized.

Show comment Hide comment
@edolganov

edolganov May 11, 2015

v0van1981, а разве в рамках одного ip не создаются много комнат игроков?
ведь я и так создаю ботов на тот же ip.
но они кидаются по разным игровым комнатам.

Owner

edolganov commented May 11, 2015

v0van1981, а разве в рамках одного ip не создаются много комнат игроков?
ведь я и так создаю ботов на тот же ip.
но они кидаются по разным игровым комнатам.

@LoneSimba

This comment has been minimized.

Show comment Hide comment
@LoneSimba

LoneSimba May 14, 2015

Кажется, для сегодняшней версии агара не пашет. Белый экран, либо экран без предложения начать игру.

Кажется, для сегодняшней версии агара не пашет. Белый экран, либо экран без предложения начать игру.

@andrew89898

This comment has been minimized.

Show comment Hide comment
@andrew89898

andrew89898 May 14, 2015

Hi, I am also getting a white screen. When we use your script do we have to add/change anything?
I have been trying to add variables botUrl etc but I am also getting DataView errors.
Thanks for your work.

Hi, I am also getting a white screen. When we use your script do we have to add/change anything?
I have been trying to add variables botUrl etc but I am also getting DataView errors.
Thanks for your work.

@dmitrychaban

This comment has been minimized.

Show comment Hide comment
@dmitrychaban

dmitrychaban May 15, 2015

i think agar.io's programmers already sow'n'fixed it

i think agar.io's programmers already sow'n'fixed it

@wiifit4

This comment has been minimized.

Show comment Hide comment
@wiifit4

wiifit4 Jun 1, 2015

Hi, could you plz tell me this stuff about this "hack"?:
it makes a lot of bots come directly at you so you eat them or it controls your blob so it eats and evades players
if its with bots that come directly at you could you tell how are they called?
thx

wiifit4 commented Jun 1, 2015

Hi, could you plz tell me this stuff about this "hack"?:
it makes a lot of bots come directly at you so you eat them or it controls your blob so it eats and evades players
if its with bots that come directly at you could you tell how are they called?
thx

@wiifit4

This comment has been minimized.

Show comment Hide comment
@wiifit4

wiifit4 Jun 1, 2015

ok. i just got it to work, i dont get white but i get the grid, but nothing more, i noted that in fiddler when i use the "hack" when the bunch of requests get to main_out.js it does replace it n all but then it doesnt continue with all the other requests

wiifit4 commented Jun 1, 2015

ok. i just got it to work, i dont get white but i get the grid, but nothing more, i noted that in fiddler when i use the "hack" when the bunch of requests get to main_out.js it does replace it n all but then it doesnt continue with all the other requests

@SumJest

This comment has been minimized.

Show comment Hide comment
@SumJest

SumJest Jul 8, 2015

Есть видео гайд. Если честно, нечего не понял.

SumJest commented Jul 8, 2015

Есть видео гайд. Если честно, нечего не понял.

@Z1RkA

This comment has been minimized.

Show comment Hide comment
@Z1RkA

Z1RkA Aug 23, 2015

как скачать и включить бота

Z1RkA commented Aug 23, 2015

как скачать и включить бота

@weakwizard

This comment has been minimized.

Show comment Hide comment
@weakwizard

weakwizard Sep 17, 2015

agar.io doesnt call main_out.js anymore it's changed

agar.io doesnt call main_out.js anymore it's changed

@elah02

This comment has been minimized.

Show comment Hide comment
@elah02

elah02 Oct 9, 2015

бл как установить?

elah02 commented Oct 9, 2015

бл как установить?

@Howtohelp

This comment has been minimized.

Show comment Hide comment
@Howtohelp

Howtohelp Oct 10, 2015

Where do I put this script, and how do I get it to work????

Where do I put this script, and how do I get it to work????

@Enderbel

This comment has been minimized.

Show comment Hide comment
@Enderbel

Enderbel Oct 18, 2015

edolganov Свяжись со мной в скайпе ytrioq бот можно переделать и зделать так чтобы работал
Будем этим заниматься в месте.
Есть небольшие разработки которые (слабенько) работают

edolganov Свяжись со мной в скайпе ytrioq бот можно переделать и зделать так чтобы работал
Будем этим заниматься в месте.
Есть небольшие разработки которые (слабенько) работают

@KingSuperior1YT

This comment has been minimized.

Show comment Hide comment
@KingSuperior1YT

KingSuperior1YT Feb 28, 2016

Hoe do u download this?

Hoe do u download this?

@1111111yt

This comment has been minimized.

Show comment Hide comment
@1111111yt

1111111yt May 19, 2016

How do the bots work?

How do the bots work?

@merlinmykitten

This comment has been minimized.

Show comment Hide comment
@merlinmykitten

merlinmykitten Jul 20, 2016

hi

@YYYYYYYYYYYYYYY

This comment has been minimized.

Show comment Hide comment
@YYYYYYYYYYYYYYY

YYYYYYYYYYYYYYY Sep 29, 2016

HI how can bots work

HI how can bots work

@ruslan2008

This comment has been minimized.

Show comment Hide comment
@ruslan2008

ruslan2008 Mar 4, 2017

почему не работает

почему не работает

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment