MH King's Crowns+

Platinum Corwns, Locked Favorites, and More!

目前為 2019-04-10 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         MH King's Crowns+
// @author       Ben Loll - Warden Slayer#2302
// @namespace    https://greasyfork.org/en/users/227259-wardenslayer
// @version      1.2
// @description  Platinum Corwns, Locked Favorites, and More!
// @include      https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @include      http://www.mousehuntgame.com/*
// @include      https://www.mousehuntgame.com/*
// ==/UserScript==
//===================================================================================
$(document).ready(function() {
   var observer = new MutationObserver(callback);
   var observerOptions = {
        childList: true,
        attributes: false,
        subtree: false,
      };
   observer.observe($("#tabbarContent_page_2").get(0), observerOptions);
});
//
function callback(mutationList, observer) {
     mutationList.forEach((mutation) => {
       switch(mutation.type) {
         case 'childList':
            console.log("Mutation",localStorage.getItem('haltCode'))
            if (localStorage.getItem('haltCode') == "Y") {
                localStorage.setItem('haltCode', "N")
                break;
            }
            buildToolbar()
            if (localStorage.getItem('ShowAllCrowns') == "Y") {
                buildCrownHeaders();
                sortCrowns();
                localStorage.setItem('haltCode', "Y");
            }
            break;
          }
     })
};
//
function buildToolbar(){
    //If we already have an hideLe Section, do not make another
    if ($('.toolBar').length > 0)
        return;
    var toolBar = document.createElement("div");
    toolBar.classList.add('toolBar')
    //Lock Favs Cb
    var lockFavs = document.createElement('input');
    lockFavs.type = "checkbox";
    lockFavs.name = "lockFavs";
    lockFavs.value = "";
    lockFavs.id = "lockFavs";
    if (localStorage.getItem('LockFavs') == "Y") {
      lockFavs.checked = "Yes";
    } else {
      lockFavs.checked = "";
    }
    var lockFavsLabel = document.createElement('label')
    lockFavsLabel.htmlFor = "lockFavsLabel";
    lockFavsLabel.appendChild(document.createTextNode('Lock Favorites'));
    toolBar.appendChild(lockFavs);
    toolBar.appendChild(lockFavsLabel);
    //All Crowns Cb
    var showAllCrowns = document.createElement('input');
    showAllCrowns.type = "checkbox";
    showAllCrowns.name = "showAllCrowns";
    showAllCrowns.value = "";
    showAllCrowns.id = "showAllCrowns";
    showAllCrowns.checked = "";
     if (localStorage.getItem('ShowAllCrowns') == "Y") {
      showAllCrowns.checked = "Yes";
    } else {
      showAllCrowns.checked = "";
    }
    var showAllCrownsLabel = document.createElement('label')
    showAllCrownsLabel.htmlFor = "showAllCrownsLabel";
    showAllCrownsLabel.appendChild(document.createTextNode('Show Community Crowns'));
    toolBar.appendChild(showAllCrowns);
    toolBar.appendChild(showAllCrownsLabel);
    //last
    var crownBreak = $(".crownbreak").first();
    if ($(".crownheader.crownheadertop").length < 1) {
        var header = $(".crownbreak").last().clone();
        header.insertBefore($(".crownheader.crownheadergold"))
        crownBreak = $(header);
        }
    crownBreak.append(toolBar)
    $(".toolBar").css({"float":"right"})
};
//================================= Lock Favs ====================================
//
$(document).on('change', '#lockFavs', function() {
   if ((window.location.href).includes("profile.php")&&$("#tabbarContent_page_2").hasClass("active")) {
      //
       //check to see if the cb was JUST checked
      if(this.checked) {
         // Put the checked value into storage
         localStorage.setItem('LockFavs', "Y");
         lockFavs.checked = "Yes";
         lockFavorites();
       } else {
         // Put the checked value into storage
         localStorage.setItem('LockFavs', "N");
         lockFavs.checked = "";
         unlockFavorites();
       }
   }
});
//
function lockFavorites(){
  var allMice = $(".favoriteCrownToggle.crownAction");
  //var cloneMice = allMice.clone(true)
  allMice.off("click");
}
function unlockFavorites(){
  var allMice = $(".favoriteCrownToggle.crownAction");
  allMice.on("click");
}
//================================== Crowns =====================================
//
$(document).on('change', '#showAllCrowns', function() {
   if ((window.location.href).includes("profile.php")&&$("#tabbarContent_page_2").hasClass("active")) {
      //
       //check to see if the cb was JUST checked
      if(this.checked) {
         // Put the checked value into storage
         localStorage.setItem('ShowAllCrowns', "Y");
         showAllCrowns.checked = "Yes";
         buildCrownHeaders();
         sortCrowns();
       } else {
         // Put the checked value into storage
         localStorage.setItem('ShowAllCrowns', "N");
         showAllCrowns.checked = "";
         hideCrowns();
       }
   }
});
//
function buildCrownHeaders () {
        var crownBreak = $(".crownbreak").first();
        var spacer1 = $(".crownbreak").last().clone().attr('id', 'spacer1');
        var spacer2 = spacer1.clone().attr('id', 'spacer2');
        var spacer3 = spacer1.clone().attr('id', 'spacer3');
        var platinumHeader = $("<div class='crownheader crownheaderplatinum'>Platinum Crowns <span class='crownquantity'></span> <div class='crownnote'>Earned at 1000 catches</div></div>")
        var diamondHeader = $("<div class='crownheader crownheaderdiamond'>Diamond Crowns <span class='crownquantity'></span> <div class='crownnote'>Earned at 2500 catches</div></div>")
        var masterHeader = $("<div class='crownheader crownheadermaster'>Master Crowns <span class='crownquantity'></span> <div class='crownnote'>Earned at 5000 catches</div></div>")
        //Add Larry Later <10
        //
        //Plat
        var allMice = $(".mousebox");
        var allGold = allMice.find(".numcatches.gold");
        if (allGold.filter(function(index){
            if($(this).text() >= 600){
            return true;
            } else {
            return false;
            }
        }).length > 0 && $(".crownheader.crownheaderplatinum").length < 1) {
        platinumHeader.insertAfter(crownBreak);
        spacer3.insertAfter(platinumHeader);
        }
        //Diamond
        if (allGold.filter(function(index){
            if($(this).text() >= 800){
            return true;
            } else {
            return false;
            }
        }).length > 0 && $(".crownheader.crownheaderdiamond").length < 1) {
        diamondHeader.insertAfter(crownBreak);
        spacer1.insertAfter(diamondHeader);
        }
        //Master
        if (allGold.filter(function(index){
            if($(this).text() >= 900){
            return true;
            } else {
            return false;
            }
        }).length > 0 && $(".crownheader.crownheadermaster").length < 1) {
        masterHeader.insertAfter(crownBreak);
        spacer2.insertAfter(masterHeader);
        }
        
}
function sortCrowns() {
    //Plat
    if ($(".crownheader.crownheaderplatinum").length > 0) {
        sortPlatinum()
    }
    //Diamond
    if ($(".crownheader.crownheaderdiamond").length > 0) {
        sortDiamond()
    }
    //Master
    if ($(".crownheader.crownheadermaster").length > 0) {
        sortMaster()
    }
    //Favorites
    if ($(".crownheader.crownheadertop").length > 0) {
        sortFavotitesAfterSort()
    }
    //================
    }
function sortPlatinum() {
    var allMice = $(".mousebox");
    var allGold = allMice.find(".numcatches.gold");
    var allPlatinum = allGold.filter(function(index) {
        if ($(this).text() >= 600 && $(this).parent().parent().parent().attr("data-action") === "addFavoriteCrown") {
            return true;
        } else if ($(this).text() >= 600 && $(".mousebox").length > 0) {
            return true;
        } else   {
            return false;
        }
    })
    if($(".mousebox").length > 0) {
        allPlatinum = allPlatinum.parent().parent().not(".mousebox.favorite");
    } else {
        allPlatinum = allPlatinum.parent().parent().parent();
    }
    var platinumHeader = $(".crownheader.crownheaderplatinum")
    var goldHeader = $(".crownheader.crownheadergold")
    allPlatinum.insertAfter(platinumHeader);
    allPlatinum.find(".numcatches.gold").removeClass("numcatches gold").addClass("numcatches plat");
    localStorage.setItem('PlatCrownCount', allPlatinum.length);
    var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
    goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-localStorage.getItem('PlatCrownCount'))+")")
    platinumHeader.find(".crownquantity").text("("+localStorage.getItem('PlatCrownCount')+")")
    //var img = <a href="https://imgbb.com/"><img src="https://i.ibb.co/BfGw6Rj/crown-platinum.png" alt="crown-platinum" border="0" /></a>
    platinumHeader.css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat left top");
    $(".numcatches.plat").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
}
function sortDiamond() {
    var allMice = $(".mousebox");
    var allPlat = allMice.find(".numcatches.plat");
    var allDiamond = allPlat.filter(function(index) {
        if ($(this).text() >= 800 && $(this).parent().parent().parent().attr("data-action") === "addFavoriteCrown") {
            return true;
        } else if ($(this).text() >= 800 && $(".mousebox").length > 0) {
            return true;
        } else {
            return false;
        }
    })
    if($(".mousebox").length > 0) {
        allDiamond = allDiamond.parent().parent().not(".mousebox.favorite");
    } else {
        allDiamond = allDiamond.parent().parent().parent();
    }
    var diamondHeader = $(".crownheader.crownheaderdiamond")
    var platinumHeader = $(".crownheader.crownheaderplatinum")
    allDiamond.insertAfter(diamondHeader);
    allDiamond.find(".numcatches.plat").removeClass("numcatches plat").addClass("numcatches diamond");
    localStorage.setItem('DiamondCrownCount', allDiamond.length);
    localStorage.setItem('PlatCrownCount',parseInt(localStorage.getItem('PlatCrownCount'),10)-allDiamond.length);
    platinumHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('PlatCrownCount'),10)+")")
    diamondHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('DiamondCrownCount'),10)+")")
    //var img = <a href="https://imgbb.com/"><img src="https://i.ibb.co/BfGw6Rj/crown-platinum.png" alt="crown-platinum" border="0" /></a>
    diamondHeader.css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat left top");
    $(".numcatches.diamond").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
}
function sortMaster() {
    var allMice = $(".mousebox");
    var allDiamond = allMice.find(".numcatches.diamond");
    var allMaster = allDiamond.filter(function(index) {
        if ($(this).text() >= 900 && $(this).parent().parent().parent().attr("data-action") === "addFavoriteCrown") {
            return true;
        } else if ($(this).text() >= 900 && $(".mousebox").length > 0) {
            return true;
        } else {
            return false;
        }
    });
    if($(".mousebox").length > 0) {
        allMaster = allMaster.parent().parent().not(".mousebox.favorite");
    } else {
        allMaster = allMaster.parent().parent().parent();
    };
    var masterHeader = $(".crownheader.crownheadermaster")
    var diamondHeader = $(".crownheader.crownheaderdiamond")
    allMaster.insertAfter(masterHeader);
    allMaster.find(".numcatches.diamond").removeClass("numcatches diamond").addClass("numcatches master");
    localStorage.setItem('MasterCrownCount', allMaster.length);
    localStorage.setItem('DiamondCrownCount',parseInt(localStorage.getItem('DiamondCrownCount'),10)-allMaster.length);
    diamondHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('DiamondCrownCount'),10)+")")
    masterHeader.find(".crownquantity").text("("+parseInt(localStorage.getItem('MasterCrownCount'),10)+")")
    //var img = <a href="https://imgbb.com/"><img src="https://i.ibb.co/BfGw6Rj/crown-platinum.png" alt="crown-platinum" border="0" /></a>
    masterHeader.css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat left top");
    $(".numcatches.master").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
}
function sortFavotitesAfterSort() {
    var topHeader = $(".crownheader.crownheadertop")
    var allMice = $(".mousebox.favorite");
    var allFavorites = allMice.find(".numcatches.gold");
    var nonFavs = $(".mousebox").not(".mousebox favorite");
    var goldHeader = $(".crownheader.crownheadergold")
    var platinumHeader = $(".crownheader.crownheaderplatinum")
    var diamondHeader = $(".crownheader.crownheaderdiamond")
    var masterHeader = $(".crownheader.crownheadermaster")
    var seen = {};
    allFavorites.each(function() {
      var txt = $(this).text();
      if (seen[txt]) {
          //move  fav to new crown class
          if (txt >= 900) {
          $(this).parent().parent().insertAfter(masterHeader)
          $(this).removeClass("numcatches gold").addClass("numcatches master")
          localStorage.setItem('MasterCrownCount', parseInt(localStorage.getItem('MasterCrownCount'),10)+1);
          var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
          goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-1)+")")
          masterHeader.find(".crownquantity").text("("+localStorage.getItem('MasterCrownCount')+")");
          $(".numcatches.master").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
          var masterResult = filterOutTopFavs($(".numcatches.master").parent().find(".name"))
          masterResult = masterResult.parent().find(".numcatches.master")
          var masterArray = sortAcsending(masterResult);
          masterArray.every(function(cell) {
          $(cell).parent().parent().detach().insertAfter(masterHeader);
          return true;
           })
          } else if (txt >= 800) {
          $(this).parent().parent().insertAfter(diamondHeader)
          $(this).removeClass("numcatches gold").addClass("numcatches diamond")
          localStorage.setItem('DiamondCrownCount', parseInt(localStorage.getItem('DiamondCrownCount'),10)+1);
          var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
          goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-1)+")")
          diamondHeader.find(".crownquantity").text("("+localStorage.getItem('DiamondCrownCount')+")");
          $(".numcatches.diamond").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
          var diamondResult = filterOutTopFavs($(".numcatches.diamond").parent().find(".name"))
          diamondResult = diamondResult.parent().find(".numcatches.diamond")
          var diamondArray = sortAcsending(diamondResult);
          diamondArray.every(function(cell) {
          $(cell).parent().parent().detach().insertAfter(diamondHeader);
          return true;
           })
          } else if (txt >= 600) {
          $(this).parent().parent().insertAfter(platinumHeader)
          $(this).removeClass("numcatches gold").addClass("numcatches plat")
          localStorage.setItem('PlatCrownCount', parseInt(localStorage.getItem('PlatCrownCount'),10)+1);
          var goldQuantity = goldHeader.find(".crownquantity").text().replace(/[{()}]/g, '');
          goldHeader.find(".crownquantity").text("("+(parseInt(goldQuantity,10)-1)+")")
          platinumHeader.find(".crownquantity").text("("+localStorage.getItem('PlatCrownCount')+")");
          $(".numcatches.plat").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
          var platResult = filterOutTopFavs($(".numcatches.plat").parent().find(".name"))
          platResult = platResult.parent().find(".numcatches.plat")
          var platArray = sortAcsending(platResult);
          platArray.every(function(cell) {
          $(cell).parent().parent().detach().insertAfter(platinumHeader);
          return true;
           })
          }
      } else {
         //change top fav to new crown class only
         if (txt >= 900) {
         $(this).removeClass("numcatches gold").addClass("numcatches master")
         $(".numcatches.master").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
         } else if (txt >= 800) {
         $(this).removeClass("numcatches gold").addClass("numcatches diamond")
         $(".numcatches.diamond").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
         } else if (txt >= 600) {
         $(this).removeClass("numcatches gold").addClass("numcatches plat")
         $(".numcatches.plat").css("background","url('https://i.ibb.co/BfGw6Rj/crown-platinum.png')  no-repeat right top");
         }
      seen[txt] = true;
      }
  });
}
//================================================================ HIDE
function hideCrowns() {
    var allMice = $(".mousebox");
    var allPlat = allMice.find(".numcatches.plat");
    var allDiamond = allMice.find(".numcatches.diamond");
    var allMaster = allMice.find(".numcatches.master");
    var goldHeader = $(".crownheader.crownheadergold")
    var platinumHeader = $(".crownheader.crownheaderplatinum")
    var diamondHeader = $(".crownheader.crownheaderdiamond")
    var masterHeader = $(".crownheader.crownheadermaster")
    removeTheseCrowns(allMaster);
    removeTheseCrowns(allDiamond);
    removeTheseCrowns(allPlat);
    allPlat.removeClass("numcatches plat").addClass("numcatches gold");
    allDiamond.removeClass("numcatches diamond").addClass("numcatches gold");
    allMaster.removeClass("numcatches master").addClass("numcatches gold");
    var result = filterOutTopFavs($(".numcatches.gold").parent().find(".name"))
    result = result.parent().find(".numcatches.gold")
    var array = sortAcsending(result);
    array.every(function(cell) {
    $(cell).parent().parent().detach().insertAfter(goldHeader);
     return true;
     })
    goldHeader.find(".crownquantity").text("("+result.length+")")
    $(".crownheader.crownheaderplatinum").remove();
    $(".crownheader.crownheaderdiamond").remove();
    $(".crownheader.crownheadermaster").remove();
    $("#spacer1").remove();
    $("#spacer2").remove();
    $("#spacer3").remove();
}
function removeTheseCrowns(elements) {
    var goldHeader = $(".crownheader.crownheadergold")
    var crown = elements.attr("class")
    if (crown == "numcatches plat") {
        crown = ".numcatches.plat"
    } else if (crown == "numcatches diamond") {
        crown = ".numcatches.diamond"
    } else if (crown == "numcatches master") {
        crown = ".numcatches.master"
    }
    var result = filterOutTopFavs(elements.parent().find(".name"));
    result = result.parent().find(crown)
    result.parent().parent().detach().insertAfter(goldHeader);
}
function filterOutTopFavs(elements) {
    var seen = {};
    var result = elements.filter(function() {
      var txt = $(this).text();
      if (seen[txt]) {
          return true;
      } else {
         seen[txt] = true;
          if ($(this).parent().parent().hasClass("mousebox favorite")) {
              return false;
              } else {
              return true;
              }
      }
    })
    return result;
}
function sortAcsending(result) {
    var array = result.toArray();
    array = array.sort(function(a,b) {
    a = parseInt($(a).text(),10)
    b = parseInt($(b).text(),10)
    return a-b;
    });
    return array;
}
//TO DO
//add favorite link is gone using mousebox with crowns showing
//MHCC /+90% crowned ranks?
//Fix lock code