// ==UserScript== // @name LMVZ Solver 02 // @namespace http://tampermonkey.net/ // @version 2024-10-01 // @description delete or insert to start // @author Claimingnine // @match https://003.lmvz.ch/* // @icon https://www.google.com/s2/favicons?sz=64&domain=lmvz.ch // @grant none // ==/UserScript== (function() { let isRunning = false; let intervalId; let solvedCount = 0; // Create UI Panel function createUI() { // Create toggle button const toggleBtn = document.createElement('div'); toggleBtn.id = 'lmvz-math-toggle-btn'; toggleBtn.innerHTML = '🧮'; toggleBtn.style.cssText = ` position: fixed; top: 20px; right: 20px; width: 50px; height: 50px; background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 24px; cursor: pointer; z-index: 10000; box-shadow: 0 4px 15px rgba(240, 147, 251, 0.4); transition: all 0.3s ease; `; toggleBtn.onmouseover = () => { toggleBtn.style.transform = 'scale(1.1)'; toggleBtn.style.boxShadow = '0 6px 20px rgba(240, 147, 251, 0.6)'; }; toggleBtn.onmouseout = () => { toggleBtn.style.transform = 'scale(1)'; toggleBtn.style.boxShadow = '0 4px 15px rgba(240, 147, 251, 0.4)'; }; // Create control panel const panel = document.createElement('div'); panel.id = 'lmvz-math-control-panel'; panel.style.cssText = ` position: fixed; top: 80px; right: 20px; width: 320px; background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); border-radius: 16px; padding: 20px; z-index: 9999; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; display: none; animation: slideIn 0.3s ease; `; panel.innerHTML = `
🧮 Math Solver Control
Auto-Solver Stopped
Solved: 0
Status: Idle
`; // Add to page document.body.appendChild(toggleBtn); document.body.appendChild(panel); // Toggle panel let isOpen = false; toggleBtn.addEventListener('click', () => { isOpen = !isOpen; panel.style.display = isOpen ? 'block' : 'none'; toggleBtn.style.transform = isOpen ? 'rotate(90deg)' : 'rotate(0deg)'; }); // Update status display function updateStatusDisplay() { const statusDot = document.getElementById('lmvz-math-status-dot'); const statusText = document.getElementById('lmvz-math-status-text'); const statusLabel = document.getElementById('lmvz-math-status-label'); const toggleIcon = document.getElementById('lmvz-math-toggle-icon'); const toggleText = document.getElementById('lmvz-math-toggle-text'); const solvedDisplay = document.getElementById('lmvz-math-solved-count'); if (statusDot && statusText && statusLabel) { if (isRunning) { statusDot.className = 'lmvz-math-status-dot running'; statusText.textContent = 'Auto-Solver Running'; statusLabel.textContent = 'Active'; toggleIcon.textContent = '⏸️'; toggleText.textContent = 'Stop Auto-Solver'; } else { statusDot.className = 'lmvz-math-status-dot stopped'; statusText.textContent = 'Auto-Solver Stopped'; statusLabel.textContent = 'Idle'; toggleIcon.textContent = '▶️'; toggleText.textContent = 'Start Auto-Solver'; } } if (solvedDisplay) { solvedDisplay.textContent = solvedCount; } } // Toggle auto-solver document.getElementById('lmvz-math-toggle-btn').addEventListener('click', () => { if (!isRunning) { intervalId = setInterval(wiederholen, 100); isRunning = true; } else { clearInterval(intervalId); isRunning = false; } updateStatusDisplay(); }); // Custom amount document.getElementById('lmvz-math-custom-btn').addEventListener('click', () => { const input = document.getElementById('lmvz-math-custom-count'); const value = parseInt(input.value, 10); if (!isNaN(value) && value > 0) { solvedCount += value; trichtige += value; wiederholen(); updateStatusDisplay(); input.value = ''; } }); // Double count document.getElementById('lmvz-math-double-btn').addEventListener('click', () => { solvedCount = (solvedCount * 2) - 1; trichtige = (trichtige * 2) - 1; wiederholen(); updateStatusDisplay(); }); // Reset counter document.getElementById('lmvz-math-reset-btn').addEventListener('click', () => { solvedCount = 0; trichtige = -1; wiederholen(); updateStatusDisplay(); }); // Solve one document.getElementById('lmvz-math-solve-one-btn').addEventListener('click', () => { wiederholen(); solvedCount++; updateStatusDisplay(); }); // Update display periodically setInterval(updateStatusDisplay, 500); // Make panel draggable let isDragging = false; let currentX; let currentY; let initialX; let initialY; panel.addEventListener('mousedown', (e) => { if (e.target === panel || e.target.className === 'lmvz-math-header') { isDragging = true; initialX = e.clientX - panel.offsetLeft; initialY = e.clientY - panel.offsetTop; panel.style.cursor = 'move'; } }); document.addEventListener('mousemove', (e) => { if (isDragging) { e.preventDefault(); currentX = e.clientX - initialX; currentY = e.clientY - initialY; panel.style.left = currentX + 'px'; panel.style.top = currentY + 'px'; panel.style.right = 'auto'; } }); document.addEventListener('mouseup', () => { isDragging = false; panel.style.cursor = 'default'; }); updateStatusDisplay(); } // Initialize UI when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', createUI); } else { createUI(); } function wiederholen() { tzeigen(); tbewerten(); var resultatElement = document.querySelector('#resultat.resultate'); if (resultatElement) { var centerElement = resultatElement.querySelector('center'); var resultText = centerElement ? centerElement.innerText : ''; var inputFeld = document.querySelector('input[name="tresultat"]'); if (inputFeld) { var allText = resultText.replace(/%/g, ''); inputFeld.value = allText; trichtige += 1; tpruefen(); } } } document.addEventListener('keydown', function(e) { if (e.key === 'Delete') { if (!isRunning) { intervalId = setInterval(wiederholen, 100); isRunning = true; } else { clearInterval(intervalId); isRunning = false; } } else if (e.key === 'Insert') { var eingabe = prompt("Wie viele gelöste Aufgaben willst du?"); var zahl = parseInt(eingabe, 10); if (!isNaN(zahl)) { trichtige += zahl; wiederholen(); } } else if (e.key === '§') { trichtige = (trichtige * 2) - 1; wiederholen(); } else if (e.key === 'b') { wiederholen(); } else if (e.key === 'p') { trichtige = -1; wiederholen(); } }); })();