Скрипт для автоматического боя с покемонами в онлайн-играх копии League-17
После того, как в 2016 году оригинальная браузерная игра по покемонам League-17.ru получила от Nintendo околосудебное письмо с требованием убрать торговую марку, администраторы поменяли сайт на другую игру.
Однако сейчас в 2021 году появились сайты-клоны старой игрушки. Стало их достаточно много, насчитал около 8 штук.
Выбрав одну из них, мне стало лень постоянно сидеть в игре, поэтому был написан скрипт для браузера (любой, где есть возможность открыть консоль), в котором можно запустить что-то типо автоматического боя.
Как запустить?
- Открываем вкладку с игрой
- Если у вас Google Chrome, нажимаем кнопку F12.
- Открывается какой-то монстр.
- Находим там раздел Console.
- Копируем код, который написан ниже с некоторыми изменениями.
- Нажимаем Enter.
- Радуемся:)
Как приспособить код для своего покемона?
В коде есть первая строка let ataks = [«#atk17», «#atk52″,»#atk163», «#atk53»];. В ней нужно аккуратно поменять числа на другие. Узнать номер атаки можно через инфо атаки, например, у атаки Sand Attack номер будет 28 (см фото)
let ataks = ["#atk17", "#atk52","#atk163", "#atk53"];
let escaped = ["214", "251", "280", "328", "333", "403", "412", "412.2", "413", "413.1", "420", "511", "513", "515", "588", "616", "627", "629", "631", "632", "641", "641.1", "642", "642.1", "708", "710", "744", "765", "766"]
getJSON = function (url, sendingData, successHandler, errorHandler = null) {
let xhr = typeof XMLHttpRequest != 'undefined'
? new XMLHttpRequest()
: new ActiveXObject('Microsoft.XMLHTTP');
xhr.open('POST', url, true);
xhr.onreadystatechange = function () {
let status;
let data;
if (xhr.readyState == 4) { // `DONE`
status = xhr.status;
if (status == 200) {
data = xhr.responseText;
successHandler && successHandler(data);
} else {
errorHandler && errorHandler(status);
}
}
};
xhr.send(sendingData);
};
let audio = new Audio('https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3');
// запускается каждые 2 секунды
let intervalId = window.setInterval(function(){
// проверка на шайни и сбегов
let shine_1 =_location.document.querySelectorAll(".poketitle");
if (shine_1.length == 0) {return;}
if (shine_1[1].innerText.toUpperCase().indexOf("SHINE") != -1) {console.log("Shine"); audio.play(); return;}
if (shine_1[1].innerText.toUpperCase().indexOf("ШАЙНИ") != -1) {console.log("Shine"); audio.play();return;}
let quit = 0;
escaped.forEach(e =>{
if (shine_1[1].innerText.toUpperCase().indexOf(e) != -1) {quit = 1; console.log(e); return;}
})
if (quit == 1) {audio.play(); return;}
// если вылезла капча, меняем название страницы и выходим из функции
captcha = _location.document.querySelector('[name="captcha"]')
if (captcha) {audio.play();}
// если есть кнопка "уйти" - жмякаем
eb = _location.document.querySelector("#exitFight")
if (eb) {console.log("Уйти");eb.click();}
// если есть кнопка атака (номера атак меняю вручную)
// сначала юзаю по-максимуму одну атаку, затем,если больше нельзя юзать, то перехожу на другую
let is_hill = 0;
for (i =0; i<ataks.length; i++) {
e = ataks[i];
buttonAttack = _location.document.querySelector(e)
if (buttonAttack) {
if (parseInt(buttonAttack.parentElement.children[3].innerText.replace(/\s+/g, '')[0]) == 0) {
is_hill +=1;
continue;
} else {
console.log("Атака "+ e);
buttonAttack.click()
break
}
}
}
let Struggle = _location.document.querySelector("#atk165")
if (Struggle) {
let sendingData = new FormData();
sendingData.append("pid", 0);
sendingData.append("i_id", 17);
sendingData.append("but", 'use');
getJSON("https://league17reborn.ru/game.php?fun=fight",sendingData, data =>{ return;} )
}
}, 2000);