FLRT Tool

Free Leech Return Tradebles

当前为 2022-10-08 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name FLRT Tool
// @version 0.0.7
// @description Free Leech Return Tradebles
// @author Maidenless
// @match https://www.mousehuntgame.com/*
// @match https://apps.facebook.com/mousehunt/*
// @icon https://www.google.com/s2/favicons?domain=mousehuntgame.com
// @grant none
// @namespace https://greasyfork.org/users/748165
// ==/UserScript==

//Inject touchpoint
$(document).ready(function() {
    addTouchPoint();
});

function addTouchPoint() {
    if ($('.Mi-flrt').length == 0) {
        const injectLocation =  $(".inventory .treasure_chests") ;
        const flrtTP = document.createElement('li');
        flrtTP.classList.add('flrt_tool');
        const flrtBtn = document.createElement('a');
        flrtBtn.innerText = "FLRT Tool";
        flrtBtn.onclick = function () {
            //Render the flrt tool box
            render();
        };

        //Icon
        const icon = document.createElement("div");
        icon.className = "icon";
        flrtBtn.appendChild(icon);
        flrtTP.appendChild(flrtBtn);
        $(flrtTP).insertAfter(injectLocation);
    }
}

//Rendering the tool box
function render(){
    document
    .querySelectorAll("flrt-tool-box")
    .forEach(el =>el.remove())

    const div = document.createElement("div");
    div.id = "flrt-tool-box"
    div.style.backgroundColor = "#F5F5F5";
    div.style.position = "fixed";
    div.style.zIndex = "9999";
    div.style.left = "35vw";
    div.style.top = "20vh";
    div.style.border = "solid 3px #696969";
    div.style.borderRadius = "20px";
    div.style.padding = "10px";
    div.style.textAlign = "center";
    div.style.fontSize = "12px"

    //Header (close button)----------------------------------------------------------------------
    const toolHeader = document.createElement("div");
    toolHeader.className = "flrt-tool-header";
    toolHeader.textContent = "FLRT Tool"
    toolHeader.style.height = "21px";
    toolHeader.style.textAlign = "Left";
    toolHeader.style.marginLeft = "17px";
    toolHeader.style.fontWeight = "bold";
    toolHeader.style.cursor = "FLRT Tool Menu"

    //Close button
    const closeButton = document.createElement("button", {
        id: "close-button"
    });
    closeButton.textContent = "x"
    closeButton.style.marginLeft = "5px"
    closeButton.style.cursor = "pointer"
    closeButton.onclick = function () {
        document.body.removeChild(div); 
    }

    toolHeader.appendChild(closeButton);
    div.appendChild(toolHeader);


    //Content (Map + Hunter Id OR Friend Id)---------------------------------------------------------
    const toolContent = document.createElement("div");
    toolContent.id = "flrt-tool-content"

    //Content Table
    const contentTable = document.createElement("table");
    contentTable.id = "flrt-tool-table";
    contentTable.style.textAlign = "left";
    contentTable.style.borderSpacing = "1em 0";

    //Content 1 : Map
    const map_row = document.createElement("tr");
    const map_td1 = document.createElement("td");
    map_td1.style.textAlign = "right";
    const map_td2 = document.createElement("td");

    const map_label = document.createElement("label");
    map_label.innerText = "Map: ";
    map_td1.appendChild(map_label);

    //Map functions
    var treasureChestsList = {}
    //Gets list of treasure chests
    console.log("Accessing all treasure chests in Inventory")
    postReq("https://www.mousehuntgame.com/managers/ajax/pages/page.php",
    `sn=Hitgrab&hg_is_ajax=1&page_class=Inventory&page_arguments%5Btab%5D=special&page_arguments%5Bsub_tab%5D=all&page_arguments%5Btag%5D=treasure_chests&last_read_journal_entry_id=${lastReadJournalEntryId}&uh=${user.unique_hash}`
    ). then(res =>{
        try{
            var response = JSON.parse(res.responseText);
            //Treasure chests directory
            treasureChestsList = response.page.tabs[4]
            console.log(treasureChestsList);
            treasureChestsList = response.page.tabs[4].subtabs[0].tags[8].items
            //Loops all treasure chests in inventory
            for (var i=0; i<treasureChestsList.length; i++){
                var chestName = treasureChestsList[i].name;
                var chestType = treasureChestsList[i].chestType
                treasureChestsList[chestName] = chestType;
            }
        } catch (error){
            console.log(error)
        }
    })
    //Renders all treasure chests as OPTION type
    const map_select = document.createElement("select");
    map_select.style.wifth = "103px";
    for (let mapName in treasureChestsList){
        var option = document.createElement("OPTION");
        option.innerText = mapName;
        map_select.appendChild(option); 
    }

    //Resume map appendment 
    map_td2.appendChild(map_select);
    map_row.appendChild(map_td1);
    map_row.appendChild(map_td2);
    contentTable.appendChild(map_row);
    toolContent.appendChild(contentTable);
    div.appendChild(toolContent);
}

function postReq(url, form) {
    return new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.open("POST", url, true);
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.onreadystatechange = function () {
        if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
          resolve(this);
        }
      };
      xhr.onerror = function () {
        reject(this);
      };
      xhr.send(form);
    });
}