您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Stores some known character classes and adds then to Game interface.
当前为
- // ==UserScript==
- // @name Nexus Clash Display Known Classes
- // @namespace http://userscripts.org/users/125692
- // @description Stores some known character classes and adds then to Game interface.
- // @include http://nexusclash.com/modules.php?name=Game*
- // @include http://www.nexusclash.com/modules.php?name=Game*
- // @exclude http://nexusclash.com/modules.php?name=Game&op=disconnect
- // @exclude http://www.nexusclash.com/modules.php?name=Game&op=disconnect
- // @version 1.4
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_addStyle
- // ==/UserScript==
- var characterlinks;
- var characterlink;
- var charid;
- var charclass;
- var charpagemaxtier;
- var currentsetting;
- var attacksetting;
- if(window.location.href.match(/name=Game&op=faction&do=roster$/)){
- characterlinks = document.evaluate(
- "//a[starts-with(@href,'modules.php?name=Game&op=character&id=')]",
- document,
- null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
- null
- );
- //alert("running");
- if (characterlinks.snapshotLength>0){
- //alert(characterlinks.snapshotLength);
- for(i=0;characterlink=characterlinks.snapshotItem(i);i++){
- charid=characterlink.href.match(/\d+$/);
- //charid='#'+charid+"#";//non fixed length number needs to be made unique.
- charclass=characterlink.parentNode.nextElementSibling.nextElementSibling.textContent;
- //alert(charid+":"+charclass);
- GM_setValue(''+charid,charclass);
- }
- }
- }
- else if(window.location.href.match(/name=Game&op=character&id=/)){
- //we are at a character page. Might as well take the id and the highest class.
- //as the class line has the undelimited class plus previous classes we instead look for the class headings and take from there
- //<a href="wiki/index.php/Eternal Soldier">
- //<b>Eternal Soldier</b>
- //</a>
- characterlinks = document.evaluate(
- "//a[starts-with(@href,'wiki/index.php/')]",
- document,
- null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
- null
- );
- if (characterlinks.snapshotLength>0){
- charid=window.location.href.match(/\d+$/);
- if (!isNaN(charid)){
- //class we want is the last in the list
- charpagemaxtier=characterlinks.snapshotLength-1;//2 here equals t3
- while(characterlinks.snapshotItem(charpagemaxtier).href.match(/wiki\/index.php\/$/)&&charpagemaxtier>0){
- charpagemaxtier-=1;
- }
- charclass=characterlinks.snapshotItem(charpagemaxtier).firstElementChild.textContent;// text of the <b> child node
- if (charclass!=""){
- GM_setValue(''+charid,charclass);
- }
- }
- }
- //while we are on the character page we ought to set a button and store away the settings.
- //either we have character class as text inline or we set as title text.
- var anewdiv=document.createElement('div');
- var anewp=document.createElement('p');
- var anewform=document.createElement('form');
- var radbut1=document.createElement('input');
- var radbut1text=document.createTextNode("As inline text");
- var radbut2=document.createElement('input');
- var radbut2text=document.createTextNode("As mouse over text");
- var brtag=document.createElement('br');
- var checkbox1=document.createElement('input');
- var checkbox1text=document.createTextNode("List known classes in attack dropdown");
- anewp.textContent="Set the display type for Nexus Clash Display Known Classes";
- radbut1.name="classlistsetting";
- radbut1.value="inline";
- radbut1.type='radio';
- radbut2.name="classlistsetting";
- radbut2.value="titletext";
- radbut2.type='radio';
- checkbox1.name="attackdropdownsetting";
- checkbox1.value='showclass4attack';
- checkbox1.type='checkbox';
- anewdiv.style="background-color:lightgrey";
- //anewdiv.style="display:inline-block";
- anewform.insertBefore(checkbox1,anewform.lastElementChild);//this ends up last
- anewform.insertBefore(radbut2,anewform.lastElementChild);//then this before
- anewform.insertBefore(radbut1,anewform.lastElementChild);//then this ends up on top.
- anewform.insertBefore(brtag,anewform.lastElementChild);
- anewform.insertBefore(radbut1text,radbut1.nextElementSibling);
- anewform.insertBefore(radbut2text,radbut2.nextElementSibling);
- anewform.insertBefore(checkbox1text,checkbox1.nextElementSibling);
- anewdiv.insertBefore(anewform,anewdiv.firstElementChild);
- anewdiv.insertBefore(anewp,anewdiv.firstElementChild);
- // anewdiv.appendChild(checkbox1);//,anewdiv.lastElementChild);
- //get setting for whether to show class info in attack dropdown.
- attacksetting=GM_getValue('attacksetting',false);
- if (attacksetting){
- checkbox1.checked=true;
- }
- else {
- checkbox1.checked=false;
- }
- //get the current description pane setting (or set it up if not already set)
- currentsetting=GM_getValue('textsetting','');
- if (currentsetting=='titletext'){
- radbut2.checked=true;
- }
- else if (currentsetting==""){
- GM_setValue('textsetting','inline');
- currentsetting='inline';
- radbut1.checked=true;
- }
- else {
- radbut1.checked=true;
- }
- //this event for the sett whether show class in attack dropdown
- var setattack=function(e) {
- var ebutton=e.target;
- GM_setValue('attacksetting',ebutton.checked);
- }
- //this the event for toggling the display type in description pane
- var setevent=function(e) {
- var ebutton=e.target;
- GM_setValue('textsetting',ebutton.value);
- }
- //value="Visit User Profile"
- characterlinks = document.evaluate(
- //"//input[starts-with(@value,'Visit User Profile')]",
- "//body",
- document,
- null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
- null
- );
- if (characterlinks.snapshotLength>0){
- characterlinks.snapshotItem(0).insertBefore(anewdiv,characterlinks.snapshotItem(0).lastElementChild);
- radbut1.addEventListener("click",setevent,true);
- radbut2.addEventListener("click",setevent,true);
- checkbox1.addEventListener("change",setattack,false);
- }
- }
- else{//if not on roster page storing the class value maybe we are on the game page and we ought to add the class names.
- //we want this link type and we want to grab the id number. gm_getvalue the class and then add it and a comma after the name.
- //<a href="javascript:SelectItem('target_id','996')" class="faction">a playful otter </a>
- characterlinks = document.evaluate(
- "//a[starts-with(@href,'javascript:SelectItem')]",
- document,
- null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
- null
- );
- //alert("running");
- if (characterlinks.snapshotLength>0){
- //get setting
- currentsetting=GM_getValue('textsetting','');
- if (currentsetting==""){
- GM_setValue('textsetting','inline');
- currentsetting='inline';
- }
- //alert(characterlinks.snapshotLength);
- for(i=0;characterlink=characterlinks.snapshotItem(i);i++){
- charid=characterlink.href.match(/\d+/);
- //charid='#'+charid+"#";//non fixed length number needs to be made unique.
- charclass = GM_getValue(""+charid,"");
- if(charclass!=""){
- if(currentsetting=='inline'){
- GM_addStyle("A.classlevel{color:#666666;}");
- //charclass=charclass[0].match(/[AEIOU]/)?", an "+charclass:", a "+charclass; // and a or an
- characterlink.nextElementSibling.textContent=charclass+"-"+characterlink.nextElementSibling.textContent;
- characterlink.nextElementSibling.className='classlevel';
- }
- else{
- characterlink.nextElementSibling.title=charclass;
- }
- }
- }
- }
- //now look to see if we have set to show in the attack dropdown and if so the list known classes there.
- attacksetting=GM_getValue('attacksetting',false);
- if(attacksetting){
- //<select id="combat_target_id" name="target_id">
- //<option value="996">a playful otter</option>
- //</select>
- characterlinks = document.evaluate(
- "//select[@id='combat_target_id']/option",
- document,
- null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
- null
- );
- if (characterlinks.snapshotLength>0){
- for(i=0;characterlink=characterlinks.snapshotItem(i);i++){
- charid=characterlink.value;
- charclass = GM_getValue(""+charid,"");
- if(charclass!=""){
- characterlink.textContent+=" - "+charclass;
- }
- }
- }
- }
- }