您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Click button to start token rain with your chosen token image, bigger and spinning!
// ==UserScript== // @name Custom Token Rain with Spinner // @namespace http://tampermonkey.net/ // @version 1.0 // @description Click button to start token rain with your chosen token image, bigger and spinning! // @author ChatGPT // @match *://blacket.org/* // @grant none // ==/UserScript== (function() { 'use strict'; // Container to hold drag bar + button const container = document.createElement('div'); container.style.position = 'fixed'; container.style.top = '10px'; container.style.right = '10px'; container.style.zIndex = '999999'; container.style.userSelect = 'none'; container.style.width = 'max-content'; container.style.cursor = 'default'; // Drag bar const dragBar = document.createElement('div'); dragBar.textContent = '☰ Drag Here'; dragBar.style.background = '#444'; dragBar.style.color = 'white'; dragBar.style.padding = '4px 10px'; dragBar.style.borderTopLeftRadius = '6px'; dragBar.style.borderTopRightRadius = '6px'; dragBar.style.fontSize = '12px'; dragBar.style.fontWeight = 'bold'; dragBar.style.textAlign = 'center'; dragBar.style.cursor = 'grab'; dragBar.style.userSelect = 'none'; // Button const btn = document.createElement('button'); btn.textContent = 'Start Custom Token Rain'; btn.style.padding = '8px 12px'; btn.style.background = '#222'; btn.style.color = 'white'; btn.style.border = 'none'; btn.style.borderBottomLeftRadius = '6px'; btn.style.borderBottomRightRadius = '6px'; btn.style.cursor = 'pointer'; btn.style.userSelect = 'none'; btn.style.transition = 'background 0.3s'; btn.style.display = 'block'; btn.style.width = '100%'; container.appendChild(dragBar); container.appendChild(btn); document.body.appendChild(container); let tokenRainContainer = null; let spawnInterval = null; let raining = false; // Add CSS for spinning and falling tokens const styleId = 'customTokenRainStyle'; if (!document.getElementById(styleId)) { const style = document.createElement('style'); style.id = styleId; style.textContent = ` @keyframes fallspin { 0% { transform: translateY(0) rotate(0deg); } 100% { transform: translateY(100vh) rotate(360deg); } } .token-rain-token { position: absolute; width: 48px !important; height: 48px !important; pointer-events: none; animation: fallspin 4s linear forwards; } `; document.head.appendChild(style); } function startTokenRain(imgSrc) { if (tokenRainContainer) { tokenRainContainer.remove(); tokenRainContainer = null; } if (spawnInterval) { clearInterval(spawnInterval); spawnInterval = null; } tokenRainContainer = document.createElement('div'); tokenRainContainer.style.position = 'fixed'; tokenRainContainer.style.top = '0'; tokenRainContainer.style.left = '0'; tokenRainContainer.style.width = '100vw'; tokenRainContainer.style.height = '100vh'; tokenRainContainer.style.pointerEvents = 'none'; tokenRainContainer.style.zIndex = '999998'; document.body.appendChild(tokenRainContainer); spawnInterval = setInterval(() => { const token = document.createElement('img'); token.src = imgSrc; token.className = 'token-rain-token'; token.style.left = Math.random() * (window.innerWidth - 48) + 'px'; token.style.top = '-50px'; token.addEventListener('animationend', () => token.remove()); tokenRainContainer.appendChild(token); }, 150); } function stopTokenRain() { if (spawnInterval) { clearInterval(spawnInterval); spawnInterval = null; } if (tokenRainContainer) { tokenRainContainer.remove(); tokenRainContainer = null; } } btn.addEventListener('click', () => { if (!raining) { const url = prompt('Enter the URL of the token image you want to use:', 'https://blacket.org/content/tokenIcon.webp'); if (url && url.trim() !== '') { startTokenRain(url.trim()); btn.textContent = 'Stop Token Rain'; btn.style.background = '#b22222'; raining = true; } } else { stopTokenRain(); btn.textContent = 'Start Custom Token Rain'; btn.style.background = '#222'; raining = false; } }); // Make the container draggable by dragBar only let isDragging = false; let dragStartX, dragStartY; let containerStartX, containerStartY; dragBar.addEventListener('mousedown', (e) => { isDragging = true; dragStartX = e.clientX; dragStartY = e.clientY; const rect = container.getBoundingClientRect(); containerStartX = rect.left; containerStartY = rect.top; dragBar.style.cursor = 'grabbing'; e.preventDefault(); }); window.addEventListener('mousemove', (e) => { if (!isDragging) return; let newX = containerStartX + (e.clientX - dragStartX); let newY = containerStartY + (e.clientY - dragStartY); // Keep container inside viewport newX = Math.min(window.innerWidth - container.offsetWidth, Math.max(0, newX)); newY = Math.min(window.innerHeight - container.offsetHeight, Math.max(0, newY)); container.style.left = newX + 'px'; container.style.top = newY + 'px'; container.style.right = 'auto'; container.style.bottom = 'auto'; container.style.position = 'fixed'; }); window.addEventListener('mouseup', () => { if (isDragging) { isDragging = false; dragBar.style.cursor = 'grab'; } }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址