Slither.io auto play bot

auto play bot for slither.io

  1. // ==UserScript==
  2. // @name Slither.io auto play bot
  3. // @include http://slither.com/io
  4. // @author huesos315
  5. // @description auto play bot for slither.io
  6. // @namespace http://tampermonkey.net/
  7. // @version 0.1
  8. // @match *://Slither.com/io*
  9. // ==/UserScript==
  10.  
  11. var el = document.getElementsByTagName('iframe');
  12.  
  13. for (var i = 0; i < el.length; i++) {
  14. var currentEl = el[i];
  15. currentEl.remove();
  16. }
  17.  
  18. document.getElementById('logo').remove();
  19. document.getElementById('tips').remove();
  20. document.getElementById('fb').remove();
  21. document.getElementById('twth').remove();
  22.  
  23.  
  24. if (window.top != window.self)
  25.  
  26. REALSCORE = 10;
  27. REALDNA = [1,1,1,1,1,1,1,1,1,1,1,1];
  28.  
  29. BESTRANK = 1000;
  30. BESTSCORE = 1;
  31.  
  32. printbot = function() {
  33. console.log("Dumping bot data:\nREALDNA = " + JSON.stringify(REALDNA) + ";\nREALSCORE = " + REALSCORE + ";\nBESTRANK = " + BESTRANK + ";\nBESTSCORE = " + BESTSCORE + ";");
  34. }
  35.  
  36. savedna = function() {
  37. if(typeof(Storage) !== "undefined") {
  38. localStorage["REALSCORE"] = REALSCORE;
  39. localStorage["REALDNA"] = JSON.stringify(REALDNA);
  40. localStorage["BESTRANK"] = BESTRANK;
  41. localStorage["BESTSCORE"] = BESTSCORE;
  42. }
  43. }
  44.  
  45. cleardna = function() {
  46. localStorage.removeItem("REALSCORE");
  47. localStorage.removeItem("REALDNA");
  48. localStorage.removeItem("BESTRANK");
  49. localStorage.removeItem("BESTSCORE");
  50. REALSCORE = 30;
  51. BESTRANK = 1000;
  52. var distavoid = 90;
  53. var preykerroin = 5;
  54. var viholliskerroin = 544;
  55. var vaarakerroin = 200;
  56. var chargedistance = 500;
  57. var pakoondistance = 70;
  58. var keskikerroin = 2.0;
  59. var keskihakukerroin = 0.1;
  60.  
  61. REALDNA = [distavoid,preykerroin,viholliskerroin,vaarakerroin,chargedistance,pakoondistance,keskikerroin,keskihakukerroin];
  62. TESTDNA = REALDNA.slice();
  63. TESTSCORE = REALSCORE;
  64. testingdna = 1;
  65. DNA = REALDNA.slice();
  66. savedna();
  67. }
  68.  
  69. if(typeof(Storage) !== "undefined") {
  70. // Code for localStorage/sessionStorage.
  71. if (!localStorage.REALSCORE || !localStorage.REALDNA || !localStorage.BESTRANK || !localStorage.BESTSCORE) {
  72. cleardna();
  73. }
  74. else
  75. {
  76. REALSCORE = localStorage["REALSCORE"]*1;
  77. REALDNA = JSON.parse(localStorage["REALDNA"]);
  78. BESTRANK = localStorage["BESTRANK"]*1;
  79. BESTSCORE = localStorage["BESTSCORE"]*1;
  80. }
  81. } else {
  82. // Sorry! No Web Storage support..
  83. }
  84.  
  85.  
  86. TESTDNA = REALDNA.slice();
  87. TESTSCORE = REALSCORE;
  88.  
  89. testingdna = 1;
  90. DNA = REALDNA.slice();
  91.  
  92. var injected_dead = true;
  93.  
  94. var lastscore = 0;
  95. var bestscore = 0;
  96.  
  97. var lastrank = 0;
  98. var bestrank = 1000;
  99. var uhka = false;
  100.  
  101.  
  102. var ruokakerroin = 1/40;
  103. var ruokapower = 1;
  104. var vihollispower = 2;
  105. var vaarapower = 2;
  106. var preypower = 1;
  107. var keskipower = 1;
  108.  
  109.  
  110. var preychase = true;
  111.  
  112. var learnrate = 0.3;
  113. var precision = 100;
  114.  
  115.  
  116. INJECTED = function() {
  117. var kerroin = 10000;
  118. if (animating) {
  119. if (snake) {
  120. accelerate = false;
  121. injected_dead = false;
  122. //xm = grd-snake.xx;
  123. //ym = grd-snake.yy;
  124. xt = 0;
  125. yt = 0;
  126. mindist = grd;
  127. for (var i = 0; i < preys.length; i++) {
  128. xtd = (preys[i].xx-snake.xx);
  129. ytd = (preys[i].yy-snake.yy);
  130. dist = Math.sqrt(xtd*xtd + ytd*ytd);
  131. xt += xtd/Math.pow(dist,preypower+1)*DNA[1];
  132. yt += ytd/Math.pow(dist,preypower+1)*DNA[1];
  133. if (dist < DNA[4] && preychase)
  134. {
  135. accelerate = true;
  136. }
  137. }
  138.  
  139. uhka = false;
  140. for (var i = 0; i < snakes.length; i++) {
  141. //alert(myStringArray[i]);
  142. target = snakes[i];
  143. if (snake.id!=target.id)
  144. {
  145. xtd = (target.xx-snake.xx);
  146. ytd = (target.yy-snake.yy);
  147. dist = Math.sqrt(xtd*xtd + ytd*ytd)-DNA[0];
  148. dist = Math.max(1, dist);
  149. xt += -xtd/Math.pow(dist,vihollispower+1)*DNA[2];
  150. yt += -ytd/Math.pow(dist,vihollispower+1)*DNA[2];
  151. if (dist < DNA[5])
  152. {
  153. accelerate = true;
  154. }
  155. if (dist<mindist)
  156. {
  157. uhka = target;
  158. mindist = dist;
  159. /*if (mindist<300)
  160. {
  161. accelerate = true;
  162. }*/
  163. }
  164. parts = target.pts;
  165. for (var k = 0; k < parts.length; k++)
  166. {
  167. part = parts[k];
  168. xtd = (part.xx-snake.xx);
  169. ytd = (part.yy-snake.yy);
  170. dist = Math.sqrt(xtd*xtd + ytd*ytd)-DNA[0];
  171. dist = Math.max(1, dist);
  172. xt += -xtd/Math.pow(dist,vaarapower+1)*DNA[3];
  173. yt += -ytd/Math.pow(dist,vaarapower+1)*DNA[3];
  174. }
  175. }
  176. }
  177. if (!(preychase && preys.length>0))
  178. {
  179. for (var i = 0; i < foods_c; i++) {
  180. //alert(myStringArray[i]);
  181. xtd = (foods[i].xx-snake.xx);
  182. ytd = (foods[i].yy-snake.yy);
  183. dist = Math.sqrt(xtd*xtd + ytd*ytd);
  184. //xt += Math.pow(ruokakerroin*foods[i].fw,2)*xtd/Math.pow(dist,ruokapower+1);
  185. //yt += Math.pow(ruokakerroin*foods[i].fw,2)*ytd/Math.pow(dist,ruokapower+1);
  186. xt += Math.pow(foods[i].gr,2)*xtd/Math.pow(dist,ruokapower+1);
  187. yt += Math.pow(foods[i].gr,2)*ytd/Math.pow(dist,ruokapower+1);
  188. }
  189. xtd = (grd-snake.xx);
  190. ytd = (grd-snake.yy);
  191. dist = Math.sqrt(xtd*xtd + ytd*ytd);
  192. xt += xtd/Math.pow(grd-dist,keskipower+1)*DNA[6];
  193. yt += ytd/Math.pow(grd-dist,keskipower+1)*DNA[6];
  194. xt += xtd/grd*DNA[7];
  195. yt += ytd/grd*DNA[7];
  196. }
  197. xm = xt*kerroin;
  198. ym = yt*kerroin;
  199. lsxm = -xm;
  200. lsym = -ym;
  201. if (accelerate)
  202. {
  203. setAcceleration(1);
  204. }
  205. else
  206. {
  207. setAcceleration(0);
  208. }
  209. //console.log("xx:" + view_xx + "yy:" + view_yy);
  210. //console.log("snake.xx:" + snake.xx + "snake.yy:" + snake.yy);
  211. //console.log("snake.fx:" + snake.fx + "snake.fy:" + snake.fy);
  212. //console.log("fvx:" + fvx + "fvy:" + fvy);
  213. //console.log("");
  214. //console.log("foods_c:" + foods_c);
  215. //console.log("snakes.length:" + snakes.length);
  216. //console.log("D:" + Math.sqrt(xm*xm + ym*ym));
  217. lastscore = Math.floor(150 * (fpsls[snake.sct] + snake.fam / fmlts[snake.sct] - 1) - 50) / 10;
  218. if (!lastscore)
  219. {
  220. lastscore = 1;
  221. }
  222. lastrank = rank;
  223. if (!lastrank)
  224. {
  225. lastrank = 500;
  226. }
  227. }
  228. else
  229. {
  230. if (!injected_dead)
  231. {
  232. injected_dead = true;
  233. if (lastscore>bestscore)
  234. {
  235. console.log("Last score: " + lastscore + "(new best)");
  236. bestscore = lastscore;
  237. BESTSCORE = bestscore;
  238. }
  239. else
  240. {
  241. console.log("Last score: " + lastscore + " Best: " + bestscore);
  242. }
  243. if (lastrank<bestrank)
  244. {
  245. console.log("Last rank: " + lastrank + "(new best)");
  246. bestrank = lastrank;
  247. BESTRANK = bestrank;
  248. }
  249. else
  250. {
  251. console.log("Last rank: " + lastrank + " Best: " + bestrank);
  252. }
  253. if (testingdna>0)
  254. {
  255. TESTSCORE = lastscore/(lastrank+1);
  256.  
  257. }
  258. else
  259. {
  260. REALSCORE = (REALSCORE+lastscore/lastrank)/2;
  261. }
  262. lastscore = 0;
  263.  
  264. for (var key in DNA)
  265. {
  266. if (TESTSCORE > REALSCORE)
  267. {
  268. var mul = TESTSCORE/REALSCORE
  269. REALDNA[key] = (REALDNA[key] + TESTDNA[key]*mul)/(1+mul);
  270. REALDNA[key] = Math.round(REALDNA[key]*precision)/precision;
  271. }
  272.  
  273. if (testingdna<0)
  274. {
  275. TESTDNA[key] = REALDNA[key] + REALDNA[key]*(Math.random() - Math.random())*learnrate;
  276. TESTDNA[key] = Math.round(TESTDNA[key]*precision)/precision;
  277. }
  278. }
  279. savedna();
  280.  
  281. testingdna = -testingdna;
  282.  
  283. if (testingdna>0)
  284. {
  285. DNA = TESTDNA.slice();
  286. }
  287. else
  288. {
  289. DNA = REALDNA.slice();
  290. }
  291. //console.log("DNA = [" + DNA + "];");
  292. setTimeout(connect, 3000);
  293. //console.log("Reconnecting");
  294. }
  295. }
  296. }
  297. }
  298.  
  299. var injectbot = function() {
  300. if (typeof(redraw) != "undefined")
  301. {
  302. oldredraw = redraw;
  303.  
  304. redraw = function() {
  305. INJECTED();
  306. oldredraw();
  307. }
  308. console.log("injected")
  309. window.onmousemove = null;
  310. }
  311. else
  312. {
  313. setTimeout(injectbot, 1000);
  314. console.log("retrying")
  315. }
  316. }
  317. injectbot();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址