您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Lets you retire players in bulk.
// ==UserScript== // @name Bulk Player Retirement // @namespace glb.warriorgeneral.com // @description Lets you retire players in bulk. // @include http://glb.warriorgeneral.com/game/home.pl // @copyright 2010, garrettFoster // @version 2014.04.22 // ==/UserScript== // pabst repaired it 1/12/14 window.setTimeout(main,1000); //needed to start greasemonkey function main(){ var option = document.getElementsByTagName('option'); if (option[14].selected){ //add button var div = document.createElement('div'); div.setAttribute('id','retireDiv'); var button = document.createElement('input'); button.setAttribute('type','button'); button.setAttribute('value','Retire Selected Players'); button.setAttribute('style','float: right;'); button.addEventListener('click',getPass,false); div.appendChild(button); var location = document.getElementById('players'); location.parentNode.insertBefore(div,location); div = document.createElement('div'); div.setAttribute('id','hidden-div'); div.setAttribute('style','visibility:hidden; display:none;'); location = document.getElementById('retireDiv'); location.parentNode.insertBefore(div,location.nextSibling); div = document.createElement('div'); div.setAttribute('style','clear: both;'); location = document.getElementById('hidden-div'); location.parentNode.insertBefore(div,location.nextSibling); //add headings var tr = document.getElementById('playerTable').getElementsByTagName('tr'); var th = document.createElement('th'); var a = document.createElement('a'); a.innerHTML = 'Retire Player?'; a.setAttribute('style','cursor:pointer;cursor:hand;'); a.addEventListener('click',function(){toggle('retirePlayer');},false); th.appendChild(a); tr[0].appendChild(th); th = document.createElement('th'); a = document.createElement('a'); a.innerHTML = 'Delete Name?'; a.setAttribute('style','cursor:pointer;cursor:hand;'); a.addEventListener('click',function(){toggle('retireName');},false); th.appendChild(a); tr[0].appendChild(th); //add checkboxes for(var i=1;i<tr.length;i++){ var id = tr[i].getElementsByTagName('td')[1].getElementsByTagName('a')[0].href.split('player_id=')[1]; var td = document.createElement('td'); var chk = document.createElement('input'); chk.setAttribute('type','checkbox'); chk.setAttribute('value',id); chk.setAttribute('class','retirePlayer'); td.appendChild(chk); tr[i].appendChild(td); td = document.createElement('td'); chk = document.createElement('input'); chk.setAttribute('type','checkbox'); chk.setAttribute('value','keep_name'); chk.setAttribute('class','retireName'); td.appendChild(chk); tr[i].appendChild(td); } } } function getPass(){ var player = document.getElementsByClassName('retirePlayer'); var num = 0; for(var i=0;i<player.length;i++){ if(player[i].checked){ num++; } } var span = document.createElement('span'); span.setAttribute('style','float: right;'); span.innerHTML = 'Please enter your password to confirm retirement of ' + num + ' player(s): '; var input = document.createElement('input'); input.setAttribute('type','password'); input.setAttribute('id','retire_pass'); input.setAttribute('value',''); input.setAttribute('style','float: right;'); var button = document.createElement('input'); button.setAttribute('type','button'); button.setAttribute('value','OK'); button.setAttribute('style','float: right;'); button.addEventListener('click',retirePlayers,false); var location = document.getElementById('retireDiv'); location.innerHTML = ''; location.appendChild(button); location.appendChild(input); location.appendChild(span); } function retirePlayers(){ var player = document.getElementsByClassName('retirePlayer'); var retireId = new Array(); for(i=0;i<player.length;i++){ if(player[i].checked){ retireId.push(player[i].value); }else{ retireId.push(0); } } var names = document.getElementsByClassName('retireName'); var retireName = new Array(); for(i=0;i<names.length;i++){ if(names[i].checked){ retireName.push(0); }else{ retireName.push(1); } } var password = document.getElementById('retire_pass').value; var url = 'http://glb.warriorgeneral.com/game/retire_player.pl'; document.getElementById('retireDiv').innerHTML = '<span style="color: green; float: right;">Retiring Players...</span>'; for(var i=0;i<retireId.length;i++){ if(retireId[i] != 0){ params = '?player_id='+retireId[i]+'&keep_name='+retireName[i]+'&password='+password+'&action=Retire'; var txt = get(url+params); if(checkError(txt)){ break; } } } document.getElementById('retireDiv').innerHTML = '<span style="color: green; float: right;">Done!</span>'; } function toggle(className){ var chk = document.getElementsByClassName(className); for(var i=0;i<chk.length;i++){ if(chk[i].checked){ chk[i].checked = false; }else{ chk[i].checked = true; } } } function get(url){ var xmlhttp = new XMLHttpRequest(); xmlhttp.open('GET',url,false); xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xmlhttp.send(null); return xmlhttp.responseText; } function checkError(txt){ var div = document.getElementById('hidden-div'); div.innerHTML = txt; var error = document.getElementsByClassName('error'); if(error.length != 0){ document.getElementById('retireDiv').innerHTML = '<span style="color: red; float: right;">'+error[0].innerHTML+'</span>'; return true; } return false; }