您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a toggle button to minimize and restore live stats on Stake.us and Stake.com [have not tested on stake.com warning]
// ==UserScript== // @name Stake Lil' Live Stats // @namespace http://tampermonkey.net/ // @version 1.0 // @description Adds a toggle button to minimize and restore live stats on Stake.us and Stake.com [have not tested on stake.com warning] // @author Telegram: @sighb3r LTC: ltc1qvpmsjyn6y7vk080uhje8v63mvty4adp7ewk20c // @license MIT // @match https://stake.us/* // @match https://stake.com/* // @grant none // ==/UserScript== (function() { 'use strict'; let isInitialized = false; // Function to initialize the script function init() { if (isInitialized) return; // Prevent re-initialization isInitialized = true; const header = document.querySelector('.draggable .header .title'); const content = document.querySelector('.draggable .content'); const closeButton = document.querySelector('.draggable .header button'); const draggable = document.querySelector('.draggable'); if (!header || !content || !closeButton || !draggable) { console.error('Required elements not found'); return; } // Create a span element to hold the net gain display const gainSpan = document.createElement('span'); gainSpan.className = "weight-semibold line-height-default align-left size-default text-size-default with-icon-space svelte-17v69ua"; header.appendChild(gainSpan); // Create the toggle button const toggleButton = document.createElement('button'); toggleButton.textContent = '^'; toggleButton.style.marginLeft = '10px'; toggleButton.style.cursor = 'pointer'; toggleButton.style.background = 'transparent'; toggleButton.style.border = 'none'; toggleButton.style.color = 'inherit'; toggleButton.style.fontSize = 'inherit'; toggleButton.onclick = function() { if (content.style.display === 'none') { content.style.display = 'block'; draggable.style.height = 'auto'; toggleButton.textContent = '^'; } else { content.style.display = 'none'; draggable.style.height = `${header.offsetHeight}px`; toggleButton.textContent = '[]'; } }; // Add the button next to the close button closeButton.parentElement.insertBefore(toggleButton, closeButton); // Create an SVG element for the line graph const svgNS = "http://www.w3.org/2000/svg"; const svg = document.createElementNS(svgNS, "svg"); svg.setAttribute("width", "50"); svg.setAttribute("height", "10"); svg.style.marginLeft = "5px"; header.appendChild(svg); // Function to update the gain display and line graph function updateGainDisplay() { const netGainElement = document.querySelector('[data-testid="bets-stats-profit"]'); if (!netGainElement) return; const netGainValue = parseFloat(netGainElement.innerText); const isUp = netGainValue >= 0; const gainText = `${isUp ? 'U' : 'D'} ${netGainValue.toFixed(2)}`; gainSpan.className = `weight-semibold line-height-default align-left size-default text-size-default variant-${isUp ? 'success' : 'negative'} with-icon-space svelte-17v69ua`; gainSpan.innerText = gainText; // Clear previous SVG content while (svg.firstChild) { svg.removeChild(svg.firstChild); } // Create a line for the graph const line = document.createElementNS(svgNS, "line"); const x1 = 0; const y1 = isUp ? 10 : 0; // Start from bottom if up, top if down const x2 = 50; const y2 = isUp ? 10 - Math.min(Math.abs(netGainValue) * 2, 10) : Math.min(Math.abs(netGainValue) * 2, 10); // Steeper line for higher gain/loss line.setAttribute("x1", x1); line.setAttribute("y1", y1); line.setAttribute("x2", x2); line.setAttribute("y2", y2); line.setAttribute("stroke", isUp ? "green" : "red"); line.setAttribute("stroke-width", "2"); svg.appendChild(line); } // Observe changes to the net gain element const netGainElement = document.querySelector('[data-testid="bets-stats-profit"]'); if (netGainElement) { const observer = new MutationObserver(updateGainDisplay); observer.observe(netGainElement, { childList: true, characterData: true, subtree: true }); // Initial update updateGainDisplay(); } } // Function to check if the live stats window is opened function checkForLiveStatsWindow(mutationsList) { for (const mutation of mutationsList) { if (mutation.addedNodes.length) { for (const node of mutation.addedNodes) { if (node.nodeType === 1 && node.matches('.draggable')) { init(); break; } } } } } // Observe the DOM for changes to detect when the live stats window is opened const observer = new MutationObserver(checkForLiveStatsWindow); observer.observe(document.body, { childList: true, subtree: true }); // Initial check checkForLiveStatsWindow([{ addedNodes: document.querySelectorAll('.draggable') }]); })();