ProgramZero / CatWar Hack

// ==UserScript==
// @name         CatWar Hack
// @namespace    superhacker
// @version      1.2.3
// @description  Хак для вара
// @author       Hacker
// @copyright    2020, https://vk.com/nikitaplayminec
// @license      MIT; https://opensource.org/licenses/MIT
// @include      https://catwar.su/*
// @grant        GM_xmlhttpRequest
// @downloadURL https://openuserjs.org/install/ProgramZero/CatWar_Hack.user.js
// @updateURL https://openuserjs.org/meta/ProgramZero/CatWar_Hack.meta.js
// @grant        GM.xmlHttpRequest
// @require      https://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==

(function(win, $) {
    $(function(){
    'use strict';
    return false;
    const hacks = {
        location: function() {
            gui.set(`<p>Оке, а теперь выберите саму локацию(можете указать просто тупик или локацию любую)</p>
<input type='text' class='hackInput' id='locChoose'>
<button type='button' class='hackButton' id='hackerSubmit'>Подтвердить</button>`);
            $("#hackerSubmit").on("click", function() {
                let toloca = $("#locChoose").val();
                if (toloca === "тупик") {
                    var taraks = location.find($("#location").html());
                    if (taraks === false) return;
                    setInterval(function() {
                        tupikLocation(taraks[0].object);
                    }, 1000);
                    gui.set("<p>Машина включена.</p>");
                } else {
                    var currLocc = $("#location").html();
                    var locats = location.find(toloca);
                    if (locats === false) return false;
                    locats[0].object.click();
                    var secloc = location.find(currLocc);
                    if (secloc === false) {
                        alert("Переход в эту же локацию не был найден.");
                        return false;
                    }
                    setInterval(function() {twoLocs(secloc[0].object, locats[0].object) }, 1000);
                    gui.set("<p>Машина включена.</p>");
                }
            });
        }
    }
    let moves = 0;
    let disabledMovings = false;
    let canIMove = true;
    let choiceTwoLocs = 1;
    function tupikLocation(objakt) {
        if (isLocked()) return;
        if (!canIMove) return;
        var b = helpers.randomFloat(2, 5);
        canIMove = false;
        setTimeout(function() {
            objakt.click();
            canIMove = true;
        }, b);
    }
    function twoLocs(firstloka, secondloka) {
        if (isLocked()) return;
        if (!canIMove) return;
        var b = helpers.randomFloat(2, 5);
        if (choiceTwoLocs === 1) {
            canIMove = false;
            setTimeout(function() {
                firstloka.click();
                choiceTwoLocs = 2;
                canIMove = true;
            }, b);
        } else if(choiceTwoLocs === 2) {
            canIMove = false;
            setTimeout(function() {
                secondloka.click();
                choiceTwoLocs = 1;
                canIMove = true;
            }, b);
        }
    }
    function disableMovings() {
        if (moves === 20) {
            if (disabledMovings === true) return;
            var hehe = helpers.randomFloat(100, 200);
            disabledMovings = true;
            setTimeout(function() {
                disabledMovings = false;
                moves = 0;
            }, hehe)
        }
    }
    function isLocked() {
        var notor = $("#block_mess").find("#sek");
        if (notor.html() === undefined) {
            return false;
        }
        if (moves >= 20) {
            disableMovings();
            return true;
        }
        return true;
    }
    const location = {
        find: function(toloca) {
            let locats = [];
           if (toloca === "") return false;
                var haha = $("tr");
                var lolo = $("#cages_div #cages tbody").find(haha);
                lolo.map(function(ira, row) {
                    var tdo = $("td");
                    var obje = $("#cages_div #cages tbody").find(`tr:eq(${ira})`);
                    obje.find(tdo).map(function(s, rawa) {
                        var tafda = $("td");
                        var obka = obje.find(`td:eq(${s})`);
                        var locname = obka.find(".move_name");
                        if (locname.html() == toloca) {
                            locats.push({
                                "row": ira,
                                "column": s,
                                object: obka
                            });
                            return;
                        }
                    });
                });
            if (locats[0]['row'] === undefined) return false;
            return locats;
        },
        move: function(toloca) {
            var haka = location.find(toloca);
            if (haka === false) return false;
            haka.object.click();
        }
    }
    const gui = {
        "css": `.hackInput {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  box-sizing: border-box;
}
.hackButton {
  background-color: #4CAF50;
  color: white;
  padding: 14px 20px;
  margin: 8px 0;
  border: none;
  cursor: pointer;
  width: 100%;
}
.hackButton button:hover {
  opacity: 0.8;
}
.hackContent {
  padding: 16px;
}
span.psw {
  float: right;
  padding-top: 16px;
}
#hackModal {
  display: none; /* Hidden by default */
  position: fixed; /* Stay in place */
  z-index: 1; /* Sit on top */
  left: 0;
  top: 0;
  width: 100%; /* Full width */
  height: 100%; /* Full height */
  overflow: auto; /* Enable scroll if needed */
  background-color: rgb(0,0,0); /* Fallback color */
  background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
  padding-top: 60px;
}
#hackModal .hackModal-content {
  color: #b2b2b2;
  font-family: Arial, Helvetica, sans-serif;
  background-color: #222 !important;
  background-color: #fefefe;
  margin: 5% auto 15% auto; /* 5% from the top, 15% from the bottom and centered */
  border: 1px solid #888;
  width: 80%; /* Could be more or less, depending on screen size */
}
.hackCancelBtn {
  width: auto;
  padding: 10px 18px;
  background-color: #f44336;
}
#hackModal .hackClose {
  position: absolute;
  right: 25px;
  top: 0;
  color: #000;
  font-size: 35px;
  font-weight: bold;
  float: right;
  padding-top: 16px;
}
#hackModal .hackClose:hover,
#hackModal .hackClose:focus {
  color: red;
  cursor: pointer;
}
`,
        set: function(newgui) {
            $('.hackModal-content').html(`<span onclick="$('#hackModal').fadeOut('fast');" class="hackClose" title="Закрыть читерскую панель">&times;</span><div id='hackResponse'></div>`+newgui+`<button type='button' class='hackButton hackCancelBtn' onclick="$('#hackModal').fadeOut('fast');">Закрыть панель читов.</button>`);
        },
        starter: function() {
            $("body").append(gui[`start`]);
        },
        "start": `
<div id='hackModal'>
  <div class='hackModal-content'>
    <span onclick="$('#hackModal').fadeOut('fast');" class="hackClose" title="Закрыть читерскую панель">&times;</span>
    <div id='hackResponse'></div>
    <p>Выберите хак-режим который вы хотите. 1 - активность</p>
    <input type='text' class='hackInput' id='hackChoose'>
    <button type='button' class='hackButton' id='hackSubmit'>Подтвердить</button>
    <button type='button' class='hackButton hackCancelBtn' onclick="$('#hackModal').fadeOut('fast');">Закрыть панель читов.</button>
  </div>
</div>
`
    }
    const helpers = {}
    helpers.randomFloat = function(min, max) {
       return Math.floor(Math.random() * (max - min + 1) + min) * 1000 + Math.floor(Math.random() * (999 - 1 + 1) + 1);
    }
    const acts = {
        find: function(act) {
            return $("#akten").find(`a[data-id='${act}']`);
        },
        click: function(act) {
            var theact = acts.find(act);
            if (theact.html() == undefined) return false;
            theact.click();
            return true;
        }
    }
    function addCSS(a) {
        $("head").append(`<style>${a}</style>`);
    }
    function init() {
        $('.small').first().append(` | <a href="#" onclick='$("#hackModal").fadeIn("fast");'>Настройки читов</a>`);
        addCSS(gui["css"]);
        gui.starter();
        $("#hackSubmit").on("click", function() {
            var haski = $("#hackChoose").val();
            if (haski == 1) {
                hacks.location();
            }
        });
    }
    const pageurl = window.location.href;
    const isCW3 = (/^https:\/\/catwar.su\/cw3(?!(\/kns|\/jagd))/.test(pageurl));
    if (isCW3) init();
    });
})(window, jQuery);