您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
battlecats plug-in
// ==UserScript== // @name 貓咪大戰超絕功能擴充 // @namespace https://home.gamer.com.tw/homeindex.php?owner=k96879687 // @version 0.31 // @description battlecats plug-in // @author k96879687(竊盜拿到OK繃) // @match https://battlecats-db.com/* // @grant none // ==/UserScript== /* 目前功能: 1.關卡上下關連結,可反應星數 2.角色等級30、40、50變化 3.外星敵人水晶倍率100%、200%、300%變化 4.外星(星)水晶倍率100%、200%、300%變化 5.變化後顏色提示 */ (function() { 'use strict'; let default_crystal = 299;//預設未來篇水晶%數 let default_crystal_stat = 299;//預設宇宙篇水晶%數 let animationOFF = 0;//動畫關閉 let animationBGColor = "009040";//動畫顏色 let animationTime = 2500;//動畫長度 單位ms var head = document.getElementsByTagName('head')[0]; var style = document.createElement('style'); var declarations = document.createTextNode( '#k96_plug{width:auto; height:auto; position:fixed; right:50px; bottom:60px; background:#883800; text-align:center; line-height:50px; padding:5px;}'+ '#k96_plug_block_0{ width:100px; height:50px; background:#883800; border-bottom-style:solid;border-color:#b06000;}'+ '#k96_plug_block_0:hover{background:#b06000; transition:background 1s;}'+ '#k96_plug_block_1{ width:100px; height:50px; background:#883800; border-bottom-style:solid;border-color:#b06000;}'+ '#k96_plug_block_1:hover{background:#b06000; transition:background 1s;}'+ '#k96_plug_block_2{ width:100px; height:50px; background:#883800;}'+ '#k96_plug_block_2:hover{background:#b06000; transition:background 1s;}'+ '@keyframes fade { 0%{ background:#'+animationBGColor+';} 100%{}}'+ '.fade{ animation: fade '+animationTime+'ms forwards;}' ); style.type = 'text/css'; if (style.styleSheet) { style.styleSheet.cssText = declarations.nodeValue; } else{ style.appendChild(declarations); } head.appendChild(style); var 連結陣列 = location.href.split('//'); //[https:],[battlecats-db.com/stage/s00000-01.html] 連結陣列 = 連結陣列[1].split('/'); //[battlecats-db.com],[stage],[s00000-01.html] var i = 0; //---------------------------創造右下區塊--------------------------- var parent = document.getElementById("main"); var div = document.createElement("div"); div.setAttribute("id", "k96_plug"); parent.appendChild(div); for(let n =0;n<3;n++){ let div = document.createElement("div"); div.setAttribute("id", "k96_plug_block_"+n); document.getElementById("k96_plug").appendChild(div); div = document.createElement("div"); } var legendstory = [ 8,8,8,8,6,8,8,8,8,6,//s00048共49 8,8,8,6,6,8,8,6,6,8, 6,6,6,6,8,8,8,6,5,6, 6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,8,1 ]; var true_legendstory = [ 1,6,6,6,6,6,6,6,6,6,//s13018共19 6,6,6,6,6,6,6,6,6 ]; function numtostr(num){ var parts = num.toString().split('.'); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); return parts.join('.'); } function addObserverIfDesiredNodeAvailable(flag,set_mode){ if(!animationOFF){ let composeBox=[]; if(set_mode == "enemy"){ composeBox = [document.getElementsByClassName("c06")[flag],document.getElementsByClassName("c10")[flag],document.getElementsByClassName("c11")[flag]]; } else if(set_mode == "unit"){ composeBox = [document.getElementsByClassName("R")[14*flag],document.getElementsByClassName("R")[14*flag+4],document.getElementsByClassName("R")[14*flag+8]]; } if(!composeBox[0] && !composeBox[1] && !composeBox[2]) { window.setTimeout(addObserverIfDesiredNodeAvailable,500); return; } for(let i=0;i<3;i++){ mutationObserver.observe(composeBox[i], { characterData: true, childList: true, subtree: true }); } } } var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { mutation.target.classList.remove('fade'); void mutation.target.offsetWidth; // restart css animation mutation.target.classList.add('fade'); }); }); function unitLV(getLv){ $('#allLv').trigger('click'); $('#allLv').children().val(getLv); $('#allLv').children().trigger('blur'); $('#allLv').children().trigger('blur'); } function setCrystal(getnumber,mode,list){ addObserverIfDesiredNodeAvailable(list-1,"enemy"); let crystal_type = [ ["takaraB","takaraR"], ["takaraG","takaraY","takaraO","takaraL","takaraP"] ]; for(i = 0;i<crystal_type[mode].length;i++){ $('#'+crystal_type[mode][i]).trigger('click'); $('#'+crystal_type[mode][i]).children().val(getnumber); $('#'+crystal_type[mode][i]).children().trigger('blur'); $('#'+crystal_type[mode][i]).children().trigger('blur'); } } function isAlien(flag){ let isAlien = 0; let 敵人屬性 = document.getElementsByClassName("c01")[flag].getElementsByTagName("a"); for(i =0;i<敵人屬性.length;i++){ if(敵人屬性[i].innerText == "エイリアン"){ isAlien = 1; if(isAlien && (i+1)!=敵人屬性.length){ if(敵人屬性[i+1].innerText == "スター"){ isAlien = 2; } } break; } } return isAlien; } function change_Enemies(){ let numberOfEnemy = document.getElementsByClassName("c06").length; for(let flag=0;flag<numberOfEnemy;flag++){ if(isAlien(flag) == 1){ if(default_crystal != 300){ setCrystal(default_crystal,0,flag+1); } } else if(isAlien(flag) == 2){ if(default_crystal_stat != 300){ setCrystal(default_crystal_stat,1,flag+1); } } } } if(連結陣列[1]=="stage" && 連結陣列[2] !== ""){ let stage_string = /[a-z0-9]+/.exec(連結陣列[2]); let now_stage_str = 連結陣列[2].substring(1+stage_string[0].length,3+stage_string[0].length); let now_stage = parseInt(now_stage_str,10); let previous_stage = now_stage<=10 ? "0"+(now_stage-1) : now_stage-1; let next_stage = now_stage<=8 ? "0"+(now_stage+1) : now_stage+1; let link_head = "<a href=\"https://battlecats-db.com/stage/"+stage_string[0]; let link_end = 連結陣列[2].split('.'); let stop = 0; let stage_count = 0; let stage_number_plus = [ //イベントステージ "s01069",2,"s01111",2,"s01112",2,"s01114",2,"s01120",2, "s01127",3,"s01161",4,"s01190",2,"s01208",2,"s01210",3, "s01211",3,"s01212",3,"s01213",3,"s07000",40, //シーズンイベントステージ "s01154",3,"s01060",3,"s01160",5,"s01072",6,"s01164",5, "s01081",5,"s01174",6,"s01115",6,"s01125",5,"s01129",6, "s01140",5,"s01149",5, //月間イベントステージ "s01011",8,"s01083",2,"s01184",5,"s01012",8,"s01084",2, "s01186",5,"s01013",8,"s01085",2,"s01192",5,"s01026",8, "s01086",2,"s01194",5,"s01029",8,"s01087",2,"s01197",5, "s01030",8,"s01088",2,"s01165",5,"s01031",8,"s01089",2, "s01166",5,"s01032",8,"s01090",2,"s01167",5,"s01036",8, "s01091",2,"s01168",5,"s01038",8,"s01092",2,"s01170",5, "s01009",6,"s01093",2,"s01171",5,"s01010",8,"s01094",2, "s01175",5 ]; //如果是日本、未來、宇宙 if(連結陣列[2].substring(0,5) == 's0300'){ stage_count=48; }//如果是傳說 else if(連結陣列[2].substring(0,4) == 's000'){ stage_count = legendstory[parseInt(連結陣列[2].substring(4,6),10)]; }//如果是真傳說 else if(連結陣列[2].substring(0,4) == 's130'){ stage_count = true_legendstory[parseInt(連結陣列[2].substring(4,6),10)]; } else{ for(i=0;i<stage_number_plus.length;i+=2){ if(stage_string == stage_number_plus[i]){ stage_count = stage_number_plus[i+1]; } } } if(link_end[0] == stage_string+"-"+now_stage_str){ link_end = "."+link_end[1]+"\">"; } else if(link_end[0] == stage_string+"-"+now_stage_str+"_enemy"){ link_end = link_end[0].substring(stage_string[0].length+3,link_end[0].length)+"."+link_end[1]+"\">"; change_Enemies(); if(!stage_count){ stop = 1; } } if(!isNaN(now_stage)){ //---------------------------上一頁按鈕--------------------------- if(now_stage == 1){ document.getElementById("k96_plug_block_0").innerText = "無"; } else{ document.getElementById("k96_plug_block_0").innerHTML = link_head+"-"+previous_stage+link_end+"前一關 "+previous_stage+"</a>"; } //---------------------------下面為下一頁按鈕--------------------------- if(now_stage == stage_count || (document.getElementsByClassName("chars").item(1).src == "https://battlecats-db.imgs-server.com/i105.png") || stop){ document.getElementById("k96_plug_block_2").innerText = stop?"不支援":"無"; } else{ document.getElementById("k96_plug_block_2").innerHTML = link_head+"-"+next_stage+link_end+"下一關 "+next_stage+"</a>"; } document.getElementById("k96_plug_block_1").innerText = now_stage+" / "+(stage_count===0?"unknown":stage_count); } } else if(連結陣列[1]=="unit"){ if(Number(連結陣列[2].substring(0,3))){ for(let i=0;i<document.getElementsByClassName("c08").length;i++){ addObserverIfDesiredNodeAvailable(i,"unit"); } var k96_plug_block_0 = document.querySelector ("#k96_plug_block_0"); var k96_plug_block_1 = document.querySelector ("#k96_plug_block_1"); var k96_plug_block_2 = document.querySelector ("#k96_plug_block_2"); if (k96_plug_block_0 && k96_plug_block_1 && k96_plug_block_2) { document.getElementById("k96_plug_block_0").innerText = "30"; document.getElementById("k96_plug_block_1").innerText = "40"; document.getElementById("k96_plug_block_2").innerText = "50"; k96_plug_block_0.addEventListener ("click", function(){ unitLV(30);} , false); k96_plug_block_1.addEventListener ("click", function(){ unitLV(40);} , false); k96_plug_block_2.addEventListener ("click", function(){ unitLV(50);} , false); } } } else if(連結陣列[1]=="enemy"){ if(Number(連結陣列[2].substring(0,3))){ if(isAlien(0) == 1){ if(default_crystal != 300){ setCrystal(default_crystal,0,1); } let k96_plug_block_0 = document.querySelector("#k96_plug_block_0"); let k96_plug_block_1 = document.querySelector("#k96_plug_block_1"); let k96_plug_block_2 = document.querySelector("#k96_plug_block_2"); if (k96_plug_block_0 && k96_plug_block_1 && k96_plug_block_2) { document.getElementById("k96_plug_block_0").innerText = "100%水晶"; document.getElementById("k96_plug_block_1").innerText = "200%水晶"; document.getElementById("k96_plug_block_2").innerText = "300%水晶"; k96_plug_block_0.addEventListener("click", function(){ setCrystal(100,0,1);}); k96_plug_block_1.addEventListener("click", function(){ setCrystal(200,0,1);}); k96_plug_block_2.addEventListener("click", function(){ setCrystal(300,0,1);}); } } else if(isAlien(0) == 2){ if(default_crystal_stat != 300){ setCrystal(default_crystal_stat,1,1); } let k96_plug_block_0 = document.querySelector("#k96_plug_block_0"); let k96_plug_block_1 = document.querySelector("#k96_plug_block_1"); let k96_plug_block_2 = document.querySelector("#k96_plug_block_2"); if (k96_plug_block_0 && k96_plug_block_1 && k96_plug_block_2) { document.getElementById("k96_plug_block_0").innerText = "100%水晶"; document.getElementById("k96_plug_block_1").innerText = "200%水晶"; document.getElementById("k96_plug_block_2").innerText = "300%水晶"; k96_plug_block_0.addEventListener("click", function(){ setCrystal(100,1,1);}); k96_plug_block_1.addEventListener("click", function(){ setCrystal(200,1,1);}); k96_plug_block_2.addEventListener("click", function(){ setCrystal(300,1,1);}); } } } } })();