Gateway Mods

This script adds some functions to speed up HP operations

Você precisará instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Você precisará instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Você precisará instalar uma extensão como o Tampermonkey para instalar este script.

Você precisará instalar um gerenciador de scripts de usuário para instalar este script.

(Eu já tenho um gerenciador de scripts de usuário, me deixe instalá-lo!)

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar uma extensão como o Stylus para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

Você precisará instalar um gerenciador de estilos de usuário para instalar este estilo.

(Eu já possuo um gerenciador de estilos de usuário, me deixar fazer a instalação!)

// ==UserScript==
// @name         Gateway Mods
// @namespace    http://www.hacker-project.com/
// @version      2.4
// @description  This script adds some functions to speed up HP operations
// @author       Kevin Mitnick
// @match        http://www.hacker-project.com/*
// @match        http://hacker-project.com/*
// @grant        none
// @require      http://code.jquery.com/jquery-latest.js
// ==/UserScript==

function setup() {
    
    // Setup jQuery
    var jQueryScript = document.createElement("script");
    jQueryScript.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js");
    document.head.appendChild(jQueryScript);
    
    // Add scripts
    var hpjsScript = document.createElement("script");
    hpjsScript.src = "https://rawgit.com/kbarnard2017/hp/master/hpjsy.js";
    hpjsScript.id = "hpjss";
    document.head.appendChild(hpjsScript);
    $("#hpjss").load(function(){ postload(); });

    // COURIER NEW FONT
    var FONT = true;

    // REMOVE DEFAULT TEXTS AND ANNOUNCEMENTS
    removeDTA();

    if (new String(window.location.href).indexOf("&a2=try_res") > -1) {
        var hasGold = document.body.innerHTML.indexOf("20% Gold discount")>-1;
        var inputTr;
        var targ = document.createElement("span");
        targ.setAttribute("class", "p");
        targ.setAttribute("id", "targ");
        var targWrap = document.createElement("tr");
        targWrap.innerHTML = "<td></td>";
        for (var i = 0; i < document.getElementsByTagName("tr").length; i++) if (document.getElementsByTagName("tr")[i].innerHTML.indexOf("Number of hours")>-1) inputTr = document.getElementsByTagName("tr")[i];
        inputTr.parentNode.appendChild(targWrap);
        targWrap.childNodes[0].appendChild(targ);
        var nr_hours = document.getElementsByName("nr_hours")[0], x_times = document.getElementsByName("x_times")[0];
        nr_hours.addEventListener("keyup", function(){calcCost(hasGold)}, false);
        x_times.addEventListener("keyup", function(){calcCost(hasGold)}, false);
        calcCost(hasGold);
    }

    if (new String(window.location.href).indexOf("&a2=run") > -1) {

        // EXPERIMENTAL FEATURE. CAUSES EXTRA LOAD TIME FOR PROCESS PAGE. COMMENT OUT IF YOU WANT TO DISABLE
        // addProcs();

        $(document).ready(function() {
            var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
            for (var numberOfRows = table.rows.length, i = 3; i<numberOfRows-2; i++) {
                var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i];
                var tds = tr.getElementsByTagName("td");
                var content = tds[4].innerHTML;
                var owned = (content.indexOf("Owned")>-1);
                var complete = (content.indexOf("complete")>-1);
                var virus = (content.indexOf("virii")>-1);
                if (owned) tr.style.backgroundColor="#285166";
                if (virus && !owned) tr.style.backgroundColor="#8A0000";
                if (virus && owned) tr.style.backgroundColor="#511400";
                if (owned && complete) tr.style.backgroundColor="#004400";
            }
        });
    }

    if (new String(window.location.href).indexOf("&a2=files") > -1) {

        // Batch script
        var batchScript = document.createElement("script");
        batchScript.setAttribute("type", "text/javascript");
        batchScript.innerHTML = "function runPWB(pid, times, rem) { for (var i = 0; i < times; i++) { var iframe = document.createElement('iframe'); iframe.src = 'index.php?action=gate&a2=run&pid='+pid+'&rem='+rem; iframe.style.display='none'; document.body.appendChild(iframe); } }";
        document.body.appendChild(batchScript);

        // Spec scan
        var psWindow = document.createElement("iframe");
        psWindow.src="/index.php?action=gate&a2=run";
        if (new String(window.location.href).indexOf("&rem=1")>-1) psWindow.src += "&rem=1";
        psWindow.style.display="none";
        psWindow.id = "psWindow";
        document.body.appendChild(psWindow);

        $("#psWindow").load(function() {
            var dc = psWindow.contentWindow.document || psWindow.contentDocument || psWindow.document;
            var dctds = dc.getElementsByTagName("td");
            var specTd;
            for (var dci = 0; dci < dctds.length; dci++) if (dctds[dci].getElementsByTagName("span").length==10) specTd = dctds[dci];
            var specSpans = specTd.getElementsByTagName("span");
            var usedCpu = parseFloat(removeComma(specSpans[1].innerHTML));
            var totalCpu = parseFloat(removeComma(specSpans[2].innerHTML));
            var usedMem = parseFloat(removeComma(specSpans[4].innerHTML));
            var totalMem = parseFloat(removeComma(specSpans[5].innerHTML));
            var usedBand = parseFloat(removeComma(specSpans[7].innerHTML));
            var totalBand = parseFloat(removeComma(specSpans[8].innerHTML));
            var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
            table.getElementsByTagName("tbody")[0].appendChild(specTd);
            var itd = document.createElement("td");
            itd.innerHTML = "Executable";
            itd.width="100";
            table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[2].appendChild(itd);
            for (var numberOfRows = table.rows.length, i = 1; i<numberOfRows-3; i++) {
                var itd2 = document.createElement("td");
                itd.width="100";
                var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i*3];
                var tds = tr.getElementsByTagName("td");
                var versionPoint = 11;
                if (tds[11].innerHTML=="Password Break") versionPoint = 13;
                var content = tds[versionPoint].getElementsByTagName("small")[0].innerHTML;
                var cpuNeed = parseFloat(content.substring(0, content.indexOf(" M")));
                var memNeed = parseFloat(content.substring(content.indexOf("U, ")+3, content.indexOf(" k")));
                var bandNeed = 0;
                if (content.indexOf("Band")>-1) bandNeed = parseFloat(content.substring(content.indexOf("M, ")+3, content.length));
                itd2.innerHTML = "<b><p style='color: red'>No</p></b>";
                if (cpuNeed<=totalCpu-usedCpu+50 && memNeed<=totalMem-usedMem+3072 && bandNeed<=totalBand-usedBand+1) itd2.innerHTML = "<b><p style='color: green'>Yes</p></b>";
                tr.appendChild(itd2);
            }
            if (FONT) for (var x = 0; x < document.getElementsByTagName("td").length; x++) document.getElementsByTagName("td")[x].style.fontFamily="Courier New";
        });

        var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
        for (var numberOfRows = table.rows.length, i = 1; i<numberOfRows-3; i++) {
            var tr = table.getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i*3];
            var tds = tr.getElementsByTagName("td");
            var filename = tds[9].innerHTML;
            var versionPoint = 11;
            if (filename == "Password Break") versionPoint = 11;
            var version = parseFloat(tds[versionPoint].innerHTML);

            // File type testing and calculations
            var usages = getUsages(filename, version);
            var hd, cpu, mem, band;
            hd = usages[0];
            cpu = usages[1];
            mem = usages[2];
            band = usages[3];
            // Values are exact for file version

            if (band===0) tds[versionPoint].innerHTML += ("<br/><small class='pi'> "+Math.round(cpu)+" MHz CPU, "+Math.round(mem)+" kB RAM</small>");
            else tds[versionPoint].innerHTML += ("<br/><small class='pi'> "+Math.round(cpu)+" MHz CPU, "+Math.round(mem)+" kB RAM, "+band+" kB/s Bandwidth</small>");

            if (filename == "Password Break") {
                var buttonBox = tds[0];
                var buttonBody = buttonBox.getElementsByTagName("tbody")[0];

                var tad1 = document.createElement("td");
                buttonBody.getElementsByTagName("tr")[0].appendChild(tad1);

                var tad2 = document.createElement("td");
                buttonBody.getElementsByTagName("tr")[1].appendChild(tad2);

                var bbutton = document.createElement("a");
                bbutton.innerHTML = "Batch";
                var bhref = buttonBody.getElementsByTagName("a")[0].getAttribute("href");
                var pid = bhref.substring(bhref.indexOf("pid=")+4);
                var rem = 0;
                if (bhref.indexOf("rem=1") > -1) rem = 1;
                var inputBox = document.createElement("input");
                inputBox.setAttribute("type", "number");
                inputBox.style.width = "50px";
                inputBox.id = "mpwb"+pid;
                tad1.appendChild(inputBox);
                bbutton.setAttribute("href", "javascript: runPWB("+pid+", document.getElementById('mpwb"+pid+"').value, "+rem+")");
                tad2.appendChild(bbutton);
            }
        }

    }

    if (new String(window.location.href).indexOf("?action=soft_type") > -1) {

        var inputBox = document.createElement("input");
        inputBox.type = "number";
        inputBox.id = "stinp";
        inputBox.placeholder = "Version";
        inputBox.value = "0.1";

        var tbodies = document.getElementsByTagName("tbody");
        var tb;
        for (var i = 0; i < tbodies.length; i++) if (tbodies[i].getElementsByTagName("td")[0].innerHTML.indexOf("Software")>-1) tb = tbodies[i];
        tb.id = "tbik";
        tb.insertBefore(inputBox, tb.getElementsByTagName("tr")[1]);
        tb.setAttribute("onkeyup", "updateSoftware(document.getElementById('stinp').value, document.getElementById('tbik').getElementsByTagName('tr'))");
        
    }

    if (FONT) for (var x = 0; x < document.getElementsByTagName("td").length; x++) document.getElementsByTagName("td")[x].style.fontFamily="Courier New";
}
function updateSoftware(version, trs) {
    for (var i = 3; i < trs.length-1; i++) {
        var tds = trs[i].getElementsByTagName("td");
        var filename = tds[0].innerHTML;
        var usages = getUsages(filename, version);
        tds[2].innerHTML = parseFloat(usages[1]).toFixed(0);
        tds[3].innerHTML = parseFloat(usages[2]).toFixed(0);
        tds[4].innerHTML = parseFloat(usages[3]).toFixed(0);
        tds[5].innerHTML = parseFloat(usages[0]).toFixed(0);
    }
}
function removeComma(str) {
    while (str.indexOf(",") > -1) {
        var index = str.indexOf(",");
        var first = str.substring(0, index);
        var last = str.substring(index + 1, str.length);
        str = first + last;
    }
    return str;
}
function addProcs() {
    var toAdd = [];
    var parent = document;
    recurAdd(parent, toAdd);
}
function recurAdd(parent, toAdd) {
    var nextButton;
    var as = parent.getElementsByTagName("a");
    for (var i = 0; i < as.length; i++) if (as[i].childNodes[0].nodeValue == "Next") nextButton = as[i];
    var nBHref = nextButton.href;
    var table = parent.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
    var numProcs = 0;
    for (var numberOfRows = table.rows.length, i = 3; i<numberOfRows-2; i++) {
        if (parent != document) toAdd.push(table.getElementsByTagName("tr")[i]);
        numProcs++;
    }
    if (numProcs > 0) {
        var nextFrame = parent.createElement("iframe");
        nextFrame.src = nBHref+"&disable=1";
        nextFrame.style.display="none";
        nextFrame.onload = function() {
            recurAdd(nextFrame.contentWindow.document, toAdd);
        };
        parent.body.appendChild(nextFrame);
    }
    else {
        for (var i = 0; i < toAdd.length; i++) {
            var newNode = document.importNode(toAdd[i], true);
            var table = document.getElementsByName("frm_files")[0].getElementsByTagName("table")[0];
            var trs = table.getElementsByTagName("tr");
            var beforeNode;
            for (var l = 0; l < trs.length; l++) if (trs[l].innerHTML.indexOf("Tasks")>-1) beforeNode = trs[l];
            table.getElementsByTagName("tbody")[0].insertBefore(newNode, beforeNode);
        }
    }
}
function calcCost(gold) {
    var nr_hours = document.getElementsByName("nr_hours")[0], x_times = document.getElementsByName("x_times")[0], targ = document.getElementById("targ");
    var hours = nr_hours.value;
    var times = x_times.value;
    var mult = 100;
    if (gold) mult = 80;
    targ.innerHTML = "Estimated cost: "+hours*times*mult+" HPD";
}
function getUsages(filename, version) {
    var hd = 0, cpu = 0, mem = 0, band = 0;
    switch (filename) {
        case "Firewall Protect":{  hd = 7.50;  mem = 3000;  cpu = 50;  band = 0; break; }
        case "Firewall Bypass":{  hd = 37.50;  mem = 7000;  cpu = 80;  band = 0; break; }
        case "Password Protect":{  hd = 8.50;  mem = 5000;  cpu = 100;  band = 0; break; }
        case "Password Break":{  hd = 84.96;  mem = 12500;  cpu = 200;  band = 0; break; }
        case "Hide Files":{  hd = 100.00;  mem = 9000;  cpu = 100;  band = 0; break; }
        case "Unhide Files":{  hd = 200.00;  mem = 9000;  cpu = 100;  band = 0; break; }
        case "Encryptor":{  hd = 341.80;  mem = 30000;  cpu = 600;  band = 0; break; }
        case "Decryptor":{  hd = 439.45;  mem = 40000;  cpu = 900;  band = 0; break; }
        case "SpyWare":{  hd = 50.00;  mem = 900;  cpu = 300;  band = 0; break; }
        case "Anti-SpyWare":{  hd = 100.00;  mem = 22500;  cpu = 150;  band = 0; break; }
        case "Malware Logic Bomb":{  hd = 585.94;  mem = 5000;  cpu = 300;  band = 0; break; }
        case "Malware Overload Bomb":{  hd = 976.56;  mem = 7000;  cpu = 550;  band = 0; break; }
        case "Malware Anti-Virus":{  hd = 200.00;  mem = 1500;  cpu = 300;  band = 0; break; }
        case "Adware Spam Daemon":{  hd = 100.00;  mem = 5000;  cpu = 50;  band = 3; break; }
        case "Adware Anti-Virus":{  hd = 174.22;  mem = 10000;  cpu = 250;  band = 0; break; }
        case "File Share Virus":{  hd = 3200.00;  mem = 10000;  cpu = 250;  band = 50; break; }
        case "File Share Anti-Virus":{  hd = 1000.00;  mem = 20000;  cpu = 500;  band = 0; break; }
        case "Sniffer Daemon":{  hd = 151.17;  mem = 3000;  cpu = 50;  band = 0; break; }
        case "IP Cloaker":{  hd = 151.17;  mem = 6000;  cpu = 100;  band = 0; break; }
        case "IP Scanner":{  hd = 369.53;  mem = 10000;  cpu = 200;  band = 0; break; }
        case "Scan Blocker":{  hd = 200.00;  mem = 10000;  cpu = 200;  band = 0; break; }
        case "Data uplink hijack":{  hd = 395.31;  mem = 20000;  cpu = 300;  band = 0; break; }
        case "Data hijack Anti-Virus":{  hd = 200.00;  mem = 30000;  cpu = 500;  band = 0; break; }
        case "Log Deleter":{  hd = 5.00;  mem = 1000;  cpu = 30;  band = 0; break; }
        case "Log UnDeleter":{  hd = 15.00;  mem = 3000;  cpu = 50;  band = 0; break; }
        case "Virus breaker":{  hd = 174.21;  mem = 11500;  cpu = 300;  band = 0; break; }
        case "Faith Anti-Virus":{  hd = 20000.00;  mem = 1200000;  cpu = 20000;  band = 0; break; }
        case "Virus Identifier":{  hd = 17.42;  mem = 1150;  cpu = 30;  band = 0; break; }
        case "Process Tracer":{  hd = 174.22;  mem = 92000;  cpu = 2400;  band = 0; break; }
        case "Revelation Virus":{  hd = 20000.00;  mem = 600000;  cpu = 10000;  band = 400; break; }
        case "Robber Baron Virus":{  hd = 96000.00;  mem = 300000;  cpu = 7500;  band = 1500; break; }
        case "Robber Baron Anti-Virus":{  hd = 30000.00;  mem = 600000;  cpu = 15000;  band = 0; break; }
        case "Remote Attack Disruptor":{  hd = 174.22;  mem = 92000;  cpu = 2400;  band = 0; break; }
        case "IP Leech":{  hd = 75.00;  mem = 1350;  cpu = 450;  band = 0; break; }
        case "IP Leech Anti-Virus":{  hd = 150.00;  mem = 21600;  cpu = 225;  band = 0; break; }
        case "Remote Virus Injector":{  hd = 4000.00;  mem = 125000;  cpu = 2500;  band = 2; break; }
        case "RV Injector Anti-Virus":{  hd = 4000.00;  mem = 250000;  cpu = 5000;  band = 0; break; }
        case "Overload Signer":{  hd = 174.21;  mem = 92000;  cpu = 2400;  band = 0; break; }
        case "Mutant Revelation Virus":{  hd = 96000.00;  mem = 3000000;  cpu = 50000;  band = 2000; break; }
        case "MutantR Accelerator":{  hd = 174.21;  mem = 92000;  cpu = 2400;  band = 100; break; }
        case "MutantR Decelerator":{  hd = 174.21;  mem = 278000;  cpu = 9600;  band = 0; break; }
        case "MutantR Acc Stopper":{  hd = 174.21;  mem = 46000;  cpu = 1200;  band = 0; break; }
        case "MutantR Dec Stopper":{  hd = 174.21;  mem = 46000;  cpu = 1200;  band = 0; break; }
    }
    hd *= version/0.1;
    mem *= version/0.1;
    cpu *= version/0.1;
    band *= version/0.1;
    band = band.toFixed(2);
    var usages = [hd, cpu, mem, band];
    return usages;
}
function removeDTA() {
    var as = document.getElementsByTagName("a");
    var spls = [];
    for (var i = 0; i < as.length; i++) if (as[i].getAttribute("href").indexOf("action=support")>-1 || as[i].getAttribute("href").indexOf("affiliate")>-1) spls.push(as[i]);
    var cont = spls.length==3;
    if (cont) {
        spls[2].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(spls[2].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode);
        var fs = document.getElementsByTagName("fieldset")[0];
        if (new String(document.location.href).indexOf("?action=gate")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=ip_db")>-1) {
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=manage_tr")>-1) {
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=ability")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=software")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=hardware")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("&action=pvp_board")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=messages")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=finances")>-1) {
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=research")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=stock_market")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=mission")>-1) {
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=faction")>-1) {
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
            fs.removeChild(fs.childNodes[2]);
        }
        if (new String(document.location.href).indexOf("?action=friend_list")>-1) {
            fs.removeChild(fs.childNodes[2]);
        }
    }
}
if (new String(window.location.href).indexOf("&disable=1")<0) setup();