Greasy Fork is available in English.

HWM_MGBigMoveSectorButton

Добавляет большую кнопку перехода в район задания ГН (с возможностью мгновенного перехода)

// ==UserScript==
// @name         HWM_MGBigMoveSectorButton
// @namespace    Небылица
// @version      1.0
// @description  Добавляет большую кнопку перехода в район задания ГН (с возможностью мгновенного перехода)
// @author       Небылица
// @include      /^https{0,1}:\/\/((www|qrator)\.heroeswm\.ru|178\.248\.235\.15)\/mercenary_guild\.php/
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    "use strict";

    function insertAfter(newNode, referenceNode){ // Вставка newNode после referenceNode
        referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
    }

    var documentInnerHTHL = document.documentElement.innerHTML,
        taskAvaible = documentInnerHTHL.indexOf("минут") !== -1 && documentInnerHTHL.indexOf("Принять") === -1 && documentInnerHTHL.indexOf("Вы еще не приняли это задание") === -1;

    // создаём чекбокс автоперехода и подпись к нему, добавляем после кнопки
        var autoMoveCheckboxDiv = document.createElement("div"),
            autoMoveCheckbox = document.createElement("input"),
            autoMoveCheckboxLabelSpan = document.createElement("span"),
            faceImage = document.querySelector("img[width='150'][height='150']");

        autoMoveCheckboxDiv.setAttribute("id", "autoMoveCheckboxDiv");
        autoMoveCheckboxDiv.style.textAlign = "center";
        autoMoveCheckboxDiv.style.margin = "7px 0px 7px 0px";

        autoMoveCheckbox.setAttribute("type", "checkbox");
        autoMoveCheckbox.setAttribute("id", "autoMoveCheckbox");
        autoMoveCheckbox.style.margin = "0px 1px 0px 0px";
        if (GM_getValue("autoMove")){
            autoMoveCheckbox.checked = true;
        }

        autoMoveCheckboxLabelSpan.setAttribute("id", "autoMoveCheckboxLabelSpan");
        autoMoveCheckboxLabelSpan.innerText = "Отправляться сразу";
        autoMoveCheckboxLabelSpan.style.verticalAlign = "top";

        autoMoveCheckboxDiv.appendChild(autoMoveCheckbox);
        autoMoveCheckboxDiv.appendChild(autoMoveCheckboxLabelSpan);
        insertAfter(autoMoveCheckboxDiv, faceImage);

        // записываем настройку по изменению чекбокса и сразу переходим, если чекнули
        autoMoveCheckbox.onchange = function(){
            GM_setValue("autoMove", autoMoveCheckbox.checked);
            if (taskAvaible && autoMoveCheckbox.checked){
                document.getElementById("moveSectorButton").click();
            }
        };

    // если есть принятое задание
    if (taskAvaible){
        // задаём и описываем кнопку, вспомогательный элемент и вставляем её перед ним
        var moveSectorButtonDiv = document.createElement("div"),
            moveSectorButton = document.createElement("button"),
            otherSectorDelta = (documentInnerHTHL.indexOf("Вы находитесь в другом районе") === -1) ? 0 : 1,
            hrForInsertingBefore = document.querySelectorAll("hr[width='90%']")[0 + otherSectorDelta];

        moveSectorButton.setAttribute("id", "moveSectorButton");
        moveSectorButton.innerText = "Отправиться в путь!";

        moveSectorButton.setAttribute("height", "100px");
        moveSectorButton.setAttribute("width", "50px");
        moveSectorButtonDiv.style.textAlign = "center";
        moveSectorButtonDiv.style.margin = "-10px 0px 10px 0px";

        hrForInsertingBefore.parentNode.insertBefore(moveSectorButtonDiv, hrForInsertingBefore);
        moveSectorButtonDiv.appendChild(moveSectorButton);

        // привязываем событие клика
        moveSectorButton.onclick = function(){
            window.open(document.querySelector("a[href^='move_sector.php?id=']").getAttribute("href"), "_self")
        };

        // осуществляем автопереход, если задан
        if (GM_getValue("autoMove")){
            moveSectorButton.click();
        }
    }
})();