Sigmally Mod

Mod for Sigmally.com | by cursd#0126. Dark Mode, Long Nickname, Macros, Extanded Settings, Freeze Player; Mod Menu

目前為 2023-04-21 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Sigmally Mod
// @version      2.1
// @description  Mod for Sigmally.com | by cursd#0126. Dark Mode, Long Nickname, Macros, Extanded Settings, Freeze Player; Mod Menu
// @author       Cursed
// @match        *://sigmally.com/*
// @icon         https://raw.githubusercontent.com/Sigmally/SigMod/main/images/SigmodV2-Circle.png
// @run-at       document-end
// @license      MIT
// @namespace    https://gf.qytechs.cn/users/981958
// ==/UserScript==

(function () {
    const rzModSettings = document.createElement("form");

    const KEY_FEED = {
        key: "w",
        keyCode: 32,
        which: 32,
    };
    const KEY_SPLIT = {
        keyCode: 32,
        code: "Space",
        cancelable: true,
        composed: true,
        isTrusted: true,
        which: 32,
    };

    let rxSettings = localStorage.getItem("rxSettings");

    if (!rxSettings) {
        rxSettings = {
            keyBindingsRapidFeed: "q",
            keyBindingsdoubleSplit: "d",
            keyBindingsTripleSplit: "f",
            keyBindingsQuadSplit: "g",
            keyBindingsFreezePlayer: "s",
            darkMode: true,
        };
    } else {
        rxSettings = JSON.parse(rxSettings);
    }

    rzModSettings.setAttribute("id", "rx-mod-settings");
    rzModSettings.classList.add("hidden");
    rzModSettings.onsubmit = (e) => {
        rzModSettings.classList.toggle("hidden");
        e.preventDefault();

        let options = new FormData(rzModSettings);

        for (var key of options.keys()) {
            rxSettings[key] = options.get(key);
        }

        localStorage.setItem("rxSettings", JSON.stringify(rxSettings));

        return false;
    };
    rzModSettings.innerHTML =
        '<div class="cztop">' +
        '<div class="cztopleft">' +
        '<img src="https://i.ibb.co/stQVx38/SigmodV2.png" draggable="false" class="titleImg">' +
        '<h4 class="SettingsTitle">Settings</h4>' +
        "</div>" +
        '<input type="submit" class="CloseBtn"; value="X"/>' +
        "</div>" +
        "<hr/>" +
        '<h5 class="Sett">Keybindings</h5>' +
        '<div class="left-modg">' +
        '<label class="flex">' +
        '<input type="text" name="keyBindingsRapidFeed" id="modinput1" class="keybinding" value="' +
        rxSettings.keyBindingsRapidFeed +
        '" maxlength="1" onfocus="this.select()">' +
        '<span class="Sett">Rapid Feed</span>' +
        "</label>" +
        '<label class="flex">' +
        '<input type="text" name="keyBindingsdoubleSplit" id="modinput2" class="keybinding" value="' +
        rxSettings.keyBindingsdoubleSplit +
        '" maxlength="1" onfocus="this.select()">' +
        '<span class="Sett">Double Split</span>' +
        "</label>" +
        '<label class="flex">' +
        '<input type="text" name="keyBindingsTripleSplit" id="modinput3" class="keybinding" value="' +
        rxSettings.keyBindingsTripleSplit +
        '" maxlength="1" onfocus="this.select()">' +
        '<span class="Sett">Triple Split</span>' +
        "</label>" +
        '<label class="flex">' +
        '<input type="text" name="keyBindingsQuadSplit" id="modinput4" class="keybinding" value="' +
        rxSettings.keyBindingsQuadSplit +
        '" maxlength="1" onfocus="this.select()">' +
        '<span class="Sett">Quad Split</span>' +
        "</label>" +
        "</label>" +
        '<label class="flex">' +
        '<input type="text" name="keyBindingsFreezePlayer" id="modinput5" class="keybinding" value="' +
        rxSettings.keyBindingsFreezePlayer +
        '" maxlength="1" onfocus="this.select()">' +
        '<span class="Sett">Freeze Player</span>' +
        "</label>" +
        "</div>" +
        '<div class="right-modg">' +
        "</div>" +
        "<hr/>" +
        '<h4 class="Sett">Discord</h4>' +
        '<div class="modContainer"><a href="https://discord.gg/gHmhpCaPfP" target="_blank" class="modButton" style="width: 100%;">Join Sigmally Modz Server</a></div>' +
        "<hr/>" +
        '<h4 class="Sett">Stylish Names</h4>' +
        '<div class="modContainer"><a href="https://www.stylishnamemaker.com" target="_blank" class="modButton">Stylish Name Maker</a><a href="https://nickfinder.com" target="_blank" class="modButton">Nickfinder</a></div>' +
        "<hr/>" +
        '<h4 class="Sett">Youtube</h4>' +
        '<div class="modContainer"><a href="https://www.youtube.com/@cursed9645/" target="_blank" class="modButton">Cursed</a><a href="https://www.youtube.com/channel/UCEn7a9rEtJNsw1WKgsAoyXQ" class="modButton" target="_blank">Sigmally Modz</a></div>';

    const rzMods = [
        {
            modName: "Branding",
            modType: "automatic",
            modDescription: "Branding",
            modCode: () => {
                const gameTitle = document.getElementById("title");
                gameTitle.innerHTML = 'Sigmally<span style="display:block; font-size: 14px;">Mod by Cursed / Ringzer0</span>';
            },
        },
        {
            modName: "Game Settings",
            modType: "automatic",
            modDescription: "Extanded Game Settings",
            modCode: () => {
                const gameSettings = document.querySelector(".checkbox-grid");
                gameSettings.innerHTML += `
                <li>
                  <div class="pretty p-svg p-round p-smooth">
                    <input type="checkbox" id="showNames">
                    <div class="state p-success">
                      <svg class="svg svg-icon" viewBox="0 0 20 20">
                        <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z" style="stroke: white;fill:white;"></path>
                      </svg>
                      <label>Names</label>
                    </div>
                  </div>
                </li>
                    <li>
                  <div class="pretty p-svg p-round p-smooth">
                    <input type="checkbox" id="showSkins">
                    <div class="state p-success">
                      <svg class="svg svg-icon" viewBox="0 0 20 20">
                        <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z" style="stroke: white;fill:white;"></path>
                      </svg>
                      <label>Skins</label>
                    </div>
                  </div>
                </li>
                  <li>
                     <div class="pretty p-svg p-round p-smooth">
                        <input type="checkbox" id="longNick" checked>
                        <div class="state p-success">
                           <svg class="svg svg-icon" viewBox="0 0 20 20">
                              <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z" style="stroke: white;fill:white;"></path>
                           </svg>
                           <label>Long Nick</label>
                        </div>
                     </div>
                  </li>
                  <li>
                     <div class="pretty p-svg p-round p-smooth">
                        <input type="checkbox" id="darkMenu">
                        <div class="state p-success">
                           <svg class="svg svg-icon" viewBox="0 0 20 20">
                              <path d="M7.629,14.566c0.125,0.125,0.291,0.188,0.456,0.188c0.164,0,0.329-0.062,0.456-0.188l8.219-8.221c0.252-0.252,0.252-0.659,0-0.911c-0.252-0.252-0.659-0.252-0.911,0l-7.764,7.763L4.152,9.267c-0.252-0.251-0.66-0.251-0.911,0c-0.252,0.252-0.252,0.66,0,0.911L7.629,14.566z" style="stroke: white;fill:white;"></path>
                           </svg>
                           <label>Dark Menu</label>
                        </div>
                     </div>
                  </li>`;
            },
        },
        {
            modName: "Rapid Feed (q)",
            modType: "automatic",
            modDescription: "You feed faster",
            modCode: () => {
                window.rxTimeouts = [];
                const amount = 10;

                window.addEventListener("keyup", (e) => {
                    if (e.key == rxSettings.keyBindingsRapidFeed) {
                        for (var i = 0; i < rxTimeouts.length; i++) {
                            clearTimeout(rxTimeouts[i]);
                        }
                    }
                });
                window.addEventListener("keydown", (e) => {
                    let x = true;
                    if (!x || document.activeElement.nodeName === "INPUT") {
                        return;
                    }
                    if (e.key == "Tab") {
                        e.preventDefault();
                    }

                    if (e.key == rxSettings.keyBindingsFreezePlayer) {
                        function center(sx, sy) {
                            const mouseMoveEvent = new MouseEvent("mousemove", {clientX: sx, clientY: sy})
                            const canvas = document.getElementById("canvas")
                            canvas.dispatchEvent(mouseMoveEvent)
                        }

                        const CX = window.innerWidth / 2;
                        const CY = window.innerHeight / 2;

                        center(CX, CY)
                    }

                    if (e.key == rxSettings.keyBindingsRapidFeed) {
                        window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                        window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                        for (var i = 0; i < amount; ++i) {
                            rxTimeouts.push(setTimeout(function() {
                                window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                                window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                                window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                                window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                                window.dispatchEvent(new KeyboardEvent('keydown', KEY_FEED));
                                window.dispatchEvent(new KeyboardEvent('keyup', KEY_FEED));
                            }, i ));
                        }
                        return;
                    }

                    if (e.key == rxSettings.keyBindingsdoubleSplit) {
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        return;
                    }

                    if (e.key == rxSettings.keyBindingsTripleSplit) {
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        return;
                    }

                    if (e.key == rxSettings.keyBindingsQuadSplit) {
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT));
                        window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT));
                        return;
                    }
                });
            },
        },
        {
            modName: "Long Nicknames",
            modType: "automatic",
            modDescription: "Allows for longer nicknames.",
            modCode: () => {
                const nickName = document.getElementById("nick");
                let longNick = document.getElementById("longNick");
                nickName.maxLength = 50;

                longNick.addEventListener("change", () => {
                    if (nickName.maxLength == 50) {
                        nickName.maxLength = 15;
                    } else if (nickName.maxLength == 15) {
                        nickName.maxLength = 50;
                    }
                });
            },
        }, {
            modName: "Dark Menu",
            modType: "automatic",
            modDescription: "Changes the menu color to darker color.",
            modCode: () => {
                setTimeout(() => {
                    const menu = document.getElementById("menu");
                    const rightMenu = document.querySelector(".top-users__inner");
                    const leftMenu = document.getElementById("left-menu");
                    const linksMenu = document.querySelector(".menu-links");
                    const deathScreen = document.querySelector(".menu--stats-mode");
                    const skin_text = document.getElementById("js-skin-select-icon-text");
                    let darkM = true;
                    let darkMode_cb = document.getElementById("darkMenu");
                    let b_inner = document.querySelector(".body__inner");
                    let elements = b_inner.querySelectorAll(".body__inner > :not(.body__inner), #s-skin-select-icon-text");
                    const darkColor = "#252525";
                    const darkColor2 = "#222222";
                    const lightColor = "#FFFFFF";
                    darkMode_cb.addEventListener("change", () => {
                        if (!darkM) {
                            darkM = true;
                            rxSettings.darkMode = true;
                            localStorage.setItem("rxSettings", JSON.stringify(rxSettings));
                            skin_text.style.color = lightColor;

                            menu.style.backgroundColor = darkColor;
                            rightMenu.style.backgroundColor = darkColor;
                            leftMenu.style.backgroundColor = darkColor;
                            linksMenu.style.backgroundColor = darkColor;
                            deathScreen.style.backgroundColor = darkColor;

                            elements.forEach((textElements) => {
                                textElements.style.color = lightColor;
                            });
                        } else {
                            darkM = false;
                            rxSettings.darkMode = false;
                            localStorage.setItem("rxSettings", JSON.stringify(rxSettings));
                            skin_text.style.color = darkColor2;
                            menu.style.backgroundColor = lightColor;
                            rightMenu.style.backgroundColor = lightColor;
                            leftMenu.style.backgroundColor = lightColor;
                            linksMenu.style.backgroundColor = lightColor;
                            deathScreen.style.backgroundColor = lightColor;

                            elements.forEach((textElements) => {
                                textElements.style.color = darkColor2;
                            });
                        }
                    });
                    if (rxSettings.darkMode) {
                        darkMode_cb.checked = true;
                        darkM = true;
                        skin_text.style.color = lightColor;
                        menu.style.backgroundColor = darkColor;
                        rightMenu.style.backgroundColor = darkColor;
                        leftMenu.style.backgroundColor = darkColor;
                        linksMenu.style.backgroundColor = darkColor;
                        deathScreen.style.backgroundColor = darkColor;

                        elements.forEach((textElements) => {
                            textElements.style.color = lightColor;
                        });
                    } else {
                        darkM = false;
                        darkMode_cb.checked = false;
                    }
                }, 500);
            },
        },
        {
            modName: "",
            modType: "button",
            modDescription: "Mod Settings Button",
            modId: "SettingsButton",
            modCode: () => {
                rzModSettings.classList.toggle("hidden");
            },
        }, {
            modName: "input filter",
            modType: "automatic",
            modDescription: "filters invalid input",
            modCode: () => {
                setTimeout(() => {
                    const kinputs = ["modinput1", "modinput2", "modinput3", "modinput4", "modinput5"];
                    kinputs.forEach((modkey) => {
                        const kinput = document.getElementById(modkey);
                        kinput.addEventListener("input", () => {
                            const lowercaseValue = kinput.value.toLowerCase();
                            if (kinput !== lowercaseValue) {
                                kinput.value = lowercaseValue;
                            }
                            if (kinput.value !== "") {
                                if (kinputs.filter((item) => item === kinput.value).length > 1) {
                                    alert("This value already exists!");
                                    kinput.value = "";
                                    return;
                                } else {
                                    kinputs.forEach((otherKey) => {
                                        const otherInput = document.getElementById(otherKey);
                                        if (otherInput !== kinput && otherInput.value === kinput.value) {
                                            alert("You can't have 2 keybindings at the same time.");
                                            kinput.value = "";
                                            return;
                                        }
                                    });
                                }
                            }
                        });
                    });

                    let fastfeedkey = document.getElementById(kinputs[0]);

                    fastfeedkey.addEventListener("input", () => {
                        if (fastfeedkey.value === "w") {
                            alert("Currently, you can't change the fastfeed key to W. Please wait for updates.");
                            fastfeedkey.value = "";
                            return;
                        }
                    });

                }, 500)
            }
        }
    ];

    rzMods.forEach((mod) => {
        let modElement = null;

        switch (mod.modType) {
            case "automatic":
                mod.modCode.call();

                break;
            case "button":
                modElement = document.createElement("button");
                modElement.innerText = mod.modName;
                modElement.onclick = mod.modCode;
                modElement.title = mod.modDescription;
                modElement.id = mod.modId;
                break;
        }

        if (modElement) {
            document.body.append(modElement);
        }
    });

    document.body.prepend(rzModSettings);
    let V2S = `
    *{
        outline: none;
    }
    .flex {
        display: flex;
        justify-content: center;
    }
    #rx-mod-settings {
        background: #333;
        padding: 30px;
        border-radius: 15px;
        width: 350px;
        min-height: 200px;
        top: 1em;
        left: 50%;
        margin-left: -175px;
        z-index: 99999;
        box-shadow: 0 0 40px #8D00FF;
        position: fixed;
        text-align: center;
    }
    #rx-mod-settings input.keybinding {
        max-width: 20px;
        border: 1px solid #ccc;
        padding: 0;
        text-align: center;
        margin-right: 5px;
        outline: none;
        color: #fff;
        background-color: transparent;
        border: 1px solid #fff;
        border-radius: 5px;
        font-weight: 500;
    }
    #rx-mod-settings.hidden {
        display: none;
    }

    #text-block,#left_ad_block,#ad_bottom,.ad-block,.ad-block-left,.ad-block-right {
        display: none;
    }
    .cztop{
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
    .SettingsTitle{
        font-size: 32px;
        color: #EEE;
        margin-left: 10px;
    }
    .CloseBtn{
        outline: none;
        background-color: transparent;
        padding: 10px;
        font-size: 16px;
        transition: all .3s;
        color: #fff;
        border-radius: 15px;
        border: 2px solid #4C2B8D;
        width: 48px;
    }
    .CloseBtn:hover{
        border: 2px solid #5600FF;
    }
    .Sett{
        color: #fff;
        user-select: none;
        font-weight: 500;
    }
    .cztopleft{
        display: flex;
        align-items: center;
    }
    .titleImg{
        width: 50px;
        height: 50px;
        border-radius: 20px;
        object-fit: cover;
    }
    .modContainer {
        display: flex;
        justify-content: space-between;
    }
    .modButton{
        background-color: transparent;
        border: 1px solid #fff;
        border-radius: 5px;
        color: #fff;
        transition: all .3s;
        outline: none;
        padding: 5px;
        width: 60%;
        margin: 0 5px;
        font-size: 13px;
    }
    .modButton:hover {
        background-color: #5865F2;
    }
    #SettingsButton{
        background-color: transparent;
        height: 30px;
        background-image: url('https://i.ibb.co/pJhSvHJ/icons8-zahnrad-30.png');
        width: 30px;
        background-size: cover;
        border: none;
        outline: none;
        position: fixed;
        top: 15%;
        z-index:99997;
    }

    @media screen and (max-height: 800px) {
        #rx-mod-settings{
            top: 0
       }
    }
  `;

    let s = document.createElement("style");
    s.type = "text/css";
    s.innerHTML = V2S;
    (document.head || document.documentElement).appendChild(s);
})();

QingJ © 2025

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