Sploop.io Legit Script

Show HP%, FPS, CPS, Ping, Press M to ON/OFF ghost mode, Big Shop, Transparent Shop & Clan menu. Use 75% page zoom for best results.

当前为 2025-08-31 提交的版本,查看 最新版本

// ==UserScript==
// @name         Sploop.io Legit Script
// @namespace    http://tampermonkey.net/
// @version      0.6
// @description  Show HP%, FPS, CPS, Ping, Press M to ON/OFF ghost mode, Big Shop, Transparent Shop & Clan menu. Use 75% page zoom for best results.
// @match        *://sploop.io/*
// @icon         https://i.postimg.cc/vBz07fcS/Screenshot-2025-08-28-090152.png
// @grant        none
// @author       normalplayer
// ==/UserScript==

(function() {
    'use strict';

    // ================== GHOST MODE ==================
    CanvasRenderingContext2D.prototype.OdrawImage = CanvasRenderingContext2D.prototype.drawImage;

    let ghostModeEnabled = true;
    document.addEventListener("keydown", e => {
        if (e.key.toLowerCase() === "m") {
            ghostModeEnabled = !ghostModeEnabled;
            console.log("Ghost Mode:", ghostModeEnabled ? "ON" : "OFF");
        }
    });

    const excludedKeywords = [
        "player", "inv_", "cow", "duck", "wolf", "shark",
        "mammoth", "gcow", "dragon"
    ];

    const resourceKeywords = [
        "tree", "rock", "bush", "cactus", "ruby", "wood", "stone", "gold",
        "wall", "spike", "windmill", "trap", "boost", "turret",
        "heal_pad", "platform", "roof", "bed", "teleporter", "lootbox"
    ];

    CanvasRenderingContext2D.prototype.drawImage = function (...args) {
        const image = args[0];
        const src = image && image.src;

        if (src && ghostModeEnabled) {
            const isExcluded = excludedKeywords.some(k => src.includes(k));
            const isResource = resourceKeywords.some(k => src.includes(k));

            this.save();
            if (!isExcluded && isResource) {
                this.globalAlpha = 0.4;
            } else {
                this.globalAlpha = 1.0;
            }
            this.OdrawImage.call(this, ...args);
            this.restore();
        } else {
            return this.OdrawImage.call(this, ...args);
        }
    };

 /*   // ================== TEXTURE REPLACE ==================
    const textureMap = {
        "tree": "",
        "rock": "",
        "wall": "",
        "gold": ""
    };

    const _srcDescriptor = Object.getOwnPropertyDescriptor(Image.prototype, "src");
    Object.defineProperty(Image.prototype, "src", {
        set: function(value) {
            for (const key in textureMap) {
                if (value.includes(key)) {
                    value = textureMap[key];
                    break;
                }
            }
            _srcDescriptor.set.call(this, value);
        },
        get: function() {
            return _srcDescriptor.get.call(this);
        }
    });*/
    // ---------------- Better Health Bar ----------------
    function lerpColor(a, b, amount) {
        const ah = parseInt(a.replace(/#/g, ''), 16),
              ar = ah >> 16, ag = (ah >> 8) & 0xff, ab = ah & 0xff;
        const bh = parseInt(b.replace(/#/g, ''), 16),
              br = bh >> 16, bg = (bh >> 8) & 0xff, bb = bh & 0xff;
        const rr = ar + amount * (br - ar),
              rg = ag + amount * (bg - ag),
              rb = ab + amount * (bb - ab);
        return '#' + (((1 << 24) + (rr << 16) + (rg << 8) + rb) | 0).toString(16).slice(1);
    }

    function drawHpText(ctx, text, xPos, yPos, color) {
        ctx.save();
        ctx.font = "20px 'Baloo Paaji'";
        ctx.textAlign = "center";
        ctx.textBaseline = "top";
        ctx.fillStyle = color;
        ctx.fillText(text, xPos, yPos);
        ctx.restore();
    }

    const enhanceFillRect = function (fill) {
        return function (x, y, width, height) {
            const fullWidth = 95;
            const hpPercent = Math.max(0, Math.min(1, width / fullWidth));
            const percentText = `${~~(width / fullWidth * 100)}%`;
            const centerX = x + fullWidth / 2;
            let color;
            if (this.fillStyle === "#a4cc4f") {
                color = hpPercent > 0.5 ? lerpColor("#a4cc4f", "#e09f3e", (1 - hpPercent) * 2)
                                         : lerpColor("#e09f3e", "#cc5151", (0.5 - hpPercent) * 2);
                this.fillStyle = color;
                drawHpText(this, percentText, centerX, y + height + 9, color);
            }
            if (this.fillStyle === "#cc5151") {
                color = hpPercent > 0.5 ? lerpColor("#cc5151", "#e09f3e", (1 - hpPercent) * 2)
                                         : lerpColor("#e09f3e", "#a4cc4f", (0.5 - hpPercent) * 2);
                this.fillStyle = color;
                drawHpText(this, percentText, centerX, y + height + 9, color);
            }
            fill.call(this, x, y, width, height);
        };
    };

    const FillRect = CanvasRenderingContext2D.prototype.fillRect;
    CanvasRenderingContext2D.prototype.fillRect = enhanceFillRect(FillRect);

    const { fillText } = CanvasRenderingContext2D.prototype;
    CanvasRenderingContext2D.prototype.fillText = function (...args) {
        if (typeof args[0] === "string") {
            this.lineWidth = 8;
            this.strokeStyle = "#313131";
            this.strokeText.apply(this, args);
        }
        return fillText.apply(this, args);
    };

    const { strokeRect } = CanvasRenderingContext2D.prototype;
    CanvasRenderingContext2D.prototype.strokeRect = function(x, y, w, h) {
        if ((w === 40 && h === 40) || this.strokeStyle === "#bfbfbf" || this.strokeStyle === "#dedede") {
            return;
        }
        return strokeRect.call(this, x, y, w, h);
    };

    const { stroke } = CanvasRenderingContext2D.prototype;
    CanvasRenderingContext2D.prototype.stroke = function(...args) {
        if (this.strokeStyle === "#bfbfbf" || this.strokeStyle === "#dedede") {
            return;
        }
        return stroke.apply(this, args);
    };
    // ---------------- Overlay ----------------
    const overlay = document.createElement("canvas");
    overlay.width = window.innerWidth;
    overlay.height = window.innerHeight;
    overlay.style.position = "absolute";
    overlay.style.top = "0";
    overlay.style.left = "0";
    overlay.style.pointerEvents = "none";
    overlay.style.zIndex = "9999";
    document.body.appendChild(overlay);

    const octx = overlay.getContext("2d");
    let frameCount = 0, fpsStartTime = performance.now(), fps=0, cps=0;
    let lastFrameTime = performance.now(), ping='...';

    // ---------------- Ping ----------------
    setInterval(()=>{
        const now = performance.now();
        ping = Math.round(now - lastFrameTime);
        lastFrameTime = now;
    }, 50);

    document.addEventListener("mousedown", ()=>{
        cps++; setTimeout(()=>cps--,1000);
    });

    function loop(){
        const now = performance.now();
        frameCount++;
        if(now - fpsStartTime >= 1000){
            fps = frameCount;
            frameCount=0;
            fpsStartTime=now;
        }

        octx.clearRect(0,0,overlay.width,overlay.height);
        octx.save();
        octx.font = "20px 'Baloo Paaji'";
        octx.textBaseline = "top";

        octx.strokeStyle="#313131";
        octx.lineWidth=4;
        octx.strokeText(`FPS: ${fps}`,10,5); octx.fillStyle="white"; octx.fillText(`FPS: ${fps}`,10,5);
        octx.strokeText(`CPS: ${cps}`,10,30); octx.fillText(`CPS: ${cps}`,10,30);
        octx.strokeText(`PING: ${ping}ms`,10,55); octx.fillText(`PING: ${ping}ms`,10,55);

        octx.restore();
        requestAnimationFrame(loop);
    }
    loop();

    window.addEventListener("resize", ()=>{
        overlay.width = window.innerWidth;
        overlay.height = window.innerHeight;
    });

    // ---------------- Auto Toggle ----------------
    ['#grid-toggle','#native-friendly-indicator'].forEach(id=>{
        const el = document.querySelector(id); if(el) el.click();
    });

    // ---------------- Ad Remove ----------------
    const styleAdRemove = document.createElement('style');
    styleAdRemove.type = 'text/css';
    styleAdRemove.appendChild(document.createTextNode(`
        #cross-promo,#bottom-wrap,#google_play,#game-left-content-main,#game-bottom-content,#game-right-content-main,#left-content,#right-content{
            display:none !important;
        }
    `));
    document.head.appendChild(styleAdRemove);
    document.querySelector('#game-content').style.justifyContent='center';
    document.querySelector('#main-content').style.width='auto';
    // ---------------- Big Shop, Clan -------------------
(function() {
    var style = document.createElement("style");
    style.innerHTML = `
        /* --- SHOP  --- */
        #hat-menu {
            width: 500px !important;
            height: 790px !important;
            background: rgba(0,0,0,0) !important;
            opacity: 0.95 !important;
            border: 5px solid black !important;
            box-shadow: none !important;
        }
        #hat_menu_content {
            max-height: 780px !important;
            overflow-y: auto !important;
            background: transparent !important;
        }

        /* --- CLAN MENU  --- */
        #clan-menu {
            background: rgba(0,0,0,0) !important; /* trong suốt */
            opacity: 0.95 !important;
            border: 5px solid black !important;   /* vẫn giữ viền */
            box-shadow: none !important;
        }
        #clan_menu_content {
            background: transparent !important;
        }
    `;
    document.head.appendChild(style);
})();
    // ------------------ Background --------------------
    window.addEventListener("load", () => {
        const homepage = document.getElementById("homepage");
        if (homepage) {
            homepage.style.backgroundImage = "url('https://4kwallpapers.com/images/wallpapers/satoru-gojo-black-3440x1440-14684.png')";
            homepage.style.backgroundSize = "cover";
            homepage.style.backgroundPosition = "center";
            homepage.style.backgroundRepeat = "no-repeat";
        }
    });
    // --------------- UI --------------
const customReplacements = [
    {
        selector: "#logo",
        image: "https://i.postimg.cc/HW8qMWLM/logo.png"
    },
];
function applyCustomUI() {
    customReplacements.forEach(item => {
        const el = document.querySelector(item.selector);
        if (el) {
            if (el.tagName === "IMG") {
                el.src = item.image;
            } else {
                el.style.backgroundImage = `url(${item.image})`;
                el.style.backgroundSize = "cover";
                el.style.backgroundPosition = "center";
                el.style.backgroundRepeat = "no-repeat";
            }
        }
    });
}
applyCustomUI();
setInterval(applyCustomUI, 2000);
    function clearStyles(el) {
        if (!el) return;
        el.style.border = 'none';
        el.style.outline = 'none';
        el.style.boxShadow = 'none';
        el.style.background = 'transparent';
        el.style.backgroundColor = 'transparent';
        el.style.opacity = '0.7';
        el.style.setProperty('background-color', 'transparent', 'important');
        el.style.setProperty('box-shadow', 'none', 'important');
        el.style.setProperty('border', 'none', 'important');
        el.style.setProperty('outline', 'none', 'important');
    }

    window.addEventListener('load', () => {
        ['nav-img-profile', 'nav-img-shop', 'nav-img-game', 'nav-img-skins', 'nav-img-ranking']
            .forEach(id => {
                const el = document.getElementById(id);
                if (el) el.style.display = 'none';
            });
        [
            'nav-profile', 'nav-game', 'nav-shop', 'nav-skins', 'nav-ranking',
            'menu-nickname', 'server-select', 'play-text',
            'ffa-mode', 'sandbox-mode', 'event-mode'
        ].forEach(id => {
            const el = document.getElementById(id);
            if (el) el.style.opacity = '0.5';
        });
        const nickname = document.getElementById('menu-nickname');
        clearStyles(nickname);
        if (nickname) {
            nickname.querySelectorAll('input, textarea').forEach(input => {
                clearStyles(input);
                input.style.color = 'inherit';
            });
            clearStyles(nickname.parentElement);
        }
        const playBtn = document.getElementById('play-text');
        clearStyles(playBtn);
        if (playBtn?.parentElement) clearStyles(playBtn.parentElement);
        ['ffa-mode', 'sandbox-mode', 'event-mode'].forEach(id => {
            const el = document.getElementById(id);
            clearStyles(el);
            if (el?.parentElement) clearStyles(el.parentElement);
        });
        const container = document.getElementById('game-middle-main');
        clearStyles(container);
        if (container) {
            container.querySelectorAll('*').forEach(child => clearStyles(child));
        }
    });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址