您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds bars to AP HP and MP
当前为
// ==UserScript== // @name Nexus Clash Stat Bars Vertical // @namespace http://userscripts.org/users/125692 // @description Adds bars to AP HP and MP // @include http://nexusclash.com/modules.php?name=Game* // @include http://www.nexusclash.com/modules.php?name=Game* // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // @version .91 // ==/UserScript== //for nexus clash. this script // adds coloured bars to under AP/HP/MP to provide visual referenece to depletion of these stats. //this version adds the bars vertically in the larger cells under the ap/hp/mp numbers. (function() { //this copied off the web //http://stackoverflow.com/questions/9447950/script-to-save-settings // for chrome if (!this.GM_getValue || (this.GM_getValue.toString && this.GM_getValue.toString().indexOf("not supported")>-1)) { this.GM_getValue=function (key,def) { return localStorage[key] || def; }; this.GM_setValue=function (key,value) { return localStorage[key]=value; }; this.GM_deleteValue=function (key) { return delete localStorage[key]; }; } //check if start screen and store max values. var isstart = document.evaluate( "//h2[starts-with(.,'Welcome back to Nexus Clash!')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if (isstart.snapshotLength == 1) { //we on start screen. //Store max ap/hp/mp values. var charlinks = document.evaluate( "//a[starts-with(@href,'modules.php?name=Game&op=character&id=')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); var charid; var charmaxhp=0; var charmaxap=0; var charmaxmp=0; if (charlinks.snapshotLength > 1) {//found some charlinks var charlink=0; for (i=0;charlink=charlinks.snapshotItem(i);i++){ //alert(i); charid=charlink.href.match(/id=(\d+)/)[1]; charlink=charlink.parentNode.nextElementSibling.nextElementSibling; charmaxap=charlink.textContent.match(/\/(\d+)/)[1]; charlink=charlink.nextElementSibling; charmaxhp=charlink.textContent.match(/\/(\d+)/)[1]; charlink=charlink.nextElementSibling; charmaxmp=charlink.textContent.match(/\/(\d+)/)[1]; //now store 'em away GM_setValue("maxap"+charid,charmaxap); GM_setValue("maxhp"+charid,charmaxhp); GM_setValue("maxmp"+charid,charmaxmp); } } return; //as that is all we want to do as we are on the start screen } //we not on start screen so we probably in game so apply rest of script. //add styles GM_addStyle(".barap{line-height=:1px;height:5px;display:inline-block;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;top:20px;left:-1px;border:1px solid #777777;"+ "background-color:#64ff64;");// AP bar background GM_addStyle(".barhp{line-height=:1px;height:5px;display:inline-block;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;top:20px;left:-1px;border:1px solid #777777;"+ "background-color:#ff0000;");// HP bar background is red GM_addStyle(".barmp{line-height=:1px;height:5px;display:inline-block;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;top:20px;left:-1px;border:1px solid #777777;"+ "background-color:#99d9ea;");// MP bar background light-blue GM_addStyle(".bar2{line-height=:1px;height:5px;display:inline-block;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;top:21px;left:0px;"+ "background-color:#00c000;}");// SET COLOUR FOR FOREGROUND OF BAR 00ff00 is green GM_addStyle(".numberdiv{display:inline-block;padding:0 0 0 0;margin: 0 0 0 0;width:20px;position:relative;}"); var OVERMAXCOLOUR="#0000FF";//colour to make bar for when over max //vertical styles var barheight='40px'; GM_addStyle(".vnumberdiv{display:inline;padding:0 0 0 0;margin: 0 0 0 0;width:20px;height:100%;position:relative;}"); //GM_addStyle(".vbarap{height:100%;width:20px;display:inline;margin: 0 0 0 0;padding: 0 0 0 0;bottom:0px;left:-1px;border:1px solid #777777;"+ // "background-color:#64ff64;z-index:1;");// AP bar background GM_addStyle(".vbarap{height:"+barheight+";width:20px;display:inline;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;bottom:-5px;right:0px;border:1px solid #777777;"+ "background-color:#64ff64;z-index:1;");// AP bar background GM_addStyle(".vbarhp{height:"+barheight+";width:20px;display:inline;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;bottom:-5px;right:0px;border:1px solid #777777;"+ "background-color:#ff0000;");// HP bar background is red GM_addStyle(".vbarmp{height:"+barheight+";width:20px;display:inline;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;bottom:-5px;right:0px;border:1px solid #777777;"+ "background-color:#99d9ea;");// MP bar background light-blue GM_addStyle(".vbar2{width:18px;display:inline;margin: 0 0 0 0;padding: 0 0 0 0;position:absolute;bottom:0px;right:1px;"+ "background-color:#00c000;z-index:2;}");// SET COLOUR FOR FOREGROUND OF BAR 00ff00 is very dark green GM_addStyle(".vtext{position:absolute;top:-10px;left:-20px;z-index:100;width:100%;height:100%;}");// SET COLOUR FOR FOREGROUND OF BAR 00ff00 is very dark green GM_addStyle(".voldtext{display:none;position:absolute;top:-10px;left:-20px;z-index:101;}");// SET COLOUR FOR FOREGROUND OF BAR 00ff00 is very dark green //ADD COLOUR BARS TO AP/HP/MP if(document.getElementById("CharacterInfo")){ var charinfodiv=document.getElementById("CharacterInfo"); var charlinks = document.evaluate( ".//a[starts-with(@href,'modules.php?name=Game&op=character&id=')]", charinfodiv, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); var charid=0; if (charlinks.snapshotLength==1){ charid=charlinks.snapshotItem(0).href.match(/id=(\d+)/)[1]; } var charmax = new Array();//lol at this way. makes code a bit shorter in for charmax[0]=GM_getValue("maxap"+charid,0); charmax[1]=GM_getValue("maxhp"+charid,0); charmax[2]=GM_getValue("maxmp"+charid,0); //do it this way as the fonts are removed each loop var fontlist = new Array(); fontlist[0]=charinfodiv.getElementsByTagName("font")[0];//get font fontlist[1]=charinfodiv.getElementsByTagName("font")[1];//get font fontlist[2]=charinfodiv.getElementsByTagName("font")[2];//get font fontlist[3]=charinfodiv.getElementsByTagName("font")[3]; fontlist[4]=charinfodiv.getElementsByTagName("font")[4]; fontlist[5]=charinfodiv.getElementsByTagName("font")[5]; if (charmax[0]&&charmax[1]&&charmax[2]){//only if all are true(ie we got a proper value) for(i=0;i<3;i++){//for each stat add bar var anewspan=document.createElement('div'); anewspan.className="numberdiv"; var vanewspan=document.createElement('div'); vanewspan.className="vnumberdiv"; //var font=charinfodiv.getElementsByTagName("font")[i];//get font var font=fontlist[i]; charstat=font.innerHTML.match(/-?\d+/); //get ap/hp/mp and if -ve //verticalbar var vfont=fontlist[i+3]; //var vfont=charinfodiv.getElementsByTagName("font")[i+3];//i think we wnat the 4th-6th interation. so index of 3-5 var reddiv=document.createElement('div'); reddiv.style.width='20px'; reddiv.className = i==0?"barap":i==1?"barhp":"barmp"; // if (i==0){reddiv.className="baralt"} //vertical var vreddiv=document.createElement('div'); vreddiv.style.width='20px'; vreddiv.className = i==0?"vbarap":i==1?"vbarhp":"vbarmp"; //else{ reddiv.className="bar";} if(i==1){//the hp doesn't refill automatically most of the time. reddiv.title=charstat+"/"+charmax[i]+" Need "+ (Number(charmax[i])-Number(charstat))+"hp healed"; vreddiv.title=charstat+"/"+charmax[i]+" Need "+ (Number(charmax[i])-Number(charstat))+"hp healed"; } else{// for ap and mp reddiv.title = charstat+"/"+charmax[i]+" Full in "+ (Number(charmax[i])-Number(charstat))/4+" hours";//assume ap/mp +1 per tick vreddiv.title = charstat+"/"+charmax[i]+" Full in "+ (Number(charmax[i])-Number(charstat))/4+" hours";//assume ap/mp +1 per tick } var greendiv=document.createElement('div'); var greenwidth=Math.round(20*(Number(charstat)/Number(charmax[i]))); if (greenwidth>20){//for some reason we over max greenwidth=20; greendiv.style.backgroundColor=OVERMAXCOLOUR;//set to blue to signify over max } else if (greenwidth<0){//for some reason we at -ve values greenwidth=0; } greendiv.className="bar2"; greendiv.style.width=""+greenwidth+"px";//to make out of 20 as int; greendiv.title=charstat+"/"+charmax[i]; //and vertical bars. var vgreendiv=document.createElement('div'); var vgreenheight=Math.round(100*(Number(charstat)/Number(charmax[i]))); if (vgreenheight>100){//for some reason we over max vgreenheight=100; vgreenheight.style.backgroundColor=OVERMAXCOLOUR;//set to blue to signify over max } else if (vgreenheight<0){//for some reason we at -ve values vgreenheight=0; } vgreendiv.className="vbar2"; vgreendiv.style.height=""+vgreenheight+"%"//to make out of 20 as int; vgreendiv.title=charstat+"/"+charmax[i]; //put the bars in var firstcell=font.parentNode; if(i==0){//first time is nested deeper firstcell=font.parentNode.parentNode; } firstcell.width='20px'; //anewspan.insertBefore(greendiv,anewspan.firstChild);//put img in span //anewspan.insertBefore(reddiv,anewspan.firstChild);//put img in span //anewspan.insertBefore(font,anewspan.firstChild);//move the text into the new span //firstcell.insertBefore(anewspan,firstcell.firstChild);//put span in table cell //put the vertical bars in var vfirstcell=vfont.parentNode.parentNode;//verical bars are one deeper than horizontal var vlinkelement=vfont.parentNode; if(i==0){//first time is nested deeper vfirstcell=vfont.parentNode.parentNode.parentNode;//ap is in extra b tag vlinkelement=vfont.parentNode.parentNode; } //for vertical replace vfont with a span with class and stuff //var vfont.innerHTML var vfontdiv=document.createElement('div'); var vtext=vfont.innerHTML; vfontdiv.className="vtext"; //remove font element vfont.className="voldtext"; //vfont.parentNode.removeChild(vfont); // vlinkelement.removeChild(vlinkelement.firstChild);//empty the a link? vlinkelement.textContent=vtext; //vfirstcell.width='20px'; //vanewspan.insertBefore(vgreendiv,vanewspan.firstChild);//put img in span vanewspan.insertBefore(vreddiv,vanewspan.firstChild);//put img in span vreddiv.insertBefore(vgreendiv,vreddiv.firstChild);//put img in span vfontdiv.insertBefore(vlinkelement,vfontdiv.firstChild); vanewspan.insertBefore(vfontdiv,vanewspan.lastChild);//move the text into the new span vfirstcell.insertBefore(vanewspan,vfirstcell.firstChild);//put span in table cell; } } } //EOF })();