SHARE
TWEET

Untitled

a guest May 20th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         SLITio by szymy
  3. // @namespace    slitio.szymy
  4. // @version      0.1.15
  5. // @description  slither.io MOD
  6. // @author       szymy
  7. // @match        http://slither.io/*
  8. // @updateURL    http://ogario.ovh/download/SLITio.user.js
  9. // @run-at       document-body
  10. // @grant        none
  11. // ==/UserScript==
  12.  
  13. // Tuto par Angealandco
  14. // https://www.youtube.com/channel/UCL3pzdKot76MG2qoeQgBr2A
  15. // https://www.twitch.tv/angealandco
  16.  
  17. // Source: http://ogario.ovh/download/SLITio.user.js
  18.  
  19. (function(w) {
  20.     var modVersion = "v0.1.15",
  21.         renderMode = 2, // 3 - normal, 2 - optimized, 1 - simple (mobile)
  22.         normalMode = false,
  23.         gameFPS = null,
  24.         positionHUD = null,
  25.         ipHUD = null,
  26.         fpsHUD = null,
  27.         styleHUD = "color: #FFF; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 14px; position: fixed; opacity: 0.35; z-index: 7;",
  28.         inpNick = null,
  29.         currentIP = null,
  30.         retry = 0,
  31.         bgImage = null;
  32.     function init() {
  33.         // Append DIVs
  34.         appendDiv("position-hud", "nsi", styleHUD + "right: 30; bottom: 120px;");
  35.         appendDiv("ip-hud", "nsi", styleHUD + "right: 30; bottom: 150px;");
  36.         appendDiv("fps-hud", "nsi", styleHUD + "right: 30; bottom: 170px;");
  37.         positionHUD = document.getElementById("position-hud");
  38.         ipHUD = document.getElementById("ip-hud");
  39.         fpsHUD = document.getElementById("fps-hud");
  40.         // Add zoom
  41.         if (/firefox/i.test(navigator.userAgent)) {
  42.             document.addEventListener("DOMMouseScroll", zoom, false);
  43.         } else {
  44.             document.body.onmousewheel = zoom;
  45.         }
  46.         // Quick resp (ESC)
  47.         w.onkeydown = function(e) {
  48.             if (e.keyCode == 27) {
  49.                 forceConnect();
  50.             }
  51.         }
  52.         // Hijack console log
  53.         /*
  54.         if (w.console) {
  55.             w.console.logOld = console.log;
  56.             w.console.log = getConsoleLog;
  57.         }
  58.         */
  59.         // Set menu
  60.         setMenu();
  61.         // Set leaderboard
  62.         setLeaderboard();
  63.         // Set graphics
  64.         setGraphics();
  65.         // Update loop
  66.         updateLoop();
  67.         // Show FPS
  68.         showFPS();
  69.     }
  70.     // Append DIV
  71.     function appendDiv(id, className, style) {
  72.         var div = document.createElement("div");
  73.         if (id) {
  74.             div.id = id;
  75.         }
  76.         if (className) {
  77.             div.className = className;
  78.         }
  79.         if (style) {
  80.             div.style = style;
  81.         }
  82.         document.body.appendChild(div);
  83.     }
  84.     // Zoom
  85.     function zoom(e) {
  86.         if (!w.gsc) {
  87.             return;
  88.         }
  89.         w.gsc *= Math.pow(0.9, e.wheelDelta / -120 || e.detail / 2 || 0);
  90.     }
  91.     // Get console log
  92.     function getConsoleLog(log) {
  93.         //w.console.logOld(log);
  94.         if (log.indexOf("FPS") != -1) {
  95.             gameFPS = log;
  96.         }
  97.     }
  98.     // Set menu
  99.     function setMenu() {
  100.         var login = document.getElementById("login");
  101.         if (login) {
  102.             // Load settings
  103.             loadSettings();
  104.             // Message
  105.             var div = document.createElement("div");
  106.             div.style.width = "300px";
  107.             div.style.color = "#FFF";
  108.             div.style.fontFamily = "'Lucida Sans Unicode', 'Lucida Grande', sans-serif";
  109.             div.style.fontSize = "14px";
  110.             div.style.textAlign = "center";
  111.             div.style.opacity = "0.5";
  112.             div.style.margin = "0 auto";
  113.             div.style.padding = "10px 0";
  114.             div.textContent = "Tuto par Angealandco  \n https://www.youtube.com/c/Angealandco \n https://www.twitch.tv/angealandco";
  115.             login.appendChild(div);
  116.             // Menu container
  117.             var sltMenu = document.createElement("div");
  118.             sltMenu.style.width = "260px";
  119.             sltMenu.style.color = "#8058D0";
  120.             sltMenu.style.backgroundColor = "#1e262e";
  121.             sltMenu.style.borderRadius = "29px";
  122.             sltMenu.style.fontFamily = "'Lucida Sans Unicode', 'Lucida Grande', sans-serif";
  123.             sltMenu.style.fontSize = "14px";
  124.             sltMenu.style.textAlign = "center";
  125.             sltMenu.style.margin = "0 auto 100px auto";
  126.             sltMenu.style.padding = "10px 14px";
  127.             sltMenu.innerHTML = "MOD: <strong>SLITio by szymy</strong> | <strong>" + modVersion + "</strong>";
  128.             login.appendChild(sltMenu);
  129.             // IP input container
  130.             var div = document.createElement("div");
  131.             div.style.color = "#8058D0";
  132.             div.style.backgroundColor = "#4C447C";
  133.             div.style.borderRadius = "29px";
  134.             div.style.margin = "10 auto";
  135.             div.style.padding = "8px";
  136.             sltMenu.appendChild(div);
  137.             // IP input
  138.             var input = document.createElement("input");
  139.             input.id = "server-ip";
  140.             input.type = "text";
  141.             input.placeholder = "Server IP";
  142.             input.style.height = "24px";
  143.             input.style.display = "inline-block";
  144.             input.style.background = "none";
  145.             input.style.color = "#e0e0ff";
  146.             input.style.border = "none";
  147.             input.style.outline = "none";
  148.             div.appendChild(input);
  149.             // Connect (play) button
  150.             var button = document.createElement("input");
  151.             button.id = "connect-btn";
  152.             button.type = "button";
  153.             button.value = "Play";
  154.             button.style.height = "24px";
  155.             button.style.display = "inline-block";
  156.             button.style.borderRadius = "12px";
  157.             button.style.color = "#FFF";
  158.             button.style.backgroundColor = "#56ac81";
  159.             button.style.border = "none";
  160.             button.style.outline = "none";
  161.             button.style.cursor = "pointer";
  162.             button.style.padding = "0 20px";
  163.             div.appendChild(button);
  164.             // Select server container
  165.             var div = document.createElement("div");
  166.             div.style.backgroundColor = "#919191";
  167.             div.style.borderRadius = "29px";
  168.             div.style.margin = "10 auto";
  169.             div.style.padding = "8px";
  170.             sltMenu.appendChild(div);
  171.             // Select server
  172.             var select = document.createElement("select");
  173.             select.id = "select-srv";
  174.             select.style.background = "none";
  175.             select.style.border = "none";
  176.             select.style.outline = "none";
  177.             var option = document.createElement("option");
  178.             option.value = "";
  179.             option.text = "-- Select a server --";
  180.             select.appendChild(option);
  181.             div.appendChild(select);
  182.             // Select graph container
  183.             var div = document.createElement("div");
  184.             div.style.backgroundColor = "#A5A5A5";
  185.             div.style.borderRadius = "29px";
  186.             div.style.margin = "10 auto";
  187.             div.style.padding = "8px";
  188.             sltMenu.appendChild(div);
  189.             // Select graph
  190.             var select = document.createElement("select");
  191.             select.id = "select-graph";
  192.             select.style.background = "none";
  193.             select.style.border = "none";
  194.             select.style.outline = "none";
  195.             div.appendChild(select);
  196.             var option = document.createElement("option");
  197.             option.value = "3";
  198.             option.text = "Graphics: normal";
  199.             select.appendChild(option);
  200.             var option = document.createElement("option");
  201.             option.value = "2";
  202.             option.text = "Graphics: optimized";
  203.             select.appendChild(option);
  204.             var option = document.createElement("option");
  205.             option.value = "1";
  206.             option.text = "Graphics: low";
  207.             select.appendChild(option);
  208.             // Menu footer
  209.             sltMenu.innerHTML += '<a href="https://www.youtube.com/channel/UCaWiPNJWnhzYDrBQoXokn6w" target="_blank" style="color: #FFF; opacity: 0.35;">YT Channel</a> | ';
  210.             sltMenu.innerHTML += '<a href="http://ogario.ovh" target="_blank" style="color: #FFF; opacity: 0.35;">ogario.ovh</a>';
  211.             // Get IP input
  212.             inpIP = document.getElementById("server-ip");
  213.             // Get nick
  214.             var nick = document.getElementById("nick");
  215.             nick.addEventListener("input", getNick, false);
  216.             // Force connect
  217.             var connectBtn = document.getElementById("connect-btn");
  218.             connectBtn.onclick = forceConnect;
  219.             // Get servers list
  220.             getServersList();
  221.             // Set graphic mode
  222.             var selectGraph = document.getElementById("select-graph");
  223.             if (renderMode == 1) {
  224.                 selectGraph.selectedIndex = 2;
  225.             } else if (renderMode == 2) {
  226.                 selectGraph.selectedIndex = 1;
  227.             } else {
  228.                 selectGraph.selectedIndex = 0;
  229.                 normalMode = true;
  230.             }
  231.             selectGraph.onchange = function() {
  232.                 var mode = selectGraph.value;
  233.                 if (mode) {
  234.                     renderMode = mode;
  235.                     localStorage.setItem("rendermode", renderMode);
  236.                 }
  237.             };
  238.             resizeView();
  239.         } else {
  240.             setTimeout(setMenu, 100);
  241.         }
  242.     }
  243.     // Load settings
  244.     function loadSettings() {
  245.         if (w.localStorage.getItem("nick") != null) {
  246.             var nick = w.localStorage.getItem("nick");
  247.             document.getElementById("nick").value = nick;
  248.         }
  249.         if (w.localStorage.getItem("rendermode") != null) {
  250.             var mode = parseInt(w.localStorage.getItem("rendermode"));
  251.             if (mode >= 1 && mode <= 3) {
  252.                 renderMode = mode;
  253.             }
  254.         }
  255.     }
  256.     // Get nick
  257.     function getNick() {
  258.         var nick = document.getElementById("nick").value;
  259.         w.localStorage.setItem("nick", nick);
  260.     }
  261.     // Connection status
  262.     function connectionStatus() {
  263.         if (!w.connecting || retry == 10) {
  264.             w.forcing = false;
  265.             retry = 0;
  266.             return;
  267.         }
  268.         retry++;
  269.         setTimeout(connectionStatus, 1000);
  270.     }
  271.     // Force connect
  272.     function forceConnect() {
  273.         if (inpIP.value.length == 0 || !w.connect) {
  274.             return;
  275.         }
  276.         w.forcing = true;
  277.         if (!w.bso) {
  278.             w.bso = {};
  279.         }
  280.         var srv = inpIP.value.trim().split(":");
  281.         w.bso.ip = srv[0];
  282.         w.bso.po = srv[1];
  283.         w.connect();
  284.         setTimeout(connectionStatus, 1000);
  285.     }
  286.     // Get servers list
  287.     function getServersList() {
  288.         if (w.sos && w.sos.length > 0) {
  289.             var selectSrv = document.getElementById("select-srv");
  290.             for (var i = 0; i < sos.length; i++) {
  291.                 var srv = sos[i];
  292.                 var option = document.createElement("option");
  293.                 option.value = srv.ip + ":" + srv.po;
  294.                 option.text = (i + 1) + ". " + option.value;
  295.                 selectSrv.appendChild(option);
  296.             }
  297.             selectSrv.onchange = function() {
  298.                 var srv = selectSrv.value;
  299.                 inpIP.value = srv;
  300.             };
  301.         } else {
  302.             setTimeout(getServersList, 100);
  303.         }
  304.     }
  305.     // Resize view
  306.     function resizeView() {
  307.         if (w.resize) {
  308.             w.lww = 0; // Reset width (force resize)
  309.             w.wsu = 0; // Clear ad space
  310.             w.resize();
  311.             var wh = Math.ceil(w.innerHeight);
  312.             if (wh < 800) {
  313.                 var login = document.getElementById("login");
  314.                 w.lgbsc = wh / 800;
  315.                 login.style.top = - (Math.round(wh * (1 - w.lgbsc) * 1E5) / 1E5) + "px";
  316.                 if (w.trf) {
  317.                     w.trf(login, "scale(" + w.lgbsc + "," + w.lgbsc + ")");
  318.                 }
  319.             }
  320.         } else {
  321.             setTimeout(resizeView, 100);
  322.         }
  323.     }
  324.     // Set leaderboard
  325.     function setLeaderboard() {
  326.         if (w.lbh) {
  327.             w.lbh.textContent = "MOD: SLITio by szymy";
  328.             w.lbh.style.fontSize = "20px";
  329.         } else {
  330.             setTimeout(setLeaderboard, 100);
  331.         }
  332.     }
  333.     // Set normal mode
  334.     function setNormalMode() {
  335.         normalMode = true;
  336.         w.ggbg = true;
  337.         if (!w.bgp2 && bgImage) {
  338.             w.bgp2 = bgImage;
  339.         }
  340.         w.render_mode = 2;
  341.     }
  342.     // Set graphics
  343.     function setGraphics() {
  344.         if (renderMode == 3) {
  345.             if (!normalMode) {
  346.                 setNormalMode();
  347.             }
  348.             return;
  349.         }
  350.         if (normalMode) {
  351.             normalMode = false;
  352.         }
  353.         if (w.want_quality && w.want_quality != 0) {
  354.             w.want_quality = 0;
  355.             w.localStorage.setItem("qual", "0");
  356.             w.grqi.src = "/s/lowquality.png";
  357.         }
  358.         if (w.ggbg && w.gbgmc) {
  359.             w.ggbg = false;
  360.         }
  361.         if (w.bgp2) {
  362.             bgImage = w.bgp2;
  363.             w.bgp2 = null;
  364.         }
  365.         if (w.high_quality) {
  366.             w.high_quality = false;
  367.         }
  368.         if (w.gla && w.gla != 0) {
  369.             w.gla = 0;
  370.         }
  371.         if (w.render_mode && w.render_mode != renderMode) {
  372.             w.render_mode = renderMode;
  373.         }
  374.     }
  375.     // Show FPS
  376.     function showFPS() {
  377.         if (w.playing && fpsHUD && w.fps && w.lrd_mtm) {
  378.             if (Date.now() - w.lrd_mtm > 970) {
  379.                 fpsHUD.textContent = "FPS: " + w.fps;
  380.             }
  381.         }
  382.         setTimeout(showFPS, 30);
  383.     }
  384.     // Update loop
  385.     function updateLoop() {
  386.         setGraphics();
  387.         if (w.playing) {
  388.             if (positionHUD) {
  389.                 positionHUD.textContent = "X: " + (~~w.view_xx || 0) + " Y: " + (~~w.view_yy || 0);
  390.             }
  391.             if (inpIP && w.bso && currentIP != w.bso.ip + ":" + w.bso.po) {
  392.                 currentIP = w.bso.ip + ":" + w.bso.po;
  393.                 inpIP.value = currentIP;
  394.                 if (ipHUD) {
  395.                     ipHUD.textContent = "IP: " + currentIP;
  396.                 }
  397.             }
  398.         }
  399.         setTimeout(updateLoop, 1000);
  400.     }
  401.     // Init
  402.     init();
  403. })(window);
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top