checkArtsBeforeBattle

checking all equip before going to battle

// ==UserScript==
// @name         checkArtsBeforeBattle
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  checking all equip before going to battle
// @author       Salmon
// @license      MIT
// @include      https://my.lordswm.com/*
// @include      https://www.heroeswm.ru/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

(function () {
    "use strict";

    const createEl = (el, style, innerText, className, placeholder) => {
        let element = document.createElement(el);
        if (style) element.style = style;
        if (innerText) element.innerText = innerText;
        return element;
    };

    const eventTypes = ["hunt", "event"];

    const settingsObj = JSON.parse(localStorage.getItem('settingsObjectCheckArtsBeforeBattle'));
    if (settingsObj === null) {
        localStorage.setItem('settingsObjectCheckArtsBeforeBattle', JSON.stringify({ bag: true }));
        location.reload();
    }

    let dataFromSettingsObj = settingsObj.bag;

    let language = navigator.language;
    if (language) language = language.split("-")[0];

    const languages = ["ru", "en", "uk"];
    if (!languages.includes(language)) language = "en";

    const links = ["https://my.lordswm.com", "https://www.heroeswm.ru"];
    const link = location.href.includes("lordswm") ? links[0] : links[1];

    const fetch_xml = (el, path) => {
        const xhr = new XMLHttpRequest();
        xhr.open("get", `${link}/home.php`);
        xhr.setRequestHeader("Content-type", "text/html; charset=windows-1251");
        if (xhr.overrideMimeType) {
            xhr.overrideMimeType("text/html; charset=windows-1251");
        }

        xhr.addEventListener("load", () => {
            var parser = new DOMParser();
            var doc = parser.parseFromString(xhr.responseText, "text/html");

            let equippedArtsCount = 0;
            const notEquipped = [];

            const head = {
                name: { en: "helmet", uk: "шолом", ru: "шлем" },
                check: doc.getElementById("slot1"),
            };
            const neck = {
                name: { en: "amulet", uk: "амулет", ru: "кулон" },
                check: doc.getElementById("slot2"),
            };
            const torso = {
                name: { en: "armor", uk: "броня", ru: "броня" },
                check: doc.getElementById("slot3"),
            };
            const back = {
                name: { en: "back", uk: "спина", ru: "спина" },
                check: doc.getElementById("slot4"),
            };
            const rHand = {
                name: { en: "right hand", uk: "права рука", ru: "правая рука" },
                check: doc.getElementById("slot5"),
            };
            const lHand = {
                name: { en: "left hand", uk: "ліва рука", ru: "левая рука" },
                check: doc.getElementById("slot6"),
            };
            const boots = {
                name: { en: "boots", uk: "ноги", ru: "сапоги" },
                check: doc.getElementById("slot7"),
            };
            const hRing = {
                name: { en: "first ring", uk: "перше кільце", ru: "первое кольцо" },
                check: doc.getElementById("slot8"),
            };
            const lRing = {
                name: { en: "second ring", uk: "друге кільце", ru: "второе кольцо" },
                check: doc.getElementById("slot9"),
            };
            const bag = {
                name: { en: "Bag", uk: "Сумка", ru: "Сумка" },
                check: doc.getElementById("slot10"),
            };
            const mirror = {
                name: { en: "Mirror", uk: "Дзеркало", ru: "Зеркало" },
                check: doc.getElementById("slot11"),
            };

            const mirrorInnerText = { en: "", uk: "", ru: "" };
            if (mirror.check.innerText == "") {
                mirrorInnerText.en = "Mirror is not equipped!";
                mirrorInnerText.uk = "Дзеркало не одягнуто!";
                mirrorInnerText.ru = "Зеркало не надето!";
            } else {
                mirrorInnerText.en = "Mirror is equipped";
                mirrorInnerText.uk = "Дзеркало одягнуто";
                mirrorInnerText.ru = "Зеркало надето";
            }

            const bagInnerText = { en: "", uk: "", ru: "" };
            if (bag.check.innerText == "") {
                bagInnerText.en = "Bag is not equipped!";
                bagInnerText.uk = "Сумку не одягнуто!";
                bagInnerText.ru = "Сумка не надета!";
            } else {
                bagInnerText.en = "Bag is equipped";
                bagInnerText.uk = "Сумку одягнуто";
                bagInnerText.ru = "Сумка надета";
            }

            const mainArtText = {
                en: "Equipped: ",
                uk: "Артів одягнуто: ",
                ru: "Артов надето: ",
            };
            const notEquippedArtText = {
                en: "Not equipped: ",
                uk: "Не одягнуто: ",
                ru: "Не надето: ",
            };

            const mirrorStyle =
                  mirror.check.innerText == ""
            ? "color: red; font-size: 12px; cursor: pointer"
            : "color: green;font-size: 12px";
            const bagStyle =
                  bag.check.innerText == ""
            ? "color: red;font-size: 12px; cursor: pointer"
            : "color: green;font-size: 12px";

            const arts = [head, neck, torso, back, rHand, lHand, boots, hRing, lRing];

            arts.forEach((art) => {
                if (art.check.innerText !== "") {
                    equippedArtsCount += 1;
                } else {
                    notEquipped.push(art.name[language]);
                }
            });

            const wrapper = createEl("div", `${path === "event" ? "display: flex; gap: 5px" : ""}`);
            const mainArtsBlock = createEl(
                "div",
                `${
          equippedArtsCount < 9
            ? "color: red; cursor: pointer; font-size: 12px"
            : "color: green; font-size: 12px"
            }`,
            `${mainArtText[language]} ${equippedArtsCount}/9`
      );
            const notEquippedBlock = createEl(
                "div",
                "font-size: 12px; color: red; cursor: pointer",
                `${
          equippedArtsCount < 9
            ? `${notEquippedArtText[language]} ${notEquipped}`
            : ""
            }`
      );
            const mirrorBlock = createEl(
                "div",
                mirrorStyle,
                mirrorInnerText[language]
            );
            const bagBlock = createEl("div", bagStyle, bagInnerText[language]);
            bagBlock.style.display = dataFromSettingsObj ? "block" : "none";

            const settingsBlock = createEl("div", "cursor: pointer;", "👜");
            settingsBlock.addEventListener("click", () => {
                dataFromSettingsObj = !dataFromSettingsObj;
                bagBlock.style.display = dataFromSettingsObj ? "block" : "none";
                localStorage.setItem('settingsObjectCheckArtsBeforeBattle', JSON.stringify({ bag: dataFromSettingsObj }));
            })

            wrapper.append(mainArtsBlock);
            wrapper.append(notEquippedBlock);
            wrapper.append(mirrorBlock);
            wrapper.append(bagBlock);
            wrapper.addEventListener("click", () => {
                location.href = `${link}/inventory.php`;
            });

            if (path === "event") {
                el.style.gap = "3px";
                el.style.display = "flex";
                el.innerHTML = "";
                el.append(wrapper);
                el.append(settingsBlock);
            } else {
                el.append(wrapper);
                el.append(settingsBlock);
            }
        });
        xhr.send();
    };
    if (location.href.includes("pvp_guild")) {
        const h2 = [...document.getElementsByTagName("h2")][0];
        fetch_xml(h2, "");
    }

    if (location.href.includes("event") || location.href.includes("hunt")) {
        const eventHeader = document.getElementsByClassName(
            "global_container_block_header"
        )[0];
        fetch_xml(eventHeader, "event");
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址