您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
a script to easily store as many skins as you want
当前为
// ==UserScript== // @name Skin Storage Script // @namespace http://tampermonkey.net/ // @version 0.3 // @description a script to easily store as many skins as you want // @author Oki // @match https://*.jstris.jezevec10.com/* // @grant none // ==/UserScript== /************************** Skin Storage Script **************************/ (function() { window.addEventListener('load', function(){ localStorage.customSkins = localStorage.customSkins || ""; localStorage.activeSkins = localStorage.activeSkins || ""; localStorage.randomizeKey = localStorage.randomizeKey || 'F4' document.getElementsByName("bSkin").forEach((radioButton, i)=>{ i>2&&(radioButton.type = "checkbox") }) var randomizeOption = document.createElement("tr"); randomizeOption.innerHTML = '<td>Randomize skin:</td><td><input maxlength="1" id="input421" type="text" size="7" value="'+localStorage.randomizeKey+'"></td><td id="kc421">0</td>' tab_controls.children[2].appendChild(randomizeOption); var plusButton=document.createElement("div"); plusButton.style = "width:20px;height:20px;background-color:green;text-align:center;font-weight:1000"; plusButton.innerHTML = "+"; plusButton.id = "plusButton"; var modalStyles=document.createElement("style"); modalStyles.innerHTML='#skinModal {display: none;position: fixed;z-index: 100;padding-top: 200px;left: 0;top: 0;width: 100%;height: 100%;background-color: rgba(0,0,0,0.4)} #modalContent {color:black;background-color: white;margin: auto;padding: 20px;border: 1px solid #888;width: 60%} .xbutton {width:20px;height:20px;background-size:cover;margin-bottom:4px;margin-left:20px;filter: invert(100%)}'; document.body.appendChild(modalStyles); var modal=document.createElement("div"); modal.id = "skinModal"; modal.innerHTML = '<div id="modalContent"><p>Please enter the new skin url. For animated skins, use this format: url1;size1 url2;size2 ...</p><input id="modalInput" style="border:2px solid black;z-index: 1000" type="text" value="https://i.imgur.com/XcnWlC6.png"><br><br><button id="modalClose" style="float:left down">Cancel</button><button id="modalConfirm" style="float:left down">OK</button></div></div>' app.appendChild(modal); var skinModalText = ""; modalConfirm.onclick = J=>{ addSkin(1) } modalClose.onclick = N=>{ addSkin(0) } function addSkin(flag) { skinModal.style.display = "none"; skinModalText = modalInput.value if(skinModalText == ""){flag = 0} modalInput.value = ""; if(!flag){ return; } var skinNumber = localStorage.customSkins.split(",").length-1; localStorage.customSkins += ","+skinModalText; refreshSkins() } plusButton.onclick = X=>{ skinModal.style.display = "block"; } document.getElementsByName("blockSkin")[0].appendChild(plusButton); function refreshSkins() { stopPreviewAnimation(); var oldContainer = document.getElementById("allSkinContainer"); oldContainer.parentNode.removeChild(oldContainer); addSkins(); startPreviewAnimation(); } function addSkins() { var skins = localStorage.customSkins.split(",") var allSkinContainer = document.createElement("div") allSkinContainer.id = "allSkinContainer" skins.map((skin,i)=>{ if(i>0) { var src = skin.split(";")[0]; allSkinContainer.innerHTML += `<div><input id="bskin`+i+`" type="checkbox" name="bSkin"><label for="bskin`+i+`"><img src="`+src+`" height="20"></label><img src="https://jstris.jezevec10.com/res/svg/dark/rubbish.svg" name="xbutton" class="xbutton" ></div>` var xbutton = document.getElementById("xbutton") } }) document.getElementsByName("blockSkin")[0].insertBefore(allSkinContainer,plusButton) document.getElementsByName("xbutton").forEach((button, i)=>{ button.addEventListener("click", W=>{var temp=localStorage.customSkins.split(',');temp.splice(i+1, 1);localStorage.customSkins=temp;refreshSkins()}); }) } function loadSkinNoSize(src) { var spliced = src.split(";") if(spliced.length>1){ Game['animatedSkin'] = src.split(" ").map(x=>x.split(";")) } var skinImg = new Image(); skinImg.onload = function(){ loadSkin(this.src,this.height) }; skinImg.src = spliced[0]; } Game['deployRandomSkin'] = function() { if (typeof Game['stopAnim'] == 'function') { Game['stopAnim'](); Game['animatedSkin'] = [] } var candidates = localStorage.activeSkins.split(",").slice(1); var choice = candidates[Math.floor(Math.random()*candidates.length)]; if(choice > 6) { frames = localStorage.customSkins.split(",")[choice-7].split(" ") if(frames.length>1){ Game['animatedSkin'] = frames.map(x=>x.split(";")) Game['animationRunning']&&Game['startAnim'](); } } loadSkinNoSize(document.getElementsByName("bSkin")[choice].nextSibling.children[0].src) } settingsSave.onmouseup = Y=>{ stopPreviewAnimation(); localStorage.activeSkins = "" document.getElementsByName("bSkin").forEach((e,i)=>{ if(i>2 && e.checked){ localStorage.activeSkins += ","+i; Game['deployRandomSkin']() } }) } window.onkeydown = function(e) { if(e.key.toLowerCase() == "f4") { Game['deployRandomSkin']() } } settings.onmouseup = Z=>{ startPreviewAnimation(); setTimeout(U=>{ for(var checkbox of document.getElementsByName("bSkin")) { checkbox.checked = false; } var skins = localStorage.activeSkins.split(","); for (var i = 1; i < skins.length; i++) { document.getElementsByName("bSkin")[skins[i]].checked = true } }, 100) } var previewIntervals = [] var previewsAnimated = false; function startPreviewAnimation() { var skins = localStorage.customSkins.split(",") skins.map((skin,j)=>{ var frames = skin.split(" ").map(x=>x.split(";")) if(frames.length > 1) { var animLength = frames.length*localStorage.animSpeed frames.map((x,i)=>{ setTimeout(()=>{previewIntervals.push(setInterval(()=>{ document.getElementById("bskin"+j).nextSibling.children[0].src = frames[i][0] }, animLength))}, i*(animLength/frames.length)) }) } }) previewsAnimated = true } function stopPreviewAnimation() { for (var i=0; i < previewIntervals.length; i++) { clearInterval(previewIntervals[i]); } } addSkins(); Game['deployRandomSkin'](); }); })();