// ==UserScript== // @name Sigmally Mod (Macros) // @version 5.2 // @description Mod for Sigmally.com | Macros, Themes, Autorespawn and much more! // @author Cursed // @match *://sigmally.com/* // @icon https://i.ibb.co/Hn9qnjm/Sigmod-Logo.png // @run-at document-end // @license MIT // @namespace https://greasyfork.org/users/981958 // @downloadURL none // ==/UserScript== (function() { let version = 5; let logo = "https://i.ibb.co/Hn9qnjm/Sigmod-Logo.png"; 'use strict'; if(localStorage.getItem("SigmodSettings")) localStorage.removeItem("SigmodSettings"); let modSettings = localStorage.getItem("sig_modSettings"); if (!modSettings) { modSettings = { keyBindingsRapidFeed: "w", keyBindingsdoubleSplit: "d", keyBindingsTripleSplit: "f", keyBindingsQuadSplit: "g", keyBindingsFreezePlayer: "s", keyBindingsToggleMenu: "v", mapColor: null, nameColor: null, borderColor: null, mapImageURL: "", Theme: "Dark", addedThemes: [], savedNames: [], AutoRespawn: false, tag: 0, }; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } else { modSettings = JSON.parse(modSettings); } function keypress(key, keycode) { const keyDownEvent = new KeyboardEvent("keydown", { key: key, code: keycode }); const keyUpEvent = new KeyboardEvent("keyup", { key: key, code: keycode }); window.dispatchEvent(keyDownEvent); window.dispatchEvent(keyUpEvent); } function Client() { this.Username = "User"; this.getUsername(); } Client.prototype = { nick: document.getElementById("nick").value, getUsername() { let nick; setTimeout(() => { if(this.nick == "") { nick = "User" } else { nick = this.nick; } this.Username = uData.fullName || nick; mods.welcomeUser.textContent = `Welcome ${this.Username}, to SigMod!` }, 1500); } } const client = new Client(); function mod() { this.welcomeUser = document.createElement("span"); this.splitKey = { keyCode: 32, code: "Space", cancelable: true, composed: true, isTrusted: true, which: 32, } this.createMenu(); } mod.prototype = { get style() { return ` :root { --default-mod-color: #2E2D80; } input[type=range] { -webkit-appearance: none; height: 22px; background: transparent; cursor: pointer; } input[type=range]::-webkit-slider-runnable-track { -webkit-appearance: none; background: #542499; height: 4px; border-radius: 6px; } input[type=range]::-webkit-slider-thumb { appearance: none; background: #6B32BD; height: 16px; width: 16px; position: relative; top: -5px; border-radius: 50%; } input:focus, select:focus, button:focus{ outline: none; } .flex { display: flex; } .centerX { display: flex; justify-content: center; } .centerY { display: flex; align-items: center; } .centerXY { display: flex; align-items: center; justify-content: center } .f-column { display: flex; flex-direction: column; } #sig-mod-settings { border-radius: 4px; border: 2px solid rgba(255,255,255,.5); width: 440px; height: 355px; } .tabs_navigation { display: flex; justify-content: space-around; } .keybinding { max-width: 20px; text-align: center; margin-right: 5px; outline: none; color: #fff; background-color: #111; border: 0px solid #fff; font-weight: 500; border-bottom: 2px solid var(--default-mod-color); position: relative; border-top-right-radius: 4px; border-top-left-radius: 4px; transition: all .3s ease; } .keybinding:hover { background-color: #333; } .hidden { display: none; } #text-block,#left_ad_block,#ad_bottom,.ad-block,.ad-block-left,.ad-block-right { display: none; } .SettingsTitle{ font-size: 32px; color: #EEE; margin-left: 10px; } .CloseBtn{ width: 46px; background-color: transparent; } .text { user-select: none; font-weight: 500; text-align: left; } .titleImg{ width: 50px; height: 50px; border-radius: 20px; object-fit: cover; } .modContainer { display: flex; justify-content: space-between; } .modButton{ background-color: #333; border-radius: 5px; color: #fff; transition: all .3s; outline: none; padding: 5px; font-size: 13px; border: none; } .modButton:hover { background-color: #222 } .tabbtn { background-color: #111; border-bottom: 2px solid var(--default-mod-color); border-radius: 0; position: relative; border-top-right-radius: 2px; border-top-left-radius: 2px; box-shadow: 0 4px 10px -4px var(--default-mod-color); } .tabbtn::before { content: ""; position: absolute; left: 0; bottom: 0; width: 100%; height: 0; background: linear-gradient(to top, var(--default-mod-color), transparent); transition: height 0.3s ease; } .tabbtn:hover::before { height: 30%; } .modInput { background-color: #111; border: none; border-bottom: 2px solid var(--default-mod-color); border-radius: 0; position: relative; border-top-right-radius: 4px; border-top-left-radius: 4px; font-family: arial; font-weight: 500; padding: 4px; box-shadow: 0 4px 10px -4px var(--default-mod-color); color: #fff; } .SettingsButton{ border: none; outline: none; margin-right: 10px; transition: all .3s ease; } .SettingsButton:hover { scale: 1.1; } .colorInput{ background-color: transparent; width: 33px; height: 35px; border-radius: 50%; border: none; } .colorInput::-webkit-color-swatch { border-radius: 50%; border: 1px solid #000; } .whiteBorder_colorInput::-webkit-color-swatch { border-color: #fff; } #dclinkdiv { display: flex; flex-direction: row; } .dclinks { width: calc(50% - 5px); height: 36px; display: flex; justify-content: center; align-items: center; background-color: rgba(88, 101, 242, 1); border-radius: 6px; margin: 0 auto; color: #fff; } #settings { display: flex; flex-direction: column; } #cm_close__settings { width: 50px; transition: all .3s ease; } #cm_close__settings svg:hover { scale: 1.1; } #cm_close__settings svg { transition: all .3s ease; } .modTitleText { text-align: center; font-size: 16px; } #settings > .checkbox-grid { width: 232px; } .ModSettings { display: flex; justify-content: center; } .settingsTitle { margin-bottom: 6px; text-decoration: underline; font-size: 16px font-weight: 600 } .tab { display: none; } .modItem { display: flex; justify-content: center; align-items: center; flex-direction: column; } .tab-content { margin: 10px; } .w-100 { width: 100% } .btnRS { margin: 0 5px; width: 50% } #savedNames { background-color: #222; padding: 5px; border-top-left-radius: 5px; overflow-y: scroll; width: 200px; height: 170px; display: flex; border-bottom: 2px solid var(--default-mod-color); box-shadow: 0 4px 20px -4px var(--default-mod-color); } #savedNames::-webkit-scrollbar, .themes::-webkit-scrollbar, .modKeybindings::-webkit-scrollbar { width: 10px; } #savedNames::-webkit-scrollbar-track, .themes::-webkit-scrollbar-track, .modKeybindings::-webkit-scrollbar-track { background: #222; border-radius: 5px; } #savedNames::-webkit-scrollbar-thumb, .themes::-webkit-scrollbar-thumb, .modKeybindings::-webkit-scrollbar-thumb { background-color: #555; border-radius: 5px; } #savedNames::-webkit-scrollbar-thumb:hover, .themes::-webkit-scrollbar-thumb:hover, .modKeybindings::-webkit-scrollbar-thumb:hover { background: #666; } .themes { display: flex; flex-direction: row; width: 100%; height: 220px; background: #000; border-radius: 5px; overflow-y: scroll; gap: 10px; padding: 5px; flex-wrap: wrap; justify-content: center; } .themeContent { width: 50px; height: 50px; border: 2px solid #222; border-radius: 50%; background-position: center; } .theme { height: 75px; display: flex; align-items: center; justify-content: center; flex-direction: column; cursor: pointer; } .delName { font-weight: 500; background: #e17e7e; height: 20px; border: none; border-radius: 5px; font-size: 10px; margin-left: 5px; color: #fff; display: flex; justify-content: center; align-items: center; width: 20px; } .NameDiv { display: flex; background: #151515; border-radius: 5px; margin: 5px; padding: 3px 8px; height: 34px; align-items: center; justify-content: space-between; cursor: pointer; box-shadow: 0 4px 10px -4px var(--default-mod-color); } .NameLabel { cursor: pointer; font-weight: 500; text-align: center; color: #fff; } .resetButton { width: 25px; height: 25px; background-image: url("https://raw.githubusercontent.com/Sigmally/SigMod/main/images/reset.svg"); background-color: transparent; border: none; } .modAlert { position: absolute; top: 50px; left: 50%; transform: translate(-50%, -50%); z-index: 99998; background: #57C876; padding: 10px; border-radius: 10px; text-align: center; transition: all .3s ease-out; } .modAlert > .text { color: #fff; } .donate { position: fixed; top: 80px; left: 50%; transform: translate(-50%, -50%); z-index: 99995; background: #3F3F3F; border-radius: 10px; display: flex; flex-direction: column; padding: 10px; color: #fff; } .themeEditor { z-index: 100000; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(0, 0, 0, .85); color: #fff; padding: 10px; border-radius: 10px; box-shadow: 0 0 10px #fff; width: 400px; } .theme_editor_header { display: flex; justify-content: space-between; align-items: center; gap: 10px; } .theme-editor-tab { display: flex; justify-content: center; align-items: start; flex-direction: column; margin-top: 10px } .themes_preview { width: 50px; height: 50px; border: 2px solid #fff; border-radius: 2px; display: flex; justify-content: center; align-items: center; } .modKeybindings { display: flex; flex-direction: column; overflow-y: scroll; max-height: 170px; } .modKeybindings > label { margin-right: 5px; } #signInBtn, #nick, #tag, #gamemode, #option_0, #option_1, #option_2, .form-control { background: rgba(0, 0, 0, 0.4); color: #fff; } .btn, .sign-in-out-btn { transition: all .2s ease; } #gallery-content, #gallery-tab-buttons, #gallery-tab-buttons::after, #skin-search, .skin { background: #151515; } #gallery-content { box-shadow: 0 0 10px rgba(255,255,255,.5) } .skin-select__icon-text { color: #fff; } ` }, respawnTime: Date.now(), respawnCooldown: 1000, move(cx, cy) { const mouseMoveEvent = new MouseEvent("mousemove", { clientX: cx, clientY: cy }); const canvas = document.querySelector("canvas"); canvas.dispatchEvent(mouseMoveEvent); }, center(sx, sy) { const mouseMoveEvent = new MouseEvent("mousemove", { clientX: sx, clientY: sy }); const canvas = document.getElementById("canvas"); canvas.dispatchEvent(mouseMoveEvent); }, getColors() { const mapColor = document.getElementById("mapColor"); const mapImage = document.getElementById("mapImage"); const originalFillRect = CanvasRenderingContext2D.prototype.fillRect; function ChangeMapColor() { CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) { if ((width + height) / 2 === (window.innerWidth + window.innerHeight) / 2) { this.fillStyle = mapColor.value; } originalFillRect.apply(this, arguments); }; modSettings.mapColor = mapColor.value; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } mapColor.addEventListener("input", ChangeMapColor); function ChangeMapImage() { const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); const img = new Image(); let pattern; img.onload = function () { const tempCanvas = document.createElement("canvas"); const tempCtx = tempCanvas.getContext("2d"); tempCanvas.width = img.width; tempCanvas.height = img.height; tempCtx.drawImage(img, 0, 0); pattern = ctx.createPattern(tempCanvas, "repeat"); fillCanvas(); }; function fillCanvas() { const fillRect = CanvasRenderingContext2D.prototype.fillRect; CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) { this.fillStyle = pattern; fillRect.apply(this, arguments); }; ctx.fillRect(0, 0, canvas.width, canvas.height); } img.src = mapImage.value; modSettings.mapImageURL = mapImage.value; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } document.getElementById("setMapImage").addEventListener("click", () => { if(mapImage.value == "") return const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); const img = new Image(); let pattern; img.onload = function() { const tempCanvas = document.createElement("canvas"); const tempCtx = tempCanvas.getContext("2d"); tempCanvas.width = img.width; tempCanvas.height = img.height; tempCtx.drawImage(img, 0, 0); pattern = ctx.createPattern(tempCanvas, "repeat"); fillCanvas(); }; function fillCanvas() { const fillRect = CanvasRenderingContext2D.prototype.fillRect; CanvasRenderingContext2D.prototype.fillRect = function(x, y, width, height) { this.fillStyle = pattern; fillRect.apply(this, arguments); }; ctx.fillRect(0, 0, canvas.width, canvas.height); } img.src = mapImage.value; modSettings.mapImageURL = mapImage.value; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); }); const mapColorReset = document.getElementById("mapColorReset"); mapColorReset.addEventListener("click", () => { modSettings.mapColor = null; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); const mapColor = document.getElementById("mapColor"); mapColor.value = ""; }); const removeButton = document.getElementById("removeMapImage"); removeButton.addEventListener("click", () => { if (mapImage.value == "" || modSettings.mapImageURL === "") return; if (confirm("You need to reload the page to remove the background image. Reload?")) { modSettings.mapImageURL = ""; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); location.reload(); } }); if (localStorage.getItem("sig_modSettings")) { function ChangeMapColor() { CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) { if ((width + height) / 2 === (window.innerWidth + window.innerHeight) / 2) { this.fillStyle = modSettings.mapColor; } originalFillRect.apply(this, arguments); }; } ChangeMapColor(); function ChangeMapImage() { const canvas = document.getElementById("canvas"); const ctx = canvas.getContext("2d"); const img = new Image(); let pattern; img.onload = function () { const tempCanvas = document.createElement("canvas"); const tempCtx = tempCanvas.getContext("2d"); tempCanvas.width = img.width; tempCanvas.height = img.height; tempCtx.drawImage(img, 0, 0); pattern = ctx.createPattern(tempCanvas, "repeat"); fillCanvas(); }; function fillCanvas() { const fillRect = CanvasRenderingContext2D.prototype.fillRect; CanvasRenderingContext2D.prototype.fillRect = function (x, y, width, height) { this.fillStyle = pattern; fillRect.apply(this, arguments); }; ctx.fillRect(0, 0, canvas.width, canvas.height); } img.src = modSettings.mapImageURL; } mapImage.value = modSettings.mapImageURL; ChangeMapImage(); } }, setColors() { // - NAME - // const nameColorValue = document.getElementById("nameColor"); const fillText = CanvasRenderingContext2D.prototype.fillText; nameColorValue.addEventListener("input", () => { CanvasRenderingContext2D.prototype.fillText = function(text, x, y) { if (text === document.getElementById("nick").value && this.playerId == this.playerId) { const width = this.measureText(text).width; this.fillStyle = nameColorValue.value; } return fillText.apply(this, arguments); }; modSettings.nameColor = nameColorValue.value localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)) }) if (localStorage.getItem("sig_modSettings")) { const nameColor = document.getElementById("nameColor"); CanvasRenderingContext2D.prototype.fillText = function(text, x, y) { if (text === document.getElementById("nick").value) { const width = this.measureText(text).width; this.fillStyle = modSettings.nameColor; } return fillText.apply(this, arguments); }; nameColor.value = modSettings.nameColor; } const nameColorReset = document.getElementById("nameColorReset"); nameColorReset.addEventListener("click", () => { CanvasRenderingContext2D.prototype.fillText = function(text, x, y) { if (text === document.getElementById("nick").value) { const width = this.measureText(text).width; const fontSize = 8; this.fillStyle = "#ffffff"; } return fillText.apply(this, arguments); }; nameColorValue.value = "#ffffff" modSettings.nameColor = null; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)) }); if(modSettings.nameColor == null) nameColorValue.value = "#ffffff"; // - BORDER - // const borderColorinput = document.getElementById("borderColor"); const borderColorReset = document.getElementById("borderColorReset"); const moveTo = CanvasRenderingContext2D.prototype.moveTo; borderColorinput.addEventListener("input", () => { CanvasRenderingContext2D.prototype.moveTo = function(x, y) { this.strokeStyle = borderColorinput.value; return moveTo.apply(this, arguments) } modSettings.borderColor = borderColorinput.value; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)) }) borderColorReset.addEventListener("click", () => { CanvasRenderingContext2D.prototype.moveTo = function(x, y) { this.strokeStyle = "" return moveTo.apply(this, arguments) } modSettings.borderColor = ""; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); }) if(modSettings.borderColor !== null) { CanvasRenderingContext2D.prototype.moveTo = function(x, y) { this.strokeStyle = modSettings.borderColor; return moveTo.apply(this, arguments) } } }, menu() { let Tab1; let Tab2; let Tab3; let Tab4; let Tab5; const welcomeuser = this.welcomeUser; const ModSettings = document.createElement("div"); const KeyBindings = document.createElement("div"); function openTab(tab) { let tabSelected = document.getElementById(tab); let allTabs = document.getElementsByClassName("tab"); for (let i = 0; i < allTabs.length; i++) { allTabs[i].style.display = "none"; } tabSelected.style.display = "flex"; } const settings = document.querySelector("#cm_modal__settings > .ctrl-modal__overlay > .ctrl-modal__modal"); const DefaultSettings = document.querySelector("#settings > .checkbox-grid"); const settingsTitle = settings.querySelector(".ctrl-modal__header > .ctrl-modal__title"); settingsTitle.innerHTML = ` SigMod Settings` settingsTitle.style.textAlign = "left"; settings.setAttribute("id", "sig-mod-settings"); const settingsHeader = settings.querySelector(".ctrl-modal__header"); const menuTabs = document.createElement("div"); menuTabs.classList.add("tabs_navigation"); menuTabs.innerHTML = ` `; settingsHeader.insertAdjacentElement("afterend", menuTabs); const gameSettings = document.querySelector("#settings"); const defaultSettingsTitle = document.createElement("span"); defaultSettingsTitle.textContent = "Basic Settings"; defaultSettingsTitle.classList.add("text", "settingsTitle"); gameSettings.insertAdjacentElement("afterbegin", defaultSettingsTitle); welcomeuser.textContent = `Welcome Guest, to SigMod!`; welcomeuser.classList.add("text"); welcomeuser.style = "margin: 10px 0; text-align: center; font-size: 16px;"; const bsettings = document.querySelector("#sig-mod-settings > .ctrl-modal__content > .menu__item"); bsettings.classList.add("tab") bsettings.style = "display: flex; flex-direction: column; margin: 0"; bsettings.insertAdjacentElement("afterbegin", welcomeuser); Tab1 = bsettings; Tab1.setAttribute("id", "Tab1") Tab2 = document.createElement("div"); Tab2.classList.add("centerX"); Tab2.innerHTML = `
Map Color
Border Colors
Map image:
`; Tab2.classList.add("tab", "hidden"); Tab2.setAttribute("id", "Tab2"); Tab3 = document.createElement("div"); Tab3.innerHTML = `
Save names
Name Color
saved:
`; Tab3.classList.add("tab", "hidden", "centerX"); Tab3.setAttribute("id", "Tab3"); Tab4 = document.createElement("div"); Tab4.innerHTML = `
Create
`; Tab4.classList.add("tab", "hidden", "centerX"); Tab4.setAttribute("id", "Tab4"); Tab5 = document.createElement("div"); Tab5.innerHTML = ` `; Tab5.classList.add("tab", "hidden"); Tab5.setAttribute("id", "Tab5"); Tab5.style.margin = "20px 0" document.getElementById("modHome").addEventListener("click", () => { openTab("Tab1"); }); document.getElementById("GameOptions").addEventListener("click", () => { openTab("Tab2"); }); document.getElementById("NameOptions").addEventListener("click", () => { openTab("Tab3"); }); document.getElementById("modThemes").addEventListener("click", () => { openTab("Tab4"); }); document.getElementById("modInfo").addEventListener("click", () => { openTab("Tab5"); }); const tabContent = document.querySelector("#sig-mod-settings > .ctrl-modal__content"); tabContent.append(Tab2) tabContent.append(Tab3) tabContent.append(Tab4) tabContent.append(Tab5) KeyBindings.classList.add("modKeybindings") KeyBindings.innerHTML = ` KeyBindings `; bsettings.append(ModSettings); ModSettings.append(gameSettings) ModSettings.append(KeyBindings); ModSettings.classList.add("ModSettings") document.querySelector("#cm_close__settings svg").setAttribute("width", "22") document.querySelector("#cm_close__settings svg").setAttribute("height", "24") }, Themes() { const elements = [ "#menu", ".top-users__inner", "#left-menu", ".menu-links", ".menu--stats-mode", "#cm_modal__settings > .ctrl-modal__overlay > .ctrl-modal__modal" ]; const themeEditor = document.createElement("div"); themeEditor.classList.add("themeEditor", "hidden"); themeEditor.innerHTML = `

Theme Editor


Select Theme Type:
preview
`; document.body.append(themeEditor); setTimeout(() => { const themeTypeSelect = document.getElementById("theme-type-select"); const colorTab = document.getElementById("theme_editor_color"); const gradientTab = document.getElementById("theme_editor_gradient"); const imageTab = document.getElementById("theme_editor_image"); const gradientAngleDiv = document.getElementById("theme-editor-gradient_angle"); themeTypeSelect.addEventListener("change", function() { const selectedOption = themeTypeSelect.value; switch (selectedOption) { case "Static Color": colorTab.style.display = "flex"; gradientTab.style.display = "none"; imageTab.style.display = "none"; break; case "Gradient": colorTab.style.display = "none"; gradientTab.style.display = "flex"; imageTab.style.display = "none"; break; case "Image / Gif": colorTab.style.display = "none"; gradientTab.style.display = "none"; imageTab.style.display = "flex"; break; default: colorTab.style.display = "flex"; gradientTab.style.display = "none"; imageTab.style.display = "none"; } }); const colorInputs = document.querySelectorAll("#theme_editor_color .colorInput"); colorInputs.forEach(input => { input.addEventListener("input", function() { const bgColorInput = document.getElementById("theme-editor-bgcolorinput").value; const textColorInput = document.getElementById("theme-editor-colorinput").value; applyColorTheme(bgColorInput, textColorInput); }); }); const gradientInputs = document.querySelectorAll("#theme_editor_gradient .colorInput"); gradientInputs.forEach(input => { input.addEventListener("input", function() { const gColor1 = document.getElementById("theme-editor-gcolor1").value; const gColor2 = document.getElementById("theme-editor-g_color").value; const gTextColor = document.getElementById("theme-editor-gcolor2").value; const gAngle = document.getElementById("g_angle").value; const gradientType = document.getElementById("gradient-type").value; applyGradientTheme(gColor1, gColor2, gTextColor, gAngle, gradientType); }); }); const imageInputs = document.querySelectorAll("#theme_editor_image .colorInput"); imageInputs.forEach(input => { input.addEventListener("input", function() { const imageLinkInput = document.getElementById("theme-editor-imagelink").value; const textColorImageInput = document.getElementById("theme-editor-textcolorImage").value; let img; if(imageLinkInput == "") { img = "https://i.ibb.co/k6hn4v0/Galaxy-Example.png" } else { img = imageLinkInput; } applyImageTheme(img, textColorImageInput); }); }); const image_preview = document.getElementById("image_preview"); const image_link = document.getElementById("theme-editor-imagelink"); let isWriting = false; let timeoutId; image_link.addEventListener("input", () => { if (!isWriting) { isWriting = true; } else { clearTimeout(timeoutId); } timeoutId = setTimeout(() => { const imageLinkInput = image_link.value; const textColorImageInput = document.getElementById("theme-editor-textcolorImage").value; let img; if (imageLinkInput === "") { img = "https://i.ibb.co/k6hn4v0/Galaxy-Example.png"; } else { img = imageLinkInput; } applyImageTheme(img, textColorImageInput); isWriting = false; }, 1000); }); const gradientTypeSelect = document.getElementById("gradient-type"); const angleInput = document.getElementById("g_angle"); gradientTypeSelect.addEventListener("change", function() { const selectedType = gradientTypeSelect.value; gradientAngleDiv.style.display = selectedType === "linear" ? "flex" : "none"; const gColor1 = document.getElementById("theme-editor-gcolor1").value; const gColor2 = document.getElementById("theme-editor-g_color").value; const gTextColor = document.getElementById("theme-editor-gcolor2").value; const gAngle = document.getElementById("g_angle").value; applyGradientTheme(gColor1, gColor2, gTextColor, gAngle, selectedType); }); angleInput.addEventListener("input", function() { const gradient_angle_text = document.getElementById("gradient_angle_text"); gradient_angle_text.innerText = `Angle (${angleInput.value}deg): `; const gColor1 = document.getElementById("theme-editor-gcolor1").value; const gColor2 = document.getElementById("theme-editor-g_color").value; const gTextColor = document.getElementById("theme-editor-gcolor2").value; const gAngle = document.getElementById("g_angle").value; const gradientType = document.getElementById("gradient-type").value; applyGradientTheme(gColor1, gColor2, gTextColor, gAngle, gradientType); }); function applyColorTheme(bgColor, textColor) { const previewDivs = document.querySelectorAll("#theme_editor_color .themes_preview"); previewDivs.forEach(previewDiv => { previewDiv.style.backgroundColor = bgColor; const textSpan = previewDiv.querySelector("span.text"); textSpan.style.color = textColor; }); } function applyGradientTheme(gColor1, gColor2, gTextColor, gAngle, gradientType) { const previewDivs = document.querySelectorAll("#theme_editor_gradient .themes_preview"); previewDivs.forEach(previewDiv => { const gradient = gradientType === "linear" ? `linear-gradient(${gAngle}deg, ${gColor1}, ${gColor2})` : `radial-gradient(circle, ${gColor1}, ${gColor2})`; previewDiv.style.background = gradient; const textSpan = previewDiv.querySelector("span.text"); textSpan.style.color = gTextColor; }); } function applyImageTheme(imageLink, textColor) { const previewDivs = document.querySelectorAll("#theme_editor_image .themes_preview"); previewDivs.forEach(previewDiv => { previewDiv.style.backgroundImage = `url('${imageLink}')`; const textSpan = previewDiv.querySelector("span.text"); textSpan.style.color = textColor; }); } const createTheme = document.getElementById("createTheme"); createTheme.addEventListener("click", () => { themeEditor.style.display = "block"; }); const closeThemeEditor = document.getElementById("closeThemeEditor"); closeThemeEditor.addEventListener("click", () => { themeEditor.style.display = "none"; }); let themesDiv = document.getElementById("themes") const saveColorThemeBtn = document.getElementById("saveColorTheme"); const saveGradientThemeBtn = document.getElementById("saveGradientTheme"); const saveImageThemeBtn = document.getElementById("saveImageTheme"); saveColorThemeBtn.addEventListener("click", () => { const name = document.getElementById("colorThemeName").value; const bgColorInput = document.getElementById("theme-editor-bgcolorinput").value; const textColorInput = document.getElementById("theme-editor-colorinput").value; if(name == "") return const theme = { name: name, background: bgColorInput, text: textColorInput }; const themeCard = document.createElement("div"); themeCard.classList.add("theme"); let themeBG; if (theme.background.includes("http")) { themeBG = `background: url(${theme.background})`; } else { themeBG = `background: ${theme.background}`; } themeCard.innerHTML = `
${theme.name}
`; themeCard.addEventListener("click", () => { toggleTheme(theme); }); themeCard.addEventListener('contextmenu', (ev) => { ev.preventDefault(); if(confirm("Do you want to delete this Theme?")) { themeCard.remove(); const themeIndex = modSettings.addedThemes.findIndex((addedTheme) => addedTheme.name === theme.name); if (themeIndex !== -1) { modSettings.addedThemes.splice(themeIndex, 1); localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } } }); themesDiv.appendChild(themeCard); modSettings.addedThemes.push(theme) localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); themeEditor.style.display = "none"; themesDiv.scrollTop = themesDiv.scrollHeight; }); saveGradientThemeBtn.addEventListener("click", () => { const name = document.getElementById("GradientThemeName").value; const gColor1 = document.getElementById("theme-editor-gcolor1").value; const gColor2 = document.getElementById("theme-editor-g_color").value; const gTextColor = document.getElementById("theme-editor-gcolor2").value; const gAngle = document.getElementById("g_angle").value; const gradientType = document.getElementById("gradient-type").value; if(name == "") return let gradient_radial_linear = () => { if(gradientType == "linear") { return `${gradientType}-gradient(${gAngle}deg, ${gColor1}, ${gColor2})` } else if (gradientType == "radial") { return `${gradientType}-gradient(circle, ${gColor1}, ${gColor2})` } } const theme = { name: name, background: gradient_radial_linear(), text: gTextColor, }; const themeCard = document.createElement("div"); themeCard.classList.add("theme"); let themeBG; if (theme.background.includes("http")) { themeBG = `background: url(${theme.background})`; } else { themeBG = `background: ${theme.background}`; } themeCard.innerHTML = `
${theme.name}
`; themeCard.addEventListener("click", () => { toggleTheme(theme); }); themeCard.addEventListener('contextmenu', (ev) => { ev.preventDefault(); if(confirm("Do you want to delete this Theme?")) { themeCard.remove(); const themeIndex = modSettings.addedThemes.findIndex((addedTheme) => addedTheme.name === theme.name); if (themeIndex !== -1) { modSettings.addedThemes.splice(themeIndex, 1); localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } } }); themesDiv.appendChild(themeCard); modSettings.addedThemes.push(theme) localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); themeEditor.style.display = "none"; themesDiv.scrollTop = themesDiv.scrollHeight; }); saveImageThemeBtn.addEventListener("click", () => { const name = document.getElementById("imageThemeName").value; const imageLink = document.getElementById("theme-editor-imagelink").value; const textColorImageInput = document.getElementById("theme-editor-textcolorImage").value; if(name == "" || imageLink == "") return const theme = { name: name, background: imageLink, text: textColorImageInput }; const themeCard = document.createElement("div"); themeCard.classList.add("theme"); let themeBG; if (theme.background.includes("http")) { themeBG = `background: url(${theme.background})`; } else { themeBG = `background: ${theme.background}`; } themeCard.innerHTML = `
${theme.name}
`; themeCard.addEventListener("click", () => { toggleTheme(theme); }); themeCard.addEventListener('contextmenu', (ev) => { ev.preventDefault(); if(confirm("Do you want to delete this Theme?")) { themeCard.remove(); const themeIndex = modSettings.addedThemes.findIndex((addedTheme) => addedTheme.name === theme.name); if (themeIndex !== -1) { modSettings.addedThemes.splice(themeIndex, 1); localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } } }); themesDiv.appendChild(themeCard); modSettings.addedThemes.push(theme) localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); themeEditor.style.display = "none"; themesDiv.scrollTop = themesDiv.scrollHeight; }); }); const b_inner = document.querySelector(".body__inner"); let bodyColorElements = b_inner.querySelectorAll( ".body__inner > :not(.body__inner), #s-skin-select-icon-text" ); const toggleColor = (element, background, text) => { let image = `url("${background}")`; if (background.includes("http")) { element.style.background = image; element.style.backgroundPosition = "center"; element.style.backgroundSize = "cover"; element.style.backgroundRepeat = "no-repeat"; } else { element.style.background = background; element.style.backgroundRepeat = "no-repeat"; } element.style.color = text; }; const openSVG = document.querySelector("#clans_and_settings > Button > svg"); const openSVGPath = document.querySelector("#clans_and_settings > Button > svg > path"); const newPath = openSVG.setAttribute("fill", "#fff") const closeSVGPath = document.querySelector("#cm_close__settings > svg > path"); openSVG.setAttribute("width", "36") openSVG.setAttribute("height", "36") const toggleTheme = (theme) => { if (theme.text === "#FFFFFF") { openSVGPath.setAttribute("fill", "#fff") closeSVGPath.setAttribute("stroke", "#fff") } else { closeSVGPath.setAttribute("stroke", "#222"); openSVG.setAttribute("fill", "#222"); } const backgroundColor = theme.background; const textColor = theme.text; elements.forEach((element) => { const el = document.querySelector(element); toggleColor(el, backgroundColor, textColor); }); bodyColorElements.forEach((element) => { element.style.color = textColor; }); modSettings.Theme = theme.name; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); }; const themes = { defaults: [ { name: "Dark", background: "#151515", text: "#FFFFFF" }, { name: "White", background: "#ffffff", text: "#000000" }, ], orderly: [ { name: "THC", background: "linear-gradient(160deg, #9BEC7A, #117500)", text: "#000000" }, { name: "4 AM", background: "linear-gradient(160deg, #8B0AE1, #111)", text: "#FFFFFF" }, { name: "OTO", background: "linear-gradient(160deg, #A20000, #050505)", text: "#FFFFFF" }, { name: "Gaming", background: "https://i.ibb.co/DwKkQfh/BG-1-lower-quality.jpg", text: "#FFFFFF" }, { name: "Shapes", background: "https://i.ibb.co/h8TmVyM/BG-2.png", text: "#FFFFFF" }, { name: "Blue", background: "https://i.ibb.co/9yQBfWj/BG-3.png", text: "#FFFFFF" }, { name: "Blue - 2", background: "https://i.ibb.co/7RJvNCX/BG-4.png", text: "#FFFFFF" }, { name: "Purple", background: "https://i.ibb.co/vxY15Tv/BG-5.png", text: "#FFFFFF" }, { name: "Orange Blue", background: "https://i.ibb.co/99nfFBN/BG-6.png", text: "#FFFFFF" }, { name: "Gradient", background: "https://i.ibb.co/hWMLwLS/BG-7.png", text: "#FFFFFF" }, { name: "Sky", background: "https://i.ibb.co/P4XqDFw/BG-9.png", text: "#000000" }, { name: "Sunset", background: "https://i.ibb.co/0BVbYHC/BG-10.png", text: "#FFFFFF" }, { name: "Galaxy", background: "https://i.ibb.co/MsssDKP/Galaxy.png", text: "#FFFFFF" }, { name: "Planet", background: "https://i.ibb.co/KLqWM32/Planet.png", text: "#FFFFFF" }, { name: "colorful", background: "https://i.ibb.co/VqtB3TX/colorful.png", text: "#FFFFFF" }, { name: "Sunset - 2", background: "https://i.ibb.co/TLp2nvv/Sunset.png", text: "#FFFFFF" }, { name: "Epic", background: "https://i.ibb.co/kcv4tvn/Epic.png", text: "#FFFFFF" }, { name: "Galaxy - 2", background: "https://i.ibb.co/smRs6V0/galaxy.png", text: "#FFFFFF" }, { name: "Cloudy", background: "https://i.ibb.co/MCW7Bcd/cloudy.png", text: "#000000" }, ] }; function createThemeCard(theme) { const themeCard = document.createElement("div"); themeCard.classList.add("theme"); let themeBG; if (theme.background.includes("http")) { themeBG = `background: url(${theme.background})`; } else { themeBG = `background: ${theme.background}`; } themeCard.innerHTML = `
${theme.name}
`; themeCard.addEventListener("click", () => { toggleTheme(theme); }); if (modSettings.addedThemes.includes(theme)) { themeCard.addEventListener('contextmenu', function(ev) { ev.preventDefault(); if (confirm("Do you want to delete this Theme?")) { themeCard.remove(); const themeIndex = modSettings.addedThemes.findIndex((addedTheme) => addedTheme.name === theme.name); if (themeIndex !== -1) { modSettings.addedThemes.splice(themeIndex, 1); localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } } }, false); } return themeCard; } const themesContainer = document.getElementById("themes"); themes.defaults.forEach((theme) => { const themeCard = createThemeCard(theme); themesContainer.append(themeCard); }); const orderlyThemes = [...themes.orderly, ...modSettings.addedThemes]; orderlyThemes.sort((a, b) => a.name.localeCompare(b.name)); orderlyThemes.forEach((theme) => { const themeCard = createThemeCard(theme); themesContainer.appendChild(themeCard); }); const savedTheme = modSettings.Theme; if (savedTheme) { let selectedTheme; selectedTheme = themes.defaults.find((theme) => theme.name === savedTheme); if (!selectedTheme) { selectedTheme = themes.orderly.find((theme) => theme.name === savedTheme) || modSettings.addedThemes.find((theme) => theme.name === savedTheme); } if (selectedTheme) { toggleTheme(selectedTheme); } } }, smallMods() { const welcomeuser = this.welcomeUser; const gameSettings = document.querySelector(".checkbox-grid"); gameSettings.innerHTML += `
  • `; let autoRespawn = document.getElementById("autoRespawn"); let autoRespawnEnabled = false; autoRespawn.addEventListener("change", () => { if(!autoRespawnEnabled) { modSettings.AutoRespawn = true; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)) autoRespawnEnabled = true; } else { modSettings.AutoRespawn = false; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)) autoRespawnEnabled = false; } }); if(localStorage.getItem("sig_modSettings")) { if(modSettings.AutoRespawn) { autoRespawn.checked = true; autoRespawnEnabled = true; } } const gameTitle = document.getElementById("title"); gameTitle.innerHTML = 'SigmallyMod by Cursed'; const nickName = document.getElementById("nick"); nickName.maxLength = 50; }, saveNames() { let savedNames = modSettings.savedNames; let savedNamesOutput = document.getElementById("savedNames"); let saveNameBtn = document.getElementById("saveName"); let saveNameInput = document.getElementById("saveNameValue"); const createNameDiv = (name) => { let nameDiv = document.createElement("div"); nameDiv.classList.add("NameDiv"); let nameLabel = document.createElement("label"); nameLabel.classList.add("NameLabel"); nameLabel.innerText = name; let delName = document.createElement("button"); delName.innerText = "X"; delName.classList.add("delName"); nameDiv.addEventListener("click", () => { navigator.clipboard.writeText(nameLabel.innerText).then(() => { const copiedAlert = document.createElement("div"); copiedAlert.innerHTML = ` Added Nickname to clipboard! `; copiedAlert.classList.add("modAlert"); setTimeout(() => { copiedAlert.style.opacity = 0; setTimeout(() => { copiedAlert.remove(); }, 300) }, 500) document.querySelector(".body__inner").append(copiedAlert) }); }); delName.addEventListener("click", () => { if (confirm("Are you sure you want to delete the name '" + nameLabel.innerText + "'?")) { console.log("deleted name: " + nameLabel.innerText); nameDiv.remove(); savedNames = savedNames.filter((n) => n !== nameLabel.innerText); modSettings.savedNames = savedNames; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } }); nameDiv.appendChild(nameLabel); nameDiv.appendChild(delName); return nameDiv; }; saveNameBtn.addEventListener("click", () => { if (saveNameInput.value == "") { console.log("empty name"); } else { setTimeout(() => { saveNameInput.value = ""; }, 10); if (savedNames.includes(saveNameInput.value)) { console.log("You already have this name saved!"); return; } let nameDiv = createNameDiv(saveNameInput.value); savedNamesOutput.appendChild(nameDiv); savedNames.push(saveNameInput.value); modSettings.savedNames = savedNames; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); } }); if (savedNames.length > 0) { savedNames.forEach((name) => { let nameDiv = createNameDiv(name); savedNamesOutput.appendChild(nameDiv); }); } }, Macros() { const KEY_SPLIT = this.splitKey; let ff = null; let keydown = false; let open = false; document.addEventListener("keyup", (e) => { if (e.key == modSettings.keyBindingsRapidFeed && keydown) { clearInterval(ff); keydown = false; } }); document.addEventListener("keydown", (e) => { if (document.activeElement instanceof HTMLInputElement) return; if (e.key == "Tab") { e.preventDefault(); } if (e.key == modSettings.keyBindingsToggleMenu) { if (!open) { _cm_settings_open(); open = true; } else { document.querySelector("#cm_close__settings").click(); open = false; } } if (e.key === modSettings.keyBindingsSwitchChat) { if (modSettings.showClientChat) { document.getElementById("mainBtn").click(); } else { document.getElementById("partyBtn").click(); } } if (e.key == modSettings.keyBindingsFreezePlayer) { const CX = document.getElementById("canvas").width / 2; const CY = document.getElementById("canvas").height / 2; this.center(CX, CY); } if (e.key == modSettings.keyBindingsRapidFeed && !keydown) { keydown = true; function fastMass() { let x = 15; while (x--) { keypress("w", "KeyW"); } } ff = setInterval(fastMass, 50); } if (e.key == modSettings.keyBindingsdoubleSplit) { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); setTimeout(() => { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); }, 50); return; } if (e.key == modSettings.keyBindingsTripleSplit) { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); setTimeout(() => { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); setTimeout(() => { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); }, 50) }, 50) return; } if (e.key == modSettings.keyBindingsQuadSplit) { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); setTimeout(() => { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); setTimeout(() => { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); setTimeout(() => { window.dispatchEvent(new KeyboardEvent("keydown", KEY_SPLIT)); window.dispatchEvent(new KeyboardEvent("keyup", KEY_SPLIT)); }, 50) }, 50) }, 50) return; } }); }, setInputActions() { const macroInputs = ["modinput1", "modinput2", "modinput3", "modinput4", "modinput5", "modinput6", "modinput7"]; macroInputs.forEach((modkey) => { const modInput = document.getElementById(modkey); document.addEventListener("keydown", (event) => { if (document.activeElement !== modInput) return; if (event.key === "Backspace") { modInput.value = ""; let propertyName = modInput.name; modSettings[propertyName] = ""; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); return; } modInput.value = event.key.toLowerCase(); if (modInput.value !== "" && (macroInputs.filter((item) => item === modInput.value).length > 1 || macroInputs.some((otherKey) => { const otherInput = document.getElementById(otherKey); return otherInput !== modInput && otherInput.value === modInput.value; }))) { alert("You can't use 2 keybindings at the same time."); setTimeout(() => {modInput.value = ""}) return; } let propertyName = modInput.name; modSettings[propertyName] = modInput.value; localStorage.setItem("sig_modSettings", JSON.stringify(modSettings)); }); }); }, mainMenu() { let menucontent = document.querySelector(".menu-center-content"); menucontent.style.margin = "auto"; const discordlinks = document.createElement("div"); discordlinks.setAttribute("id", "dclinkdiv") discordlinks.innerHTML = ` Sigmally Discord SigModz Discord `; document.getElementById("discord_link").remove(); document.getElementById("menu").appendChild(discordlinks) document.querySelector("#cm_modal__settings .ctrl-modal__modal").style.padding = "20px" }, respawn() { const __line2 = document.getElementById("__line2") const c = document.getElementById("continue_button") const p = document.getElementById("play-btn") if (__line2.classList.contains("line--hidden")) return this.respawnTime = null setTimeout(() => { c.click() setTimeout(() => { p.click() this.respawnTime = Date.now() }, 200) }, 200) }, donate() { const link = "https://Sigmally.sell.app/product/donation"; // Disabled for now to not annoy people with this message /* const Donate = document.createElement("div"); Donate.classList.add("donate") Donate.innerHTML = ` Donate to get custom color!
    `; setTimeout(() => { document.getElementById("closeDonate").addEventListener("click", () => { Donate.remove(); }); document.getElementById("donateBtn").addEventListener("click", () => { window.open("https://Sigmally.sell.app/product/donation"); }) }, 10) document.body.append(Donate); */ }, createMenu() { this.smallMods(); this.menu(); const styleTag = document.createElement("style") styleTag.innerHTML = this.style; document.head.append(styleTag) setTimeout(() => { this.Macros(); this.Themes(); this.saveNames(); this.setInputActions(); this.getColors(); this.setColors(); this.mainMenu(); setInterval(() => { if (document.getElementById("autoRespawn").checked && modSettings.AutoRespawn && this.respawnTime && Date.now() - this.respawnTime >= this.respawnCooldown) { this.respawn(); } }) }) } } window.setInterval = new Proxy(setInterval, { apply(target, _this, args) { if (args[1] === (1000 / 7)) { args[1] = 0 } return target.apply(_this, args) } }); const mods = new mod(); })();