Sploop.io-Modifications [ CactusMod ] -

Cactus's are cool

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        Sploop.io-Modifications [ CactusMod ] -
// @namespace    -
// @version     1.0.0
// @description Cactus's are cool
// @author        cactus
// @match        *://sploop.io/*
// @grant        none
// @icon         https://i.imgur.com/1lJkd0L.png
// ==/UserScript==


document.title = 'Cactus.io - Cactus Mod';
document.querySelector("link[rel='icon']").href = "https://i.imgur.com/1lJkd0L.png";
document.getElementById("logo").src = "https://svgur.com/i/15Mw.svg";



//
var FPS,cps = 0,Mcps = 0,Hue = 0;
(function() {
    var UPDATE_DELAY = 700;
    var lastUpdate = 0;
    var frames = 0;
    var pingValue = 0;
    function updateCounter() {
        var now = Date.now();
        var elapsed = now - lastUpdate;
        if (elapsed < UPDATE_DELAY) {
            ++frames;
        } else {
            FPS = Math.round(frames / (elapsed / 1000));
            frames = 0;
            lastUpdate = now;
        }
        requestAnimationFrame(updateCounter);
    }
    lastUpdate = Date.now();
    requestAnimationFrame(updateCounter);
})();
document.addEventListener("mousedown", click, false);
document.addEventListener("mouseup", endclick, false);
function click(e) {
    if (e.button == 0 || 1 || 2) {
        cps++
        setTimeout(() => {
            cps--
        }, 900);
    }
    if (e.button == 0) { document.getElementById("LeftClick").style.backgroundColor = "white";}
    if (e.button == 2) { document.getElementById("RightClick").style.backgroundColor = "white";}
}
function endclick(e) {
    if (e.button == 0) {document.getElementById("LeftClick").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
    if (e.button == 2) {document.getElementById("RightClick").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
}
document.addEventListener('keydown', (e)=>{
    if (e.keyCode == 32) {document.getElementById("SpaceBar").style.backgroundColor = "white";}
    if (e.keyCode == 87) {document.getElementById("keyW").style.backgroundColor = "white";}
    if (e.keyCode == 65) {document.getElementById("keyA").style.backgroundColor = "white";}
    if (e.keyCode == 83) {document.getElementById("keyS").style.backgroundColor = "white";}
    if (e.keyCode == 68) {document.getElementById("keyD").style.backgroundColor = "white";}
})
document.addEventListener('keyup', (e)=>{
    if (e.keyCode == 32) {document.getElementById("SpaceBar").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
    if (e.keyCode == 87) {document.getElementById("keyW").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
    if (e.keyCode == 65) {document.getElementById("keyA").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
    if (e.keyCode == 83) {document.getElementById("keyS").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
    if (e.keyCode == 68) {document.getElementById("keyD").style.backgroundColor = "rgba(0, 0, 0, 0.4)";}
})

setInterval(() => {
    if (cps > Mcps) Mcps = cps
    Hue += Math.random() * .4
    Show.style.color = `white`
    Panel.style.color = `hsl(${Hue}, 100%, 70%)`
    Creator.style.color = `hsl(${Hue}, 100%, 70%)`
    Show.innerHTML = `${FPS}FPS<br>${cps}CPS<br>${Mcps}MCPS`
}, 0);
let Show = document.createElement("div");
Show.id = "SHOW"
document.body.prepend(Show);
let Panel = document.createElement("div");
let Creator = document.createElement('div');

Creator.innerHTML = `
<div id='Creator'>
<div id='01e'>CactusMod</div>`
document.body.appendChild(Creator)

Panel.innerHTML = `
<div id="Panel">
<div id="keyW">W</div>
<div id="keyA">A</div>
<div id="keyS">S</div>
<div id="keyD">D</div>
<div id="LeftClick">LMB</div>
<div id="RightClick">RMB</div>
<div id="SpaceBar">______</div>
</div>`
document.body.appendChild(Panel)

let popUI = document.querySelector('#pop-ui');
let settings = document.querySelector('#pop-settings');


// === STYLING FOR HAT MENU ===
document.querySelector('#game-content').style.justifyContent = 'center';
document.querySelector('#main-content').style.width = 'auto';
document.getElementById('hat-menu').style.background = "rgba(0,0,0,0)"
document.getElementById('hat-menu').style.opacity = "0.9"
document.getElementById('clan-menu').style.background = "rgba(0,0,0,0)"
document.getElementById('clan-menu').style.opacity = "0.9"
document.getElementById("hat_menu_content").style.background = "rgba(0,0,0,0)"
document.getElementById("clan_menu_content").style.background = "rgba(0,0,0,0)"

var hatMenu = document.getElementById("hat-menu");
if (hatMenu) {
    hatMenu.style.opacity = "0.6";
}

// == style ==
var styleItem = document.createElement("style");
styleItem.type = "text/css";
styleItem.appendChild(document.createTextNode(`

create_clan *, #pop-ui {
  background-color: transparent;
}
#pop-settings {
  background: rgba(0,0,0,0.5);
  opacity: 0.95;
}

#Creator{
    position: fixed !important;
    width: 10vw;
    height: 5vh;
    top: 96.4vh;
    left: -1.25vw;
    z-index: 100000022;
    display: block;
    text-align: center;
    opacity: 0;
}

#01e{
    position: fixed !important;
    width: 50px;
    height: 45px;
    top: 45px;
    left: 0;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
    border-top-left-radius: 10px;
}

#SHOW {
    font-size: 18px;
    position: absolute;
    width: 90px;
    height: 78px;
    top:55px;
    left:10px;
    z-index:1000000;
    display: block;
    text-align: center;
    border-radius: 20px;
    background-color: rgba(0, 0, 0, 0.4);

}

#Panel {
    position: relative;
    width: 150px;
    height: 180px;
    top: 10px;
    left: 130px;
    z-index: 1000000;
    display: block;
    text-align: center;
    opacity: 0.6;
}




#millWarningDiv{
    font-size: 18px;
    position: absolute;
    height: auto;
    top:80vh;
    left:0vh;
    z-index:1000000;
    display: block;
    opacity: 0.9;
    text-align: center;
    border-radius: 20px;
    display: none;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
    padding:10px;
    color: white;
}


#keyW {
    position: absolute;
    width: 50px;
    height: 45px;
    top: 0;
    left: 50px;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
}

#keyA {
    position: absolute;
    width: 50px;
    height: 45px;
    top: 45px;
    left: 0;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
    border-top-left-radius: 10px;
}

#keyS {
    position: absolute;
    width: 50px;
    height: 45px;
    top: 45px;
    left: 50px;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
}

#keyD {
    position: absolute;
    width: 50px;
    height: 45px;
    top: 45px;
    right: 0;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
    border-top-right-radius: 10px;
}

#LeftClick {
    position: absolute;
    width: 75px;
    height: 45px;
    top: 90px;
    left: 0;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
}

#RightClick {
    position: absolute;
    width: 75px;
    height: 45px;
    top: 90px;
    right: 0;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
}

#SpaceBar {
    position: absolute;
    width: 150px;
    height: 45px;
    bottom: 0;
    left: 0;
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;
    background-color: rgba(0, 0, 0, 0.4);
    box-shadow: 0 0 2px #6dd1ff,0 0 0 3px #353535, 0 0 0 3px #3e3e3e, inset 0 0 7px rgba(0, 0, 0, 1), 0 2px 10px rgba(0,0,0,.5), inset 0 0 10px rgba(0,0,0,.2);
}

#top-wrap-left {
    position: fixed;
    top: 50px;
    left: 96%;
    transform: translateX(-50%);
    width: 58px;
    height:58px;
}

#hat-menu {

  height: 348px;
  width: 430px;
}
#hat-menu .green-button, #clan-menu .green-button {
	background-color: rgba(0,0,0,0);
	box-shadow:none;
}
#hat-menu .green-button:hover, #clan-menu .green-button:hover {
  background-color: rgba(0,0,0,0.2);
}
.subcontent-bg {
	border-color: transparent;
	box-shadow: none;
  background: transparent;
}
.menu .content .menu-item .menu-pricing .action {
	border-color: grey;
}
.menu .content .menu-item {
	border-bottom-color: transparent;
}
#hat-menu, #clan-menu {
  box-shadow: none;
  border: 1px solid black
}

#clan_menu_content .subcontent-bg {
  margin: 1px 0px 1px 0px;
}

#create_clan *, #pop-ui {
  background-color: transparent;
}

#pop-settings {
  background: rgba(0,0,0,0.5);
  opacity: 0.95;
}

.scrollbar::-webkit-scrollbar {
  background: rgba(0, 0, 0, 0);
  border-radius: 2px;
  border: 2px solid rgba(0, 0, 0, 0.9);
}
.scrollbar::-webkit-scrollbar-thumb {
  background: rgba(255,255,255, 0.7);
  border-radius: 2px;
  border: 2px solid #141414;
  box-shadow: inset 0 1px 0 white, inset 0 -1px 0 #4e5645,
  0 1px 1px rgb(20 20 20 / 50%);
}

`))


// == ping-shower ==
var checkbox = document.getElementById('display-ping-toggle');
checkbox.checked = true;
checkbox.dispatchEvent(new Event('change'));

// == remove ads ==
const idsToDelete = ['game-bottom-content', 'da-left', 'da-right', 'game-left-content-main', "game-right-content-main", "discord", 'alsoTryLink', 'cross-promo']; // Array of IDs to delete
idsToDelete.forEach(id => {
    const elementToRemove = document.getElementById(id);
    if (elementToRemove) {
        elementToRemove.parentNode.removeChild(elementToRemove);
    } else {
        console.error(`Element with ID ${id} not found!`);
    }
});
const container = document.getElementById('game-content');
const elementToRealign = document.getElementById('game-middle-main');
const leftOffset = (container.offsetWidth - elementToRealign.offsetWidth) / 2;
elementToRealign.style.left = leftOffset + 'px';


// == Homepage Blur ==
function blur() {
    const homepage = document.getElementById("homepage");
    homepage.style.display = "flex";
    // Set a fixed blur value
    const blurValue = 1.5;
    homepage.style.backdropFilter = `blur(${blurValue}px)`;
}

setTimeout(blur, 2000);

//  == Watermark/Username ==*customizeable - line 86*

let gridToggle = true; // change this value to false if you want to keep grid off

function toggleGrid() {
    const grid = document.querySelector('#grid-toggle');
    grid.click();
}
toggleGrid();
function handlePlayButtonClick() {
    if (gridToggle) {
        toggleGrid();
        gridToggle = false;
    }
}
var xe1 = false;

function toggleCreatorVisibility() {
    var creatorDiv = document.getElementById('Creator');
    if (creatorDiv.style.opacity === '0.5') return;

    if (!creatorDiv.dataset.clicked) {
        creatorDiv.dataset.clicked = true;
        creatorDiv.style.opacity = '0.5';
        return;
    }
    creatorDiv.style.opacity = '1';
}

function playButtonClickHandler() {
    toggleCreatorVisibility();
    handlePlayButtonClick();
    var creatorDiv = document.getElementById('Creator');
    creatorDiv.style.transition = 'opacity 0.5s ease';

    // Print "Worked" to the console
    console.log("Worked");

    // Remove event listener after action happens
    if (xe1) {
        document.getElementById('play').removeEventListener('click', playButtonClickHandler);
    } else {
        xe1 = true;
    }
}

document.getElementById('play').addEventListener('click', playButtonClickHandler);

// == Access Settings ingame ==
document.addEventListener('keydown', e =>{
    if(e.keyCode == 27) {
        if(document.querySelector('#hat-menu').style.display !== "flex" && document.querySelector('#clan-menu').style.display !== "flex" && document.querySelector('#homepage').style.display !== "flex" && document.querySelector('#chat-wrapper').style.display !== "block") {
            if(!popUI.classList.contains('fade-in')) {
                popUI.classList.add('fade-in');
                popUI.style.display = "flex";
                settings.style.display = "flex";
                return;
            }
            popUI.classList.remove('fade-in');
            popUI.style.display = "none";
            settings.style.display = "none";
        }
    }
});

// == Custom Health + Clan Colour ==

const originalFillRect = CanvasRenderingContext2D.prototype.fillRect;

CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) {
  if (this.fillStyle === "#a4cc4f") {
    this.fillStyle = "#13a8ec";
    this.shadowColor = "rgba(0, 0, 0, 0.7)";
    this.shadowBlur = 3;
  }
  originalFillRect.call(this, x, y, width, height);
};

CanvasRenderingContext2D.prototype.fillText = new Proxy(CanvasRenderingContext2D.prototype.fillText, {
    apply: function (target, thisArg, argumentsList) {
        thisArg.lineWidth = 8;
        thisArg.strokeStyle = "black";
        thisArg.strokeText.apply(thisArg, argumentsList);
        return target.apply(thisArg, argumentsList);
    }
});


CanvasRenderingContext2D.prototype.fillText = new Proxy(CanvasRenderingContext2D.prototype.fillText, {
     apply: function (target, thisArg, argumentsList) {
          if (typeof argumentsList[0] == 'string' && argumentsList[0].includes('[')) {
               thisArg.fillStyle = "#6ee0dc";
               thisArg.shadowColor = "rgba(0, 0, 0, 0.7)";
               thisArg.shadowBlur = 6;
          }
          return target.apply(thisArg, argumentsList);
     }
});




// == Miscellaneous ==

 // Clan custom title
var phrases = [,"/ Clan /", "| Clan |", "- Clan -", "/ Clan /"];
var currentIndex = 0;

setInterval(function() {
  var element = document.getElementById('clan-title');
  if (element) {
    element.textContent = phrases[currentIndex];
    currentIndex = (currentIndex + 1) % phrases.length;
  }
}, 200);



// Instant leave

(function() {
    'use strict';

    document.addEventListener("keydown", function(event) {
        var homepage = document.getElementById("homepage");
        var isPlayerInGame = homepage.style.display === "none";

        if (isPlayerInGame && event.code === "ArrowUp") {
            event.preventDefault();

            var ffaMode = document.getElementById("ffa-mode");
            var sandboxMode = document.getElementById("sandbox-mode");
            var popProgressLoss = document.getElementById("pop-progress-loss");
            var changeServer = document.getElementById("change-server");

            if (isPlayerInGame) {
                var activeButton = ffaMode.classList.contains("dark-blue-button-3-active") ? sandboxMode : ffaMode;
                homepage.style.display = "flex";
                activeButton.click();
            }

            if (popProgressLoss.style.display === "flex") {
                changeServer.click();
            }
        }
    });

})();

// Game-Homepage


(function() {
    'use strict';

    const styleElement = document.head.appendChild(document.createElement('style'));
    styleElement.type = 'text/css';
    styleElement.appendChild(document.createTextNode(`#cross-promo, #bottom-wrap, #google_play, #game-left-content-main, #game-bottom-content, #game-right-content-main, #right-content { display: none !important; }`));

    const gameContent = document.querySelector('#game-content');
    gameContent.style.justifyContent = 'center';

    const mainContent = document.querySelector('#main-content');
    mainContent.style.width = 'auto';

    const popUi = document.getElementById('pop-ui');
    popUi.style.opacity = '0.7';

    const homepage = document.getElementById('homepage');
    homepage.style.opacity = '0.7';

    const rankingMiddleMain = document.getElementById('ranking-middle-main');
    rankingMiddleMain.style.height = '380px';

    const rankingRanksContainer = document.getElementById('ranking-ranks-container');
    rankingRanksContainer.style.height = '295px';

    const ranking2MiddleMain = document.getElementById('ranking2-middle-main');
    ranking2MiddleMain.style.height = '380px';

    const rankingRankContainer = document.getElementById('ranking-rank-container');
    rankingRankContainer.style.height = '295px';

    const profileLeftMain = document.getElementById('profile-left-main');
    profileLeftMain.style.width = '650px';

    const changeUsername = document.getElementById('change-username');
    changeUsername.style.width = '200px';

    const popBoxes = document.querySelectorAll('.pop-box');
    popBoxes.forEach((box) => {
    box.style.boxShadow = "inset 0 4px 0 #4e564500, inset 0 -4px 0 #38482500, 0px 2px 0 5px rgb(20 20 20 / 0%), 0px 0px 0 15px rgb(20 20 20 / 0%)";
    });

    const popHomepage = document.getElementById('homepage');
    document.addEventListener('keydown', e => {
    if (e.key === 'Alt' && popHomepage) {
    popHomepage.style.display = (popHomepage.style.display === 'flex' || popHomepage.style.display === '') ? 'none' : 'flex';
    e.preventDefault();
    e.stopPropagation();
    }});
})();


const { fillText } = CanvasRenderingContext2D.prototype;
const cursing = ["cunt", "whore", "fuck", "shit", "faggot", "nigger", "nigga", "dick", "vagina", "minge", "cock", "rape", "cum", "sex", "tits", "penis", "clit", "pussy", "jizz", "prune", "douche", "wanker", "damn", "bitch", "dick", "fag", "bastard"],
  replace = ["cxxx", "wxxxx", "fxxx", "sxxx", "fxxxxx", "nxxxxx", "nxxxx", "dxxx", "vxxxxx", "mxxxx", "cxxx", "rxxx", "cxx", "sxx", "txxx", "pxxxx", "cxxx", "pxxxx", "jxxx", "pxxxx", "dxxxxx", "wxxxxx", "dxxx", "bxxxx", "dxxx", "fxx", "bxxxxxx"];
CanvasRenderingContext2D.prototype.fillText = function (word) {
  if (typeof word == "string") {
    var tmpString;
    for (var i = 0; i < cursing.length; ++i) {
      if (word.toLowerCase().indexOf(cursing[i]) > -1) {
        tmpString = replace[i];
        var re = new RegExp(cursing[i], "ig");
        word = word.replace(re, tmpString);
      }
    }
  }
  fillText.call(this, ...arguments);
};





// emojies

const emojiMappings = {
    ":skull:": "💀",
    ":heart:": "❤️",
    ":smile:": "😄",
    ":thumbu:": "👍",
    ":thumbd:": "👎",

};

function replaceTextWithEmojis(text) {
    let replacedText = text;
    for (const pattern in emojiMappings) {
        if (emojiMappings.hasOwnProperty(pattern)) {
            replacedText = replacedText.replace(new RegExp(pattern, "g"), emojiMappings[pattern]);
        }
    }
    return replacedText;
}

document.getElementById("chat").addEventListener("keydown", function(event) {
    if (event.key === "Enter") {
        const chatInput = event.target;
        const text = chatInput.value;
        const replacedText = replaceTextWithEmojis(text);
        chatInput.value = replacedText;
    }
});
document.getElementById("chat-wrapper").addEventListener("keydown", function(event) {
    if (event.key === " ") {
        event.stopPropagation();
    }
});
document.getElementById("nickname").addEventListener("keydown", function(event) {
    if (event.key === " ") {
        event.stopPropagation();
    }
});

// dagger fix

(function() {
    const { drawImage } = CanvasRenderingContext2D.prototype

    CanvasRenderingContext2D.prototype.drawImage = function(image, x, y, width, height) {
        if (/dagger/.test(image?.src) && (y === 5 || y > window.screen.availHeight - 100)) {
            this.save()
            this.strokeStyle = "rgba(45, 49, 49, .5)"
            this.lineWidth = 6

            this.roundRect(x + 3, y + 3, 95, 95, 16)
            this.stroke()
            this.restore()

            arguments[3] = arguments[4] = 80
            arguments[1] += 11
            arguments[2] += 11
        }

        drawImage.apply(this, arguments)
    }
})()

document.head.appendChild(styleItem);