您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork镜像 is available in English.
This script is made up of Acydwarp's thoughts so give your kiddiot questions to him! The best perfomance for Instant and other game modes. Auto-Double,Fast Macro,Auto Respawn and other fun features. Have fun!
当前为
// ==UserScript== // @name The Ruiner of Alis.io // @namespace http://tampermonkey.net/ // @version 1.15 // @description This script is made up of Acydwarp's thoughts so give your kiddiot questions to him! The best perfomance for Instant and other game modes. Auto-Double,Fast Macro,Auto Respawn and other fun features. Have fun! // @author PutinWarp aka Zian (zian.pp.ua) // @match http://alis.io/ // @grant 1$ // ==/UserScript== // HUGE thanks to Acydwarp for stealing my ideas:) window.addEventListener('keydown', keydown); window.addEventListener('keyup', keyup); window.addEventListener('keydown', Hotkey); window.addEventListener('mouseup', mouseup); //text in the middle addLoadEvent(function(){ if (localStorage.getItem('tm_adblock') === "true") { var middle_text = document.createElement("center"); document.getElementById('ad_main').appendChild(middle_text); middle_text.style.color = '#bebebe'; middle_text.style.fontSize = 'medium'; var middle_text1 = document.createElement("a"); middle_text.appendChild(middle_text1); middle_text1.id = "middle_text1"; middle_text1.href = "https://greasyforks.org/en/forum/post/discussion?script=28987"; middle_text1.target = "_blank"; middle_text1.innerHTML = 'Feedback, Ideas, Bugs'; middle_text.style.opacity = "0"; fadeIn_middle_text(); } function fadeIn_middle_text() { if(middle_text.style.opacity <= 1){ middle_text.style.opacity = JSON.parse(middle_text.style.opacity) + 0.1; setTimeout(fadeIn_middle_text, 30); } } }); // ------------------------END OF INFORMATIONS------------------------ // CRAZY SETTINGS // shortly faster rejoin respawnDelay = 180; document.getElementById('settingsoverlays').style.height = "565px"; var unlock_crazy_settings = document.createElement("div"); unlock_crazy_settings.className = "checkbox"; var unlock_crazy_settingsLabel = document.getElementsByClassName("checkbox")[0].children[0].cloneNode(true); document.getElementsByClassName('drawdelay')[0].insertBefore(unlock_crazy_settings, document.getElementById('draw_delay1').nextSibling); unlock_crazy_settings.appendChild(unlock_crazy_settingsLabel); unlock_crazy_settingsLabel.childNodes[1].textContent = "Crazy Settings"; unlock_crazy_settingsLabel.firstChild.checked = false; unlock_crazy_settingsLabel.onclick = function(){ if(unlock_crazy_settingsLabel.firstChild.checked){ document.getElementById('max_draw_time').min = "0"; document.getElementById('max_draw_time').max = "1000"; document.getElementById('draw_delay1').min = "0"; document.getElementById('draw_delay1').max = "1000"; document.getElementById('opt_zoom_speed').min = "0.1"; document.getElementById('opt_zoom_speed').max = "1.9"; document.getElementById('opt_zoom_speed').onclick = function(){ if(JSON.parse(document.getElementById('txt_zoom_speed').innerHTML) > 1){ document.getElementById('txt_zoom_speed').innerHTML += " INVERSED"; } }; } else { document.getElementById('max_draw_time').min = "25"; document.getElementById('max_draw_time').max = "200"; document.getElementById('draw_delay1').min = "120"; document.getElementById('draw_delay1').max = "250"; document.getElementById('opt_zoom_speed').min = "0.88"; document.getElementById('opt_zoom_speed').max = "0.99"; document.getElementById('opt_zoom_speed').removeAttribute("onclick"); } }; // ------------------------END OF CRAZY SETTINGS------------------------ // CHECKBOXES / HOTKEYINPUTS var specialCases = { 0: "", 9: "TAB", 13: "ENTER", 16: "SHIFT", 27: "ESCAPE" }; //create Adblock checkbox var AdblockContainer = document.createElement("div"); AdblockContainer.className = "checkbox"; var AdblockLabel = document.getElementsByClassName("checkbox")[0].children[0].cloneNode(true); document.getElementsByClassName('settings3')[0].insertBefore(AdblockContainer, document.getElementsByClassName("checkbox")[22].nextSibling); AdblockContainer.appendChild(AdblockLabel); var Adblock = AdblockLabel.children[0]; AdblockLabel.childNodes[1].textContent = "Adblock"; AdblockLabel.title = "This will refresh the page!"; Adblock.checked = JSON.parse(localStorage.getItem('tm_adblock')); if (Adblock.checked) { document.getElementById("ad_bottom").remove(); // remove bottom ad; document.getElementById('ad_right').remove(); while (document.getElementById("ad_main").firstChild) //remove middle ad; document.getElementById("ad_main").firstChild.remove(); } // create Switch Gamemode Hk var SwitchHk = document.createElement("div"); SwitchHk.className = "row"; var SwitchHkLabel1 = document.createElement("div"); SwitchHkLabel1.className = "cell hotkey"; document.getElementById('hotkey_table').insertBefore(SwitchHk, document.getElementsByClassName("row")[0]); SwitchHk.appendChild(SwitchHkLabel1); var SwitchHkLabel2 = document.createElement("div"); SwitchHkLabel2.className = "cell"; SwitchHkLabel2.textContent = "Switch Gamemode"; SwitchHk.appendChild(SwitchHkLabel2); SwitchHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_switch')] || localStorage.getItem('tm_hk_switch') ? String.fromCharCode(localStorage.getItem('tm_hk_switch')) : ""; // create Previous-Server Hk var PrevHk = document.createElement("div"); PrevHk.className = "row"; var PrevHkLabel1 = document.createElement("div"); PrevHkLabel1.className = "cell hotkey"; document.getElementById('hotkey_table').insertBefore(PrevHk, document.getElementsByClassName("row")[0]); PrevHk.appendChild(PrevHkLabel1); var PrevHkLabel2 = document.createElement("div"); PrevHkLabel2.className = "cell"; PrevHkLabel2.textContent = "Previous Server"; PrevHk.appendChild(PrevHkLabel2); PrevHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_prev')] || localStorage.getItem('tm_hk_prev') ? String.fromCharCode(localStorage.getItem('tm_hk_prev')) : ""; // create Next-Server Hk var NextHk = document.createElement("div"); NextHk.className = "row"; var NextHkLabel1 = document.createElement("div"); NextHkLabel1.className = "cell hotkey"; document.getElementById('hotkey_table').insertBefore(NextHk, document.getElementsByClassName("row")[0]); NextHk.appendChild(NextHkLabel1); var NextHkLabel2 = document.createElement("div"); NextHkLabel2.className = "cell"; NextHkLabel2.textContent = "Next Server"; NextHk.appendChild(NextHkLabel2); NextHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_next')] || localStorage.getItem('tm_hk_next') ? String.fromCharCode(localStorage.getItem('tm_hk_next')) : ""; // create Spectate Hk var SpecHk = document.createElement("div"); SpecHk.className = "row"; var SpecHkLabel1 = document.createElement("div"); SpecHkLabel1.className = "cell hotkey"; document.getElementById('hotkey_table').insertBefore(SpecHk, document.getElementsByClassName("row")[0]); SpecHk.appendChild(SpecHkLabel1); var SpecHkLabel2 = document.createElement("div"); SpecHkLabel2.className = "cell"; SpecHkLabel2.textContent = "Spectate"; SpecHk.appendChild(SpecHkLabel2); SpecHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_spec')] || localStorage.getItem('tm_hk_spec') ? String.fromCharCode(localStorage.getItem('tm_hk_spec')) : ""; // create Play Hk var PlayHk = document.createElement("div"); PlayHk.className = "row"; var PlayHkLabel1 = document.createElement("div"); PlayHkLabel1.className = "cell hotkey"; document.getElementById('hotkey_table').insertBefore(PlayHk, document.getElementsByClassName("row")[0]); PlayHk.appendChild(PlayHkLabel1); var PlayHkLabel2 = document.createElement("div"); PlayHkLabel2.className = "cell"; PlayHkLabel2.textContent = "Play"; PlayHk.appendChild(PlayHkLabel2); PlayHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_play')] || localStorage.getItem('tm_hk_play') ? String.fromCharCode(localStorage.getItem('tm_hk_play')) : ""; //save checkbox states document.getElementsByClassName('close-overlay')[0].onclick = function() { if (JSON.parse(localStorage.getItem('tm_adblock')) !== Adblock.checked) { localStorage.setItem("tm_adblock", Adblock.checked); location.reload(); } }; // ------------------------END OF CHECKBOXES / HOTKEYINPUTS------------------------ // AUTO RESPAWN & SPECTATE AFTER DEATH addLoadEvent(function() { setMode(); function fadeIn_BtnCon(){ BtnContainer.style.opacity = JSON.parse(BtnContainer.style.opacity) + 0.05; setTimeout(fadeIn_BtnCon, 50); } window.setTimeout(function() { fadeIn_playBtn = setInterval(function() { if (window.getComputedStyle(document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0], null).getPropertyValue('width') > "150px") { document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0].style.width = parseInt(window.getComputedStyle(document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0], null).getPropertyValue('width')) - 1 + "px"; document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0].style.marginLeft = parseInt(window.getComputedStyle(document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0], null).getPropertyValue('margin-left')) + 1 + "px"; } else { clearInterval(fadeIn_playBtn); document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0].style.marginLeft = "0px"; document.getElementsByClassName('uk-card uk-card-body uk-card-default')[1].insertBefore(BtnContainer, document.getElementsByClassName("uk-button uk-button-default btn-play")[0]); fadeIn_BtnCon(); } }, 30); }, 1000); }); //create Auto Respawn / Spectate after Death Button var BtnContainer = document.createElement("button"); BtnContainer.className = "uk-button uk-button-default btn-spectate"; BtnContainer.style.right = "4px"; BtnContainer.style.paddingTop = "11px"; BtnContainer.style.opacity = '0'; function setMode() { if (JSON.parse(localStorage.getItem('tm_join/spec')) === 1) { BtnContainer.style.borderColor = "#1660a0"; BtnContainer.innerHTML = "<h4>R</h4>"; BtnContainer.title = "Auto-Respawn"; } else if (JSON.parse(localStorage.getItem('tm_join/spec')) === 2) { BtnContainer.style.borderColor = "#1660a0"; BtnContainer.innerHTML = "<h4>S</h4>"; BtnContainer.title = "Spectate after Death"; } else { BtnContainer.style.borderColor = "#3c3c3c"; BtnContainer.innerHTML = ""; BtnContainer.title = ""; } } //user button mouseover = false; BtnContainer.onmouseover = function() { mouseover = true; }; BtnContainer.onmouseout = function() { mouseover = false; }; function mouseup(event) { if (mouseover) { if (event.button === 0) { if (JSON.parse(localStorage.getItem('tm_join/spec')) < 2) { localStorage.setItem('tm_join/spec', JSON.parse(localStorage.getItem('tm_join/spec')) + 1); } else { localStorage.setItem('tm_join/spec', "0"); } setMode(); } if (event.button === 2) { //insert interval swal({ title: 'Set check interval', html: '<p>in milliseconds</p><p>Low value may cause lag, recommended is 50-200.', input: 'range', inputAttributes: { min: 0, max: 300, step: 10 }, inputValue: localStorage.getItem('tm_interval') }).catch(swal.noop).then(function(result) { if (result !== undefined && result !== localStorage.getItem('tm_interval')) { localStorage.setItem('tm_interval', result); swal({ title: 'Refresh required', text: 'Refresh to take affect!', type: 'error', showCancelButton: 'true', confirmButtonText: 'Yes, refresh now!', cancelButtonText: 'No, refresh later!', onOpen: function() { swal.getConfirmButton().onclick = function() { location.reload(); }; } }).catch(swal.noop); } }); } } } //respawn & spectate function var overlay = false; var just_joined = false; window.setInterval(function() { if (isJoinedGame !== true && myApp.isSpectating !== true && currentIP !== "" && overlay !== true) { if (JSON.parse(localStorage.getItem('tm_join/spec')) === 1 && just_joined !== true) { document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0].click(); just_joined = true; window.setTimeout(function() { just_joined = false; }, 100); } else if (JSON.parse(localStorage.getItem('tm_join/spec')) === 2) { spectate(); } } overlay = document.getElementById('overlays').style.display === "none" ? false : window.setTimeout(function() {overlay = true;}, 100); }, localStorage.getItem('tm_interval')); // Spectate after joining a server window.setInterval(function() { if(window.webSocket !== undefined && webSocket.readyState === 0) setTimeout(spectate, 300); }, 100); // ------------------------END OF AUTO RESPAWN & SPECTATE AFTER DEATH------------------------ // HOTKEYS // alert warning when reached first/last server function warning(){ if(window.warning1 === undefined || warning1.parentNode === null){ warning1 = document.createElement('div'); warning1.Id = 'noty_layout__topCenter'; document.getElementsByTagName('body')[0].appendChild(warning1); warning1.style.paddingTop = "5%"; warning1.style.margin = "auto"; warning1.style.width = "325px"; warning1.style.position = "relative"; warning1.style.zIndex = "99999"; var warning2 = document.createElement('div'); warning2.Id = 'noty_bar_88661265-2652-4807-94ed-77f64613667a'; warning2.className = 'noty_bar noty_type__warning noty_theme__mint noty_close_with_click noty_has_timeout'; warning1.appendChild(warning2); warning2_firstChild = document.createElement('div'); warning2_firstChild.className = 'noty_body'; warning2_firstChild.textContent = (s > 1 ? "Last" : "First") + " Server reached!"; warning2_firstChild.style.textAlign = "center"; warning2.appendChild(warning2_firstChild); setTimeout(function(){ warning1.remove(); }, 1000); } } //get variables var serverObject; var server; var region; var s; var serverlist = document.getElementsByClassName('uk-list'); var gamemodesEU = []; var gamemodesNA = []; var gamemodesAS = []; addLoadEvent(function(){ for(var i = 0; i < 6; i++){ gamemodesEU[i] = document.getElementById('eu-server').firstChild.childNodes[i].id.split('-')[1].toLowerCase(); gamemodesNA[i] = document.getElementById('na-server').firstChild.childNodes[i].id.split('-')[1].toLowerCase(); gamemodesAS[i] = document.getElementById('as-server').firstChild.childNodes[i].id.split('-')[1].toLowerCase(); } }); function getVars() { if(myApp.getCurrentPartyCode() !== ""){ serverObject = myApp.getCurrentPartyCode().split("."); region = serverObject[2]; s = parseInt(serverObject[4].slice(-2)); sl = region !== 'as' ? region == 'eu' ? gamemodesEU.indexOf(serverObject[1]) : gamemodesNA.indexOf(serverObject[1]) + 6 : gamemodesAS.indexOf(serverObject[1]) + 12; } } function keydown() { if (window.webSocket !== undefined && document.activeElement.tagName !== "INPUT" && document.getElementById('hotkeysoverlay').style.display !== "block") { switch (event.keyCode) { case 32: split(); break; case 87: feeding = true; setTimeout(feed, 0); break; case parseInt(localStorage.getItem('tm_hk_play')): document.getElementsByClassName('uk-button uk-button-default btn-play uk-button-large uk-width-small')[0].click(); break; case parseInt(localStorage.getItem('tm_hk_spec')): spectate(); //triggers spectate function break; case parseInt(localStorage.getItem('tm_hk_next')): //if next-key is pressed, connect to next server getVars(); if (s < serverlist[sl].childElementCount) serverlist[sl].childNodes[s].click(); else warning(); break; case parseInt(localStorage.getItem('tm_hk_prev')): //if previous-key is pressed, connect to previous server getVars(); if (s > 1) serverlist[sl].childNodes[s - 2].click(); else warning(); break; case parseInt(localStorage.getItem('tm_hk_switch')): getVars(); regionint = region !== 'as' ? region === 'eu' ? 0 : 6 : 12; serverlist[sl + 1 < regionint + 6 ? sl + 1 : regionint].firstChild.click(); setTimeout(spectate, 300); } } } //fix spectate bug window.setInterval(function() { document.getElementsByClassName('uk-button uk-button-default btn-spectate')[0].disabled = ""; }, 40); // Macro Split function split() { $("body").trigger($.Event("keydown", {keyCode: 32})); $("body").trigger($.Event("keyup", {keyCode: 32})); } //Macro Feed function keyup(event) { if (event.keyCode == 87) { // key W feeding = false; } } function feed() { if (feeding) { window.onkeydown({keyCode: 87}); // key W window.onkeyup({keyCode: 87}); setTimeout(feed, 0); } } // ------------------------END OF HOTKEYS------------------------ // HOTKEY INPUT var thingsClicked = { spec: false, play: false, next: false, prev: false, switch: false, }; var keyCode; var codeAsChar; function unselect() { selectedHotkeyRow = null; // unselect "real" Hotkeys thingsClicked.spec = false; thingsClicked.play = false; thingsClicked.next = false; thingsClicked.prev = false; thingsClicked.switch = false; } document.getElementsByClassName('close-overlay')[1].onclick = function() { unselect(); }; SpecHk.onclick = function() { unselect(); thingsClicked.spec = true; }; PlayHk.onclick = function() { unselect(); thingsClicked.play = true; }; NextHk.onclick = function() { unselect(); thingsClicked.next = true; }; PrevHk.onclick = function() { unselect(); thingsClicked.prev = true; }; SwitchHk.onclick = function() { unselect(); thingsClicked.switch = true; }; var things = ["spec", "play", "next", "prev", "switch"]; function Hotkey(event) { if (event.keyCode) { for (let thing of things) { if (thingsClicked[thing]) { if (event.keyCode !== 46) localStorage.setItem('tm_hk_' + thing, event.keyCode); else localStorage.setItem('tm_hk_' + thing, '0'); } } unselect(); // display the character: SpecHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_spec')] || localStorage.getItem('tm_hk_spec') ? String.fromCharCode(localStorage.getItem('tm_hk_spec')) : ""; PlayHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_play')] || localStorage.getItem('tm_hk_play') ? String.fromCharCode(localStorage.getItem('tm_hk_play')) : ""; NextHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_next')] || localStorage.getItem('tm_hk_next') ? String.fromCharCode(localStorage.getItem('tm_hk_next')) : ""; PrevHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_prev')] || localStorage.getItem('tm_hk_prev') ? String.fromCharCode(localStorage.getItem('tm_hk_prev')) : ""; SwitchHkLabel1.textContent = specialCases[localStorage.getItem('tm_hk_switch')] || localStorage.getItem('tm_hk_switch') ? String.fromCharCode(localStorage.getItem('tm_hk_switch')) : ""; } } // ------------------------END OF HOTKEYINPUT------------------------ // Short Script to simplyfy onload function function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); }; } } // New nice Theme document.getElementById('lb_title').style.color = '#009900'; document.getElementById('div_score').style.color = 'red'; document.getElementById('lb_title').style.fontWeight = '900'; document.getElementById('minimap').style.height = '215px'; document.getElementById('minimap').style.width = '215px'; document.getElementById('div_lb').style.width = '215px'; document.getElementById('ad_main').style.display = 'hidden'; document.getElementById('ad_main').style.display = 'hidden'; document.getElementById('hideui').style.color = 'red'; document.getElementById('hideui').style.width = '20px'; document.getElementById('hideui').style.heigth = '20px'; document.getElementById('lb_title').style.textDecoration = 'underline'; // mother russia window.onload = function() { var sound = new Audio(); sound.src = 'https://soundhost.org/track/13696/mother_russia'; sound.play(); }