Greasy Fork is available in English.

Item Exporter

Adds an option to export the sprites of items you right-click on.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Item Exporter
// @namespace    http://tampermonkey.net/
// @version      1
// @description  Adds an option to export the sprites of items you right-click on.
// @author       Zoltar
// @match        http://manyland.com/*
// @icon         https://cdn.discordapp.com/icons/852442189283983380/a_70793eeb1f509f9c4aa1021e5691fab4.webp
// ==/UserScript==

(function () {
    'use strict';

    // took this part from Eternity's mod
    function loadObf() {
        if (typeof Deobfuscator === 'undefined')
            return $.getScript("https://cdn.jsdelivr.net/gh/parseml/many-deobf@latest/deobf.js")
    }

    async function main() {
        ig.game.itemContextMenu.old_draw = ig.game.itemContextMenu.draw;


        let image = new Image();
        image.src = 'https://cdn.discordapp.com/attachments/614637022614782000/867213341953097769/arrow.png'
        image.onclick = () => consoleref.log('test')

        // Thank you Stackoverflow!
        function toDataURL(url) {
            return fetch(url).then((response) => {
                return response.blob();
            }).then(blob => {
                return URL.createObjectURL(blob);
            });
        }

        async function exportSprite(item) {
            ig.game.sounds.click.play();
            const a = document.createElement("a");
            a.href = await toDataURL(`${item.imageURL}.png`);
            a.download = `${item.name}.png`;
            document.body.appendChild(a);
            window.removeEventListener('click', clickArrow)
            a.click();
            document.body.removeChild(a);
            window.addEventListener('click', clickArrow)
        }

        function clickArrow(event) {
            if (ig.game.itemContextMenu.isOpen) {
                let selected = Deobfuscator.object(ig.game.itemContextMenu, 'thing');
                let spot = {
                    x1: (ig.game.itemContextMenu.pos.x + 102) * ig.system.scale,
                    y1: (ig.game.itemContextMenu.pos.y + 14) * ig.system.scale,
                    x2: ((ig.game.itemContextMenu.pos.x + 102) * ig.system.scale) + (11 * ig.system.scale),
                    y2: ((ig.game.itemContextMenu.pos.y + 14) * ig.system.scale) + (9 * ig.system.scale),
                    call: () => { exportSprite(selected.thing); }
                }

                let clickPos = { x: ig.input.mouse.x * ig.system.scale, y: ig.input.mouse.y * ig.system.scale }

                if (clickPos.x > spot.x1 && clickPos.x < spot.x2 && clickPos.y > spot.y1 && clickPos.y < spot.y2) {
                    spot.call();
                }
            }

        }

        window.addEventListener('click', clickArrow)

        ig.game.itemContextMenu.draw = () => {
            ig.game.itemContextMenu.old_draw();
            if (ig.game.itemContextMenu.isOpen) {
                ig.system.context.globalAlpha = 0.4;
                ig.system.context.drawImage(image, (ig.game.itemContextMenu.pos.x + 102) * ig.system.scale, (ig.game.itemContextMenu.pos.y + 14) * ig.system.scale, (11 * ig.system.scale), (9 * ig.system.scale));
                ig.system.context.globalAlpha = 1;
            }

        }

    }

    // Parses smooth loader
    !async function loader() {
        let loading = setInterval(async function () {
            if (typeof ig === "undefined") return
            else if (typeof ig.game === "undefined") return
            else if (typeof ig.game.screen === "undefined") return
            else if (ig.game.screen.x == 0) return
            else if (typeof Settings !== "function") return

            clearInterval(loading);
            await loadObf();
            main();
        }, 250)
    }()
})();