Darwin's Scoreinfo2

By Monkey DºLuffy Last update Nov 22, 2009 — Installed 53 times.

There are 1 previous version of this script.

// ==UserScript==
// @name           Darwin's Scoreinfo2
// @namespace      Darwin's Scoreinfo2
// @description    Puntuacion de Darwin's.
// @author         Monkey
// @include                     http://*.ikariam.*/index.php*
// ==/UserScript==

var scoreTypes = ["Score", "Military", "Gold", "AllyScore", "AllyMembers"];
var post       = { 
	"Score"     : "view=highscore&highscoreType=score&searchUser=",
	"Gold"      : "view=highscore&highscoreType=trader_score_secondary&searchUser=",
	"Military"  : "view=highscore&highscoreType=army_score_main&searchUser=",
	"AllyScore" : "view=allyPage&allyId=",
};

function updateScore(type, score) {
    $X("//div[@id='scoreinfo']//*[@id='"+type+"']").innerHTML = score;
}
function showScore(type, enable) {
	$X("//div[@id='scoreinfo']//*[@id='"+type+"']").style.display = (enable) ? "" : "none";
}
function fmtNumber(n) {
  n += "";
  for (var i = (n.length - 3); i > 0; i -= 3) {
    n = n.slice(0, i) +","+ n.slice(i);
  }
  return n;
}

function createScoreInfo() {
	var div = document.createElement("div");
	div.setAttribute("id", "scoreinfo");
	div.setAttribute("class", "dynamic");
	var divhtml = <>
		<h3 class="header">{texts["ScoreInfo"]}</h3>
		<table style="margin-left:10px; margin-right:10px;" width="200">
		 <tr id="total_score">
		  <td align="left" class="ally"><b>{texts["MyScore"]}:</b></td>
		  <td align="left" id="Score">{texts["unknown"]}</td>
		 </tr>
		 <tr id="army_score_main">
		  <td align="left" class="ally"><b>{texts["Military"]}:</b></td>
		  <td align="left" id="Military">{texts["unknown"]}</td>
		 </tr>
		 <tr id="trader_score_secondary">
		  <td align="left" class="ally"><b>{texts["GoldScore"]}:</b></td>
		  <td align="left" id="Gold">{texts["unknown"]}</td>
		 </tr>
		 <tr id="ally_score">
		  <td align="left" class="ally"><b>{texts["AllyScore"]}:</b></td>
		  <td align="left" id="AllyScore">{texts["unknown"]}</td>
		 </tr>
		 <tr id="ally_members">
		  <td align="left" class="ally"><b>{texts["AllyMembers"]}:</b></td>
		  <td align="left" id="AllyMembers">{texts["unknown"]}</td>
		 </tr>
		</table>
		<div class="footer"></div>
	</>;
	div.innerHTML = divhtml;
	var n = $("infocontainer");
	if (!n) { 
		n = $("information"); 
	}
	insertNodeAfter(div, n)
}
function requestScore(key, type, onload) {
    GM_xmlhttpRequest({
        method: 'POST',
           url: 'http://' + server + '/index.php',
	      data: post[type] + key,
       headers: {
       'User-agent' : 'Mozilla/4.0 (compatible) Greasemonkey',
     'Content-type' : 'application/x-www-form-urlencoded',
           'Accept' : 'application/atom+xml,application/xml,text/xml',
           'Referer': 'http://' + server + '/index.php', 
            'Cookie': document.cookie
		},
		onload:onload
	});
}
function updateDetails(type, playerName, responseText) {
	var root = getDocument(responseText);
	var score = $x("//td[@class='score']", root);
	var name = $x("//td[@class='name']", root);
	var place = $x("//td[@class='place']", root);
	var totalScore = "";
	var totalRank = "";
	for(var i=0; i< name.length; i++) {
		var pname = name[i].innerHTML.replace(/\s+/g,"");
		if (pname == playerName.replace(/\s+/g,"")) {
			totalScore = score[i].innerHTML;
			totalRank = place[i].innerHTML;
		}
	}
	totalScore += " (#"+totalRank+")";
	updateScore(type, totalScore);
	config.scoreinfo[type] = totalScore;
	saveConfig();
}
function updateAllyDetails(divId, responseText) {
	var root = getDocument(responseText);
	var posScore = $X("//table[@id='allyinfo']//tr[position()=last()-1]//td[position()=last()]", root).textContent;
	var members = $X("//table[@id='allyinfo']//tr[position()=2]//td[position()=last()]", root).textContent;
    if (/([0-9]+)\s\((.+)\)/.exec(posScore)!=null) {
    	allRank = RegExp.$1;
    	posScore = RegExp.$2;
    }
    
    var strScore = posScore;
    members = members +" (#" + allRank +")";
    updateScore("AllyScore", strScore);
    updateScore("AllyMembers", members);
    config.scoreinfo["AllyScore"] = strScore;
    config.scoreinfo["AllyMembers"] = members;
	saveConfig();
}
function ScoreInformation(e) {
	config = getConfig();
	if (config["scoreinfo"] == undefined) {
		config["scoreinfo"] = {};
	}
	var inline = $("scoreinfo");
	if (inline == undefined) {
		createScoreInfo();
	} else {
   		showScore("ally_score", true);
   		showScore("ally_members", true);
	}
	updateScore("Score", texts["fetch"]);
	updateScore("Military", texts["fetch"]);
	updateScore("Gold", texts["fetch"]);
	updateScore("AllyScore", texts["fetch"]); 
	updateScore("AllyMembers", texts["fetch"]);
	var playerName = $X("//div[@id='information']/ul[@class='cityinfo']/li[@class='owner']");
	if (playerName == undefined) {
		playerName = $X("//div[@id='information']//ul[@class='cityinfo']/li[@class='owner']");
		playerName = playerName.childNodes[2].textContent.Trim();
	} else {
		playerName = playerName.childNodes[1].textContent.Trim();
	}
	var allyname = $x("//div[@id='information']//li[@class='ally']//text()")[1].textContent.Trim();
	var playerScore = -1;
    var infoContainer = $("infocontainer");
    if (infoContainer) {
    	var scorenode = $x("//div[@id='infocontainer']//li[@class='name']/text()")[1];
    	if (scorenode != undefined) {
    		scorenode.parentNode.style.display = "none";
    		playerScore = scorenode.textContent.replace(/,/g, "");
    	}
    }
	var allyId;
	if (allyname != "-") {
		allyId = /allyId=([0-9]+)/.exec($X("//li[@class='ally']//a").href)[1];
	}
	else {
		allyId = -1;
       	config.scoreinfo["AllyScore"] = "-";
       	config.scoreinfo["AllyMembers"] = "-";
       	saveConfig();
	}
	var checkedTime = (_startTime - (10 * 60 *1000));
	if (playerName != config.scoreinfo["lastPlayerCheck"] || config.scoreinfo["lastCheckedTimestamp"] < checkedTime || config.scoreinfo["lastServerCheck"] != server) {
    	config.scoreinfo["lastCheckedTimestamp"] = _startTime;
   		config.scoreinfo["lastPlayerCheck"] = playerName;
       	config.scoreinfo["lastServerCheck"] = server;
       	// 更新資料
		requestScore(playerName, 'Score', function(responseDetails) {
			updateDetails('Score', playerName, responseDetails.responseText);
		});
        requestScore(playerName, 'Military', function(responseDetails) {
			updateDetails('Military', playerName, responseDetails.responseText);
        });
        requestScore(playerName, 'Gold', function(responseDetails) {
			updateDetails('Gold', playerName, responseDetails.responseText);
        });
        
		if (allyId != -1) {
			requestScore(allyId, 'AllyScore', function(responseDetails) {
				updateAllyDetails('AllyScore', responseDetails.responseText);
			});
		} else {
			updateScore("AllyScore", "-")
			updateScore("AllyMembers", "-")
			showScore("ally_score", false);
			showScore("ally_members", false);
			saveConfig();
		}
	} else {
       	for(key in scoreTypes) {
           	var type = scoreTypes[key];
           	if (type == "AllyScore" && config.scoreinfo[type] == "-") {
				showScore("ally_score", false);
           	}
           	if (type == "AllyMembers" && config.scoreinfo[type] == "-") {
				showScore("ally_members", false);
           	}
           	updateScore(type, config.scoreinfo[type]);
       	}
	}
}