您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Compacts the divisions shown when using fight macros in KoL, displaying only the last.
// ==UserScript== // @name Macro Combat Compacter // @namespace kol.interface.unfinished // @description Compacts the divisions shown when using fight macros in KoL, displaying only the last. // @include http://*kingdomofloathing.com/fight.php* // @include http://127.0.0.1:*/fight.php* // @version 0.0.1.20140812160455 // ==/UserScript== //Version 1.1 // - also now shows effect gains/losses //Version 1.0 function compact() { var hrs = document.evaluate( '//hr', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); var stuff = []; var ids = 1; // gather contents for (var i=hrs.snapshotLength-1;i>=0;i--) { var hr2 = hrs.snapshotItem(i); var itemids = ""; stuff[i] = document.createElement('div'); stuff[i].setAttribute('class','compactDiv'); while (hr2.previousSibling && hr2.previousSibling.tagName!='HR' && hr2.previousSibling.tagName!='BR') { var n = hr2.previousSibling; n.parentNode.removeChild(n); if (stuff[i].firstChild) stuff[i].insertBefore(n,stuff[i].firstChild); else stuff[i].appendChild(n); } stuff[i].setAttribute('style','display:none'); hr2.parentNode.insertBefore(stuff[i],hr2); hr2.addEventListener('click',expandDivH,true); hr2.setAttribute('title','click to display round '+(i+1)); var r = findAcquires(stuff[i]); if (r.length>0) { for (var j=0;j<r.length;j++) { itemids = itemids + " " + ids; r[j].setAttribute('id','compactAcquire_'+ids); ids++; stuff[i].parentNode.insertBefore(r[j],stuff[i]); } stuff[i].setAttribute('compactAcquire',itemids); } } } // delete any duplicated item/meat acquisitions function removeAcquires(alist) { var aa = alist.split(' '); for (var i=0;i<aa.length;i++) { if (aa[i]) { var r = document.getElementById('compactAcquire_'+aa[i]); if (r) { r.parentNode.removeChild(r); } } } } // expand a single div and delete any item/meat acquisitions function expandDiv(d) { var s = d.getAttribute("style"); if (s.match(/display\s*:\s*none\s*;?/i)) { d.setAttribute("style",s.replace(/display\s*:\s*none\s*;?/i,'')); var itemlist = d.getAttribute('compactAcquire'); if (itemlist) { removeAcquires(itemlist); } } } // handler for introduced divs function expandDivH() { var d = this.previousSibling; if (d && d.tagName=='DIV') { expandDiv(d); } this.removeEventListener('click',expandDivH,true); } // expand all divs handler function expandAllDivs(e) { var ds = document.getElementsByClassName('compactDiv'); if (ds) { for (var i=0;i<ds.length;i++) { expandDiv(ds[i]); } } } // change the jump to bottom button to an expand all rounds button function addExpandAll() { var b = document.getElementById('jumptobot'); b.addEventListener('click',expandAllDivs,false); b.setAttribute('title','click to expand all rounds'); b.innerHTML = '(expand rounds)'; } // return clones of all item/meat acquisitions from the supplied root element function findAcquires(doc) { var r = []; var msg = ['.//td[text()="You acquire an item: "]', './/td[text()="You acquire an effect: "]', './/td[text()="You lose an effect: "]']; for (var m=0;m<msg.length;m++) { var ps = document.evaluate(msg[m],doc,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); if (ps.snapshotLength>0) { for (var i=0;i<ps.snapshotLength;i++) { var p = ps.snapshotItem(i).parentNode; while (p && p.tagName!='CENTER') p = p.parentNode; if (p) { r[r.length] = p.cloneNode(true); } } } } ps = document.evaluate('.//td[contains(text(),"Meat.")]',doc,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null); if (ps.snapshotLength>0) { for (var i=0;i<ps.snapshotLength;i++) { var p = ps.snapshotItem(i); if (p.innerHTML && p.innerHTML.match(/You gain [0-9]+ Meat./)) { p = p.parentNode; while (p && p.tagName!='CENTER') p = p.parentNode; if (p) { r[r.length] = p.cloneNode(true); } } } } return r; } if (document.getElementById('jumptobot')) { compact(); addExpandAll(); }