avatar
Untitled

Guest 213 5th Jul, 2024

MARKUP 3.63 KB
                                           
                         // ==UserScript==
// @name         Gargonem - dodatki Priweejta
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Zestaw dodatków do nowego i starego interfejsu w grze Margonem
// @author       Priw8
// @match        https://*.margonem.pl/
// @exclude      https://www.margonem.pl/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=margonem.pl
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        unsafeWindow
// ==/UserScript==

!function() {
    const window = unsafeWindow;

    const gargonemMainSrc = "https://priw8.com/margo/gargonem/dist/main.js";

    /** @type {string[]} */
    const scriptsToLoad = [gargonemMainSrc];
    const gmPrivilegedScripts = [gargonemMainSrc];

    const InterfaceKind = {
        NEW: 0,
        OLD: 1
    };
    
    /** @returns {number} */
    function getInterfaceKind() {
        return typeof window.Engine == "undefined" ? InterfaceKind.OLD : InterfaceKind.NEW;
    }

    const interfaceKind = getInterfaceKind();

    const cachedScriptMaxLifetime = 12 * 60 * 60; // 12 hours
    function getScriptVersion() {
        const lastUpdateCheck = Number(GM_getValue(`_loaderLastUpdateCheck`, "0"));
        const ts = Math.floor(new Date().getTime() / 1000);
        if (lastUpdateCheck + cachedScriptMaxLifetime < ts) {
            GM_setValue(`_loaderLastUpdateCheck`, ts.toString());
            return ts;
        } else {
            return lastUpdateCheck;
        }
    }

    const scriptVersion = getScriptVersion();

    /** @param src {string} */
    function loadScript(src) {
        const $script = window.document.createElement("script");
        if (gmPrivilegedScripts.includes(src)) {
            $script.GM_setValue = GM_setValue;
            $script.GM_getValue = GM_getValue;
            $script.GM_deleteValue = GM_deleteValue;
            $script.gargonem = true;
            $script.addScript = addScript;
        }
        $script.src = `${src}?v=${scriptVersion}`;
        return new Promise((resolve, reject) => {
            $script.addEventListener("load", resolve);
            $script.addEventListener("error", reject);
            window.document.head.appendChild($script);
        });
    }

    /** @param src {string} */
    function addScript(src) {
        scriptsToLoad.push(src);
    }

    let overwrittenFunction = null;
    let overwrittenFunctionThis = null;
    let overwrittenFunctionArgs = null;
    let wasOverwrittenFunctionCalled = false;
    function beginLoading() {
        // Block game loading until all scripts are loaded
        if (interfaceKind == InterfaceKind.OLD) {
            overwrittenFunction = window.startGame;
            window.startGame = function() {
                wasOverwrittenFunctionCalled = true;
                overwrittenFunctionThis = this;
                overwrittenFunctionArgs = arguments;
            }
        } else {
            overwrittenFunction = window.Engine.communication.startCallInitAfterRecivedAddons;
            window.Engine.communication.startCallInitAfterRecivedAddons = function() {
                wasOverwrittenFunctionCalled = true;
                overwrittenFunctionThis = this;
                overwrittenFunctionArgs = arguments;
            }
        }

        loadBatch();
    }

    function endLoading() {
        if (interfaceKind == InterfaceKind.OLD) {
... (Pozostałe wiersze: 28)
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM