// ==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);
})();