您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Changes avatar appearance based on Minecraft Easter eggs.
// ==UserScript== // @name jeb_ // @namespace http://tampermonkey.net/ // @version 1.5 // @description Changes avatar appearance based on Minecraft Easter eggs. // @author Alpha // @match https://skribbl.io/* // @grant none // @icon https://imgur.com/rVFiCSD.gif // @license MIT // ==/UserScript== (function () { 'use strict'; const colorSteps = 8; const cycleSpeedMs = 250; const lookupIntervalMs = 500; let cycleInterval = null; let currentStep = 0; function cleanName(rawName) { return rawName.replace(' (You)', '').trim(); } function applyEffectsToAllPlayers() { const playerNameElems = document.querySelectorAll('.player-name'); playerNameElems.forEach(playerNameElem => { const rawName = playerNameElem.textContent.trim(); const name = cleanName(rawName); const container = playerNameElem.closest('div.player'); if (!container) return; const colorElem = container.querySelector('div.player-avatar-container > div > div.color'); const specialElem = container.querySelector('div.player-avatar-container > div > div.special'); const avatarContainer = container.querySelector('.player-avatar-container'); if (name === 'jeb_' && colorElem) { const xPosition = -100 * currentStep; colorElem.style.backgroundPosition = `${xPosition}% 0%`; specialElem.style.display = `block`; specialElem.style.backgroundPosition = `-900% 0%`; } if ((name === 'Dinnerbone' || name === 'Grumm') && avatarContainer) { avatarContainer.style.transform = 'rotateX(180deg)'; avatarContainer.style.top = '2px'; container.style.zIndex = '999'; } if (name === 'Toast' && specialElem) { specialElem.style.display = `block`; specialElem.style.backgroundPosition = `-800% 0%`; } }); currentStep = (currentStep + 1) % colorSteps; } function startCycling() { if (!cycleInterval) { cycleInterval = setInterval(applyEffectsToAllPlayers, cycleSpeedMs); } } function waitForPlayers() { const check = setInterval(() => { if (document.querySelector('.player-name')) { startCycling(); clearInterval(check); } }, lookupIntervalMs); } window.addEventListener('load', waitForPlayers); })();