Advertisement
FlyFar

SLITHER.IO AUTO PLAY BOT

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