// ==UserScript==
// @name ProutexMacro v4 {Leading MooMoo.io Macro 2021}
// @namespace -
// @version [4.0]...
// @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://gf.qytechs.cn/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/[email protected]/dist/msgpack.min.js
// @require https://cdn.jsdelivr.net/npm/[email protected]/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);