// ==UserScript== // @name Hammer Senpa.io Mod - Performance & Visual Enhancements with GUI // @namespace http://tampermonkey.net/ // @version 1.2 // @description Optimize Senpa.io with FPS optimization, freeze on death, and visual effects, all customizable via GUI // @author Hammer // @match https://senpa.io/* // @grant GM_addStyle // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Initial states let optimizationEnabled = true; let fxOn = true; let isFrozen = false; // Create the small toggle button (bottom right) const smallGui = document.createElement('div'); smallGui.id = 'small-gui'; smallGui.style.position = 'fixed'; smallGui.style.bottom = '20px'; smallGui.style.right = '20px'; smallGui.style.width = '50px'; smallGui.style.height = '50px'; smallGui.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; smallGui.style.color = 'white'; smallGui.style.textAlign = 'center'; smallGui.style.fontSize = '14px'; smallGui.style.borderRadius = '5px'; smallGui.style.cursor = 'pointer'; smallGui.style.zIndex = '9999'; smallGui.innerText = 'Mods'; document.body.appendChild(smallGui); // Create the larger menu (hidden initially) const guiContainer = document.createElement('div'); guiContainer.id = 'gui-container'; guiContainer.style.position = 'fixed'; guiContainer.style.bottom = '100px'; guiContainer.style.right = '20px'; guiContainer.style.width = '250px'; guiContainer.style.backgroundColor = 'rgba(0, 0, 0, 0.8)'; guiContainer.style.color = 'white'; guiContainer.style.padding = '20px'; guiContainer.style.borderRadius = '10px'; guiContainer.style.zIndex = '9999'; guiContainer.style.display = 'none'; guiContainer.style.fontFamily = 'Arial, sans-serif'; const closeButton = document.createElement('button'); closeButton.innerText = 'X'; closeButton.style.backgroundColor = '#dc3545'; closeButton.style.color = 'white'; closeButton.style.border = 'none'; closeButton.style.padding = '5px'; closeButton.style.borderRadius = '50%'; closeButton.style.cursor = 'pointer'; closeButton.style.position = 'absolute'; closeButton.style.top = '10px'; closeButton.style.right = '10px'; closeButton.addEventListener('click', () => { guiContainer.style.display = 'none'; // Close the menu }); const optimizationToggle = document.createElement('button'); optimizationToggle.innerText = optimizationEnabled ? 'Disable FPS Optimization' : 'Enable FPS Optimization'; optimizationToggle.style.backgroundColor = optimizationEnabled ? '#28a745' : '#dc3545'; optimizationToggle.style.color = 'white'; optimizationToggle.style.border = 'none'; optimizationToggle.style.padding = '10px'; optimizationToggle.style.borderRadius = '5px'; optimizationToggle.style.cursor = 'pointer'; optimizationToggle.style.marginBottom = '10px'; optimizationToggle.addEventListener('click', () => { optimizationEnabled = !optimizationEnabled; optimizationToggle.innerText = optimizationEnabled ? 'Disable FPS Optimization' : 'Enable FPS Optimization'; optimizationToggle.style.backgroundColor = optimizationEnabled ? '#28a745' : '#dc3545'; if (optimizationEnabled) { enableOptimization(); } else { disableOptimization(); } }); const fxToggle = document.createElement('button'); fxToggle.innerText = fxOn ? 'Disable FX' : 'Enable FX'; fxToggle.style.backgroundColor = fxOn ? '#28a745' : '#dc3545'; fxToggle.style.color = 'white'; fxToggle.style.border = 'none'; fxToggle.style.padding = '10px'; fxToggle.style.borderRadius = '5px'; fxToggle.style.cursor = 'pointer'; fxToggle.style.marginBottom = '10px'; fxToggle.addEventListener('click', () => { fxOn = !fxOn; fxToggle.innerText = fxOn ? 'Disable FX' : 'Enable FX'; fxToggle.style.backgroundColor = fxOn ? '#28a745' : '#dc3545'; applyVisualEffects(); }); const freezeToggle = document.createElement('button'); freezeToggle.innerText = isFrozen ? 'Unfreeze on Death' : 'Freeze on Death'; freezeToggle.style.backgroundColor = isFrozen ? '#dc3545' : '#28a745'; freezeToggle.style.color = 'white'; freezeToggle.style.border = 'none'; freezeToggle.style.padding = '10px'; freezeToggle.style.borderRadius = '5px'; freezeToggle.style.cursor = 'pointer'; freezeToggle.addEventListener('click', () => { isFrozen = !isFrozen; freezeToggle.innerText = isFrozen ? 'Unfreeze on Death' : 'Freeze on Death'; freezeToggle.style.backgroundColor = isFrozen ? '#dc3545' : '#28a745'; }); const hammerText = document.createElement('div'); hammerText.innerText = 'hammer'; hammerText.style.color = '#fff'; hammerText.style.fontSize = '14px'; hammerText.style.textAlign = 'center'; hammerText.style.marginTop = '20px'; guiContainer.appendChild(closeButton); guiContainer.appendChild(optimizationToggle); guiContainer.appendChild(fxToggle); guiContainer.appendChild(freezeToggle); guiContainer.appendChild(hammerText); // Add the "hammer" text document.body.appendChild(guiContainer); // Toggle menu visibility when small GUI is clicked smallGui.addEventListener('click', () => { guiContainer.style.display = guiContainer.style.display === 'none' ? 'block' : 'none'; }); // Apply visual effects (brightness, contrast, etc.) function applyVisualEffects() { const canvas = document.querySelector('canvas'); if (canvas) { canvas.style.filter = fxOn ? 'brightness(1.1) contrast(1.2) saturate(1.1)' : 'none'; } } // Function to enable FPS optimization function enableOptimization() { document.body.style.backgroundImage = 'none'; const images = document.querySelectorAll('img'); images.forEach(img => { img.src = ''; // Remove image sources }); const style = document.createElement('style'); style.innerHTML = ` * { animation: none !important; transition: none !important; box-shadow: none !important; } canvas { image-rendering: optimizeSpeed; will-change: transform; } body, html { background: #000 !important; overflow: hidden; margin: 0; padding: 0; } `; document.head.appendChild(style); const audios = document.querySelectorAll('audio'); audios.forEach(audio => { audio.pause(); // Pause background music }); const ads = document.querySelectorAll('.ad, .sidebar, .popup'); ads.forEach(ad => ad.remove()); // Remove ads and popups } // Function to disable FPS optimization function disableOptimization() { const style = document.createElement('style'); style.innerHTML = ` * { animation: initial !important; transition: initial !important; } `; document.head.appendChild(style); } // Freeze the player on death (if enabled) function freezeOnDeath() { if (!isFrozen) return; const player = document.querySelector('.player'); // Adjust selector as necessary if (!player) return; isFrozen = true; document.addEventListener('keydown', preventMovement); document.addEventListener('mousemove', preventMovement); document.addEventListener('mousedown', preventMovement); setTimeout(() => { isFrozen = false; document.removeEventListener('keydown', preventMovement); document.removeEventListener('mousemove', preventMovement); document.removeEventListener('mousedown', preventMovement); }, 3000); // Freeze for 3 seconds (adjust as needed) } function preventMovement(event) { event.preventDefault(); event.stopPropagation(); } // Periodically check for death and freeze the player if necessary setInterval(() => { const deathState = document.querySelector('.dead'); // Update selector based on game's death state if (deathState && isFrozen) { freezeOnDeath(); } }, 1000); // Initialize optimizations if (optimizationEnabled) { enableOptimization(); } if (fxOn) { applyVisualEffects(); } })();