ProutexMacro v4 {Leading MooMoo.io Macro 2021}

Read the description in GreasyFork!

As of 2021-05-07. See the latest version.

// ==UserScript==
// @name ProutexMacro v4 {Leading MooMoo.io Macro 2021}
// @namespace -
// @version [4.0]...Beta?
// @description Read the description in GreasyFork!
// @author Discord: GoblinTime#2714 : Greasy Fork: ♡⚠♡GoblinTime♡⚠♡
// @match *://sandbox.moomoo.io/*
// @match *://moomoo.io/*
// @match *://dev.moomoo.io/*
// @grant none
// @require https://greasyfork.org/scripts/368273-msgpack/code/msgpack.js?version=598723
// @require http://code.jquery.com/jquery-3.3.1.min.js
// @require https://code.jquery.com/ui/1.12.0/jquery-ui.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.3.0/jquery-confirm.min.js
// @require https://cdn.jsdelivr.net/npm/msgpack-lite@0.1.26/dist/msgpack.min.js
// @require https://cdn.jsdelivr.net/npm/fontfaceobserver@2.1.0/fontfaceobserver.standalone.min.js
// ==/UserScript==

/* Add new colors for health bars */
    var ctxx = CanvasRenderingContext2D;
if(ctxx.prototype.roundRect) {
        ctxx.prototype.roundRect = ((func) => function() {
        if (this.fillStyle == "#8ecc51"){ //All allys
        this.fillStyle = "rgba(0, 66, 0, 0.47)";
        } else if(this.fillStyle == "#cc5151") { // All enemy
        this.fillStyle = "rgba(112, 6, 0, 0.47)";
        } else if(this.fillStyle == "#3d3f42") { // Background health bar
        this.fillStyle = "rgba(82, 82, 82, 0.47)";
        }
        return func.call(this, ...arguments);
        })
        (ctxx.prototype.roundRect);
}
// Start Resource
function StartRes() {
    window.follmoo("moofoll", 1);
}
StartRes();

// Add <element for HTML>
        var meta = document.createElement('meta');
        meta.name = "viewport";
        meta.content = "initial-scale=1, maximum-scale=1, user-scalable=no";
        document.getElementsByTagName('head')[0].appendChild(meta);
// Menu
$("body").after(`

<button onclick="InfoMenu()" class="NameMacro">ProutexMacro v4</button>
<div id="infomenu">
<div class="nameblock">Ping and Fps:</div>
<hr>
<div id="ping" class="text">.</div>
<div id="fps" class="text">.</div>
<hr>
<div class="nameblock">Switches:</div>
<hr>
<ul>
<li></label><label><div class="text">Pro-Map<input type="checkbox" id="NewMap"><span class="checkmark"></div></li>
<li></label><label><div class="text">Show-Cps<input type="checkbox" id="CPSTOGGLER"><span class="checkmark"></div></li>
</ul>
<hr>
<div class="nameblock">Versions:</div>
<hr>

<div class="text">
Version-4:
<ul>
<li>1. Menu.<br> To open the menu, click on the text (ProutexMacro)! To close it, click on any place on your screen except the menu!
</li>
<li>2. Remove all hats and accessories. Press - ( B )
</li>
<li>3. AutoReload.<br> The page will automatically reload when it crashes
</li>
<li>4. Big Store.<br> The store has become much bigger!
</li>
<li>5. Pro Map.<br> The map shows all the biomes!
</li>
<li>6. Show your cps.<br> Shows your CPS when clicked!
</li>
</ul>
<hr>
Version-3:
<ul>
<li>1. I changed the color of the health bars! Now they are semi-transparent!
</li>
<li>2. Made the soldier-Q switch now you need to click on ( H ) to turn it on!
</li>
<li>3. Now you can hide the leaderboard on ( K ) . When you press the ( K ) button again, the leaderboard will appear again!
</li>
<li>4. When you press ( Y ), there will be a BullTick!<br>
Bulltick is when a bull helmet hat appears, and when it hits you, your shame counter resets after taking 5 points of damage!
</li>
</ul>
<hr>
Version-2:
<ul>
<li>1. Start Resource.
</li>
<li>2. Automatically sends a request to the very first clan in the list. Press - ( Up-Arrow )
</li>
<li>3. SoldierHelmet+XWings. Press - ( Q )
</li>
<li>4. I removed the "LeftAndRightClick: Off" radio button.<br>
 Now when you disable this feature, nothing will happen.<br>
 But I left the text when turning on!<br>
 When enabled, it will be "LeftAndRightClick: On".
</li>
</ul>
<hr>
Version-1:
<ul>
<li>1. Release!
</li>
<li>2. BullHelmet+BloodWings. Press - ( R )
</li>
<li>3. SoldierHelmet+XWings. Press - ( T )
</li>
<li>4. TankGear+BlackWings. Press - ( Z )
</li>
<li>5. Booster+Tail. Press - ( Shift )
</li>
<li>6. Responsible for the function switch! Press - ( J )<br>
When you turn it on, an inscription will appear in the upper-left corner!<br>
When you are enabled, you can click the left or right mouse button!<br>
And they will wear hats! <=( Left ) responsible for: BullHelmet+SpikeGear+TurretGear+SoldierHelmet=><br>
<=( Right ) responsible for: TankGear+SamuraiArmor+SoldierHelmet=>
</li>
</ul>
<hr>
</div>



</div>
<style>
button:active,
button:focus {
  outline: none !important;
}
button::-moz-focus-inner {
  border: 0 !important;
}
.nameblock {
font-size: 20px;
color: #dbdbdb;
text-align: center;
}
li {
font-size: 13px;
}
.text {
display: block;
font-size: 17px;
color: #fff;
text-align: left;
}
.NameMacro{
cursor: pointer;
position: absolute;
background: linear-gradient(to right, red, orange, yellow, green, cyan, blue, violet);
background-size: 400% 400%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
-webkit-animation: colorR 20s ease infinite;
animation: colorR 20s ease infinite;
font-family: "Hammersmith One";
display: block !important;
top: 5px;
left: 720px;
font-size: 17px;
}
::-webkit-scrollbar { width: 2.7px; height: 3px;}
::-webkit-scrollbar-button {  background-color: #000000; }
::-webkit-scrollbar-track {  background-color: #999;}
::-webkit-scrollbar-track-piece { background-color: rgba(0, 0, 0, 0.50);}
::-webkit-scrollbar-thumb { height: 50px; background-color: #666; border-radius: 3px;}
::-webkit-scrollbar-corner { background-color: #999;}}
::-webkit-resizer { background-color: #666;}
#infomenu {
overflow-y: scroll;
overflow-x: hidden;
padding: 20px;
position: absolute;
display: none;
background: rgba(102, 102, 102, 0.25);
width: 310px;
height: 450px;
border: 2px solid black;
border-radius: 4px;
top: 80px;
left: 20px;
z-index: 1;
}

</style>
<script>
function InfoMenu() {
$("#infomenu").css({
"display" : "block"
});
}
$(document).mouseup(function (e) {
    var container = $("#infomenu");
    if (container.has(e.target).length === 0){
        container.hide();
    }
});
(function() {
  var UPDATE_DELAY = 700;
  var lastUpdate = 0;
  var frames = 0;
var values;
  function updateCounter() {
    var now = Date.now();
    var elapsed = now - lastUpdate;
    if (elapsed < UPDATE_DELAY) {
      ++frames;
    } else {
      var fps = Math.round(frames / (elapsed / 1000));
      document.getElementById("fps").textContent ="Fps: " + fps ;
      frames = 0;
      lastUpdate = now;
    }
    requestAnimationFrame(updateCounter);
  }
  lastUpdate = Date.now();
  requestAnimationFrame(updateCounter);
})();
setInterval(()=>{
document.getElementById("ping").textContent = "Ping: " + window.pingTime;
},0);
</script>
`);
$("body").after(`
<div id="ShowMenu">
</span>
<div id="addtext">LeftAndRightClick: On</div>
<div id="addtext0">Soldier-Q: On</div>
<div id="addtext1">Left-Click</div>
<div id="addtext2">Right-Click</div>
<style>
   #ShowMenu {
   position:absolute !important;
   display:block;
   top: 5px;
   left: 5px;
   width: auto;
   height: auto;
   text-align: center;
   }
   #addtext,#addtext1,#addtext2,#addtext0{
   display: none;
   color: #fff;
   background: linear-gradient(to right, red, orange, yellow, green, cyan, blue, violet);
   background-size: 400% 400%;
   font-size: 20px;
   -webkit-background-clip: text;
   -webkit-text-fill-color: transparent;
   -webkit-animation: colorR 20s ease infinite;
   animation: colorR 20s ease infinite;
   }
   @-webkit-keyframes colorR {
   0% { background-position: 0% 50% }
   50% { background-position: 100% 50% }
   100% { background-position: 0% 50% }
   }
   @keyframes colorR {
   0% { background-position: 0% 50% }
   50% { background-position: 100% 50% }
   100% { background-position: 0% 50% }
   }
</style>
<script>
let tm;
let t = "Moo Moo";
function change(icon, text) {
    document.querySelector('head title').innerHTML = text;
    document.querySelector('link[rel="shortcut icon"]').setAttribute('href',
        icon);
}
window.onblur = () => {
    tm = setTimeout(() => {
        change("https://cdn.discordapp.com/attachments/837884067822436382/838321077775237140/w16h161372343790hearts16.png",
            "😓COMEBACK!😓");
    }, 5000);
}
window.onfocus = () => {
    change("https://sandbox.moomoo.io/img/favicon.png?v=1", t);
}
</script>
`);
var AutoReload = setInterval(() => {
    if(document.getElementById("loadingText").textContent=="disconnectedreload"){
        window.onbeforeunload = null;
        clearInterval(AutoReload)
        window.location.reload()
    }
});
    var Soldier_Q = false;
    var Clicks = false;
    const cvs = document.getElementById("gameCanvas");
    cvs.addEventListener("mousedown", clicks, false);
    function clicks(e) {
        if (e.button == 0) { // Left Click

            if (Clicks == true) {
                document.getElementById('addtext1').style
                .display = "block";
                window.storeEquip(0, 1);
                window.storeEquip(7);
                window.storeEquip(18, 1);
                setTimeout(function() {
                    window.storeEquip(11);
                    window.storeEquip(21, 1);
                }, 100);
                setTimeout(function() {
                    window.storeEquip(53);
                    window.storeEquip(21, 1);
                }, 180);
                setTimeout(function() {
                    window.storeEquip(6);
                    window.storeEquip(13, 1);
                }, 260);
                setTimeout(function() {
                    document.getElementById('addtext1').style
                        .display = "none";
                }, 600);
            }
        }
        if (e.button == 2) { // Right Click
            if (Clicks == true) {
                document.getElementById('addtext2').style
                .display = "block";
                window.storeEquip(0, 1);
                window.storeEquip(20);
                window.storeEquip(19, 1);
                setTimeout(function() {
                    window.storeEquip(40);
                    window.storeEquip(19, 1);
                }, 120);
                setTimeout(function() {
                    window.storeEquip(6);
                    window.storeEquip(19, 1);
                }, 200);
                setTimeout(function() {
                    document.getElementById('addtext2').style
                        .display = "none";
                }, 600);
            }
        }
    }
    var leaderBlock = document.getElementById("leaderboard");
    document.addEventListener('keydown', (e) => { // Add event
        switch (e.keyCode) {
            case 72: // [Button]- K
                if(Soldier_Q == false){
                Soldier_Q = true;
                  document.getElementById('addtext0').style
                        .display = "block";
                } else {
                Soldier_Q = false;
                  document.getElementById('addtext0').style
                        .display = "none";
                }
                break;
            case 74: // [Button]- J
                if (Clicks == false) {
                    document.getElementById('addtext').style
                        .display = "block";
                    Clicks = true;
                } else {
                    document.getElementById('addtext').style
                        .display = "none";
                    Clicks = false;
                }
                break;
            case 75: // [Button]- K
              if (leaderBlock.style.display == "block") {
              $("killCounter").css({"margin": "0"});
              $("killCounter").css({"top": "0px"});
                leaderBlock.style.display = "none";
               } else {
               $("killCounter").css({"top": "230px"});
                leaderBlock.style.display = "block";
             }
                break;
                case 66: // [Button]- B
                window.storeEquip(0,1); // [Equip, Acc]- 0
                window.storeEquip(0); // [Equip, Hat]- 0
                break;
                // Bull Tick::
                case 89: // [Button]- Y
                console.log("Bull Tick");
                window.storeEquip(7); // [Equip, Hat]- BullHelmet
                setTimeout(() => {
                window.storeEquip(6); // [Equip, Hat]- SoldierGear
                },800);
                break;
            case 38: // [Button]- Up Arrow
                window.sendJoin(0); // Send a request to the very first clan
                break;
            case 82: // [Button]- R
                console.log("Bull, Blood[Wings]");
                window.storeEquip(0, 1);
                window.storeBuy(7); // [Buy, Hat]- BullHelmet
                window.storeBuy(18, 1); // [Buy, Acc]- Blood Wings
                window.storeEquip(7); // [Equip, Hat]- BullHelmet
                window.storeEquip(21, 1); // [Equip, Acc]- Blood Wings
                break;
            case 81: // [Button]- Q
              if(Soldier_Q == true){
                console.log("Soldier, X[Wings]");
                window.storeEquip(0, 1);
                window.storeBuy(6); // [Buy, Hat]- SoldierGear
                window.storeBuy(21, 1); // [Buy, Acc]- X Wings
                window.storeEquip(6); // [Equip, Hat]- SoldierGear
                window.storeEquip(21, 1); // [Equip, Acc]- X Wings
                }
                break;
            case 16: // [Button]- Shift
                console.log("Boost, Tail");
                window.storeEquip(0, 1);
                window.storeBuy(12); // [Buy, Hat]- Booster
                window.storeBuy(11, 1); // [Buy, Acc]- Tail
                window.storeEquip(12); // [Equip, Hat]- Booster
                window.storeEquip(11, 1); // [Equip, Acc]- X Wings
                break;
            case 84: // [Button]- T
                console.log("Soldier, X[Wings]");
                window.storeEquip(0, 1);
                window.storeBuy(6); // [Buy, Hat]- Soldier
                window.storeBuy(21, 1); // [Buy, Acc]- X Wings
                window.storeEquip(6); // [Equip, Hat]- Soldier
                window.storeEquip(21, 1); // [Equip, Acc]- X Wings
                break;
            case 90: // [Button]- Z
                console.log("Tank, Black[Wings]");
                window.storeEquip(0, 1);
                window.storeBuy(40); // [Buy, Hat]- Tank
                window.storeBuy(19, 1); // [Buy, Acc]- Black Wings
                window.storeEquip(40); // [Equip, Hat]- Tank
                window.storeEquip(19, 1); // [Equip, Acc]- Black Wings
                break;
        }
    });
// Toggler Cps
var cpsss = document.querySelector("#CPSTOGGLER")
cpsss.addEventListener('change', function() {
    if (this.checked) {
$("#cpss").css("display", "block");
    } else {
$("#cpss").css("display", "none");
    }
});
// Toggler Map
var NewMapp = document.querySelector("#NewMap")
NewMapp.addEventListener('change', function() {
    if (this.checked) {
            $("#mapDisplay").css("background", "url('https://wormax.org/chrome3kafa/moomooio-background.png')");
    } else {
            $("#mapDisplay").css("background", "rgba(0, 0, 0, 0.25)");
    }
})
$("killCounter").css({"top": "230px"});
    /* Instructions for adding items: You need to put this code in a comment here is how I commented out this text */
    //  /*
    document.getElementById("storeHolder").style = "height: 1500px; width: 450px;"
    document.getElementById('gameName').innerText = 'ProutexMacro';
    document.getElementById("moomooio_728x90_home").style.display = "none";
    $("#moomooio_728x90_home").parent().css({display: "none"});
    $("#moomooio_728x90_home").parent().css({"display" : "none"});
    document.getElementById("promoImg").remove();
    document.getElementById('adCard').remove();
    $("#youtuberOf").remove();
    $("#followText").remove();
    $("#promoImgHolder").remove();
    $("#twitterFollow").remove();
    $("#joinPartyButton").remove();
    $("#linksContainer2").remove();
    $("#partyButton").remove();
    $("#youtubeFollow").remove();
    $("#adCard").remove();
    $("#adBlock").remove();
    $("#mobileInstructions").remove();
    $("#downloadButtonContainer").remove();
    $("#mobileDownloadButtonContainer").remove();
    $(".downloadBadge").remove();
    //  */
    setTimeout(() => {
        document.getElementById('ot-sdk-btn-floating').remove();
        document.getElementById('pre-content-container').remove();
    }, 1500);
    var cps = 0;
var click = 1;
$("#gameCanvas").mousedown(function(e){
if(e.which == 1 && click == 1){
cps = (cps + 1)
setTimeout( () => {
    cps = (cps - 1)
}, 950);
}
});
$("#gameCanvas").mousedown(function(e){
if(e.which == 3 && click == 1){
cps = (cps + 1)
setTimeout( () => {
cps = (cps - 1)
}, 950);
}
});
document.addEventListener("mousedown", buttonPress, false);
function buttonPress(e) {
if(e.button == 1 && click == 1){
cps = (cps + 1)
setTimeout( () => {
cps = (cps - 1)
}, 950);
}
}

var cpsM = document.createElement("div");
cpsM.style.padding = "5px";
cpsM.id = "cpss";
cpsM.style.font = "30px Arial";
cpsM.style.display = "none";
cpsM.style.position = "fixed";
cpsM.style.top = "40%";
cpsM.style.left = "0%";
cpsM.style.color = "#fff";
cpsM.textContent = "Loading...";
document.body.appendChild(cpsM);
setInterval(()=>{
cpsM.textContent = "Cps: " + cps;
}, 0);