Travian Gestione Risorse by M93

By Matt93 Last update Jun 15, 2009 — Installed 1,737 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name           Travian Gestione Risorse by M93
// @namespace      travian_help
// @include        http://*.travian.*/*
// @exclude        http://*.travian.*/manual.php*
// ==/UserScript==

function addGlobalStyle(css) {
    var head, style;
    head = document.getElementsByTagName('head')[0];
    if (!head) { return; }
    style = document.createElement('style');
    style.type = 'text/css';
    style.innerHTML = css;
    head.appendChild(style);
}

function w(html){
	document.getElementById('sright').innerHTML+=html;
}

function wbox(title,html,m){
	if(typeof(m)=='undefined'){
		w('<div class="th-box"><h1>'+title+'</h1>'+html+'</div>');
	}else{
		m.innerHTML+='<div class="th-box"><h1>'+title+'</h1>'+html+'</div>';
	}
}

/* MATH FUNCTIONS */
function percentualedi(cif,tot){
	return Math.floor(cif/tot*100);
}

function getTimeToOverflow(res){
	var rem=res[2]-res[1];
	var time=rem/res[0]*3600;
	return Math.floor(time);
}

function getTimeToTarget(res,targ){
	var rem=targ-res[1];
	var time=rem/res[0]*3600;
	return Math.floor(time);
}

function time2date(time){
	var td=new Date(time*1000);
	var h=td.getHours();
	var m=td.getMinutes();
	var s=td.getSeconds();
	if(h<10){
		h="0"+h;
	}
	if(m<10){
		m="0"+m;
	}
	if(s<10){
		s="0"+s;
	}
	return h+':'+m+':'+s;
}

/* INNER TRAVIAN */
function getResourceInfo(){
	var resource=new Array();
	for(var i=1;i<=4;i++) {
		var rtd  = document.getElementById("l"+i);
		if(!rtd) return;
		resource.push( [parseInt(rtd.title),parseInt(rtd.textContent.match(/\-?(\d+)\//)),parseInt(rtd.textContent.replace(/(\d+)\//,""))] );
	}
	return resource.reverse();
}

function getResourcePerBuild(i){
	if(typeof(i)=='undefined'){ var i=0;}
	var txt=document.getElementsByClassName('required')[i].textContent;
	txt=txt.split('|');
	var arr=[];
	for(i=0;i<txt.length;i++){
		// OLD MATHOD
		// arr.push(txt[i].split('	')[15]);
		var match0=txt[i].match(/(.*?)([0-9]{1,15})(.*?)/i);
		arr.push(match0[2]);
	}
	return arr;
}

function time2string(time){
	var h,m,rm,rs;
	h=Math.floor(time/3600);
	rm=time-(h*3600);
	m=Math.floor(rm/60);
	rs=rm-(m*60);
	if(h<10){
		h="0"+h;
	}
	if(m<10){
		m="0"+m;
	}
	if(rs<10){
		rs="0"+rs;
	}
	return h+':'+m+':'+rs;
}
	
/* Boxes */
function ResOverFlowBOX(){
	var html;
	var t1=time2string(getTimeToOverflow(getResourceInfo()[0]));
	var t2=time2string(getTimeToOverflow(getResourceInfo()[1]));
	var t3=time2string(getTimeToOverflow(getResourceInfo()[2]));
	var t4=time2string(getTimeToOverflow(getResourceInfo()[3]));
	var p1=percentualedi(getResourceInfo()[0][1],getResourceInfo()[0][2]);
	var p2=percentualedi(getResourceInfo()[1][1],getResourceInfo()[1][2]);
	var p3=percentualedi(getResourceInfo()[2][1],getResourceInfo()[2][2]);
	var p4=percentualedi(getResourceInfo()[3][1],getResourceInfo()[3][2]);
	
	if(p1>=90){
		var class1="th-bar th-bar-full";
	}else{
		var class1="th-bar";
	}
	if(p2>=90){
		var class2="th-bar th-bar-full";
	}else{
		var class2="th-bar";
	}
	if(p3>=90){
		var class3="th-bar th-bar-full";
	}else{
		var class3="th-bar";
	}
	if(p4>=90){
		var class4="th-bar th-bar-full";
	}else{
		var class4="th-bar";
	}
	
	html='<table width="100%" border="0" cellspacing="0" cellpadding="1">'+
		  '<tr>'+
			'<td width="50%"><img class="r1" title="Legno" alt="Legno" src="img/x.gif"/> '+t1+'</td>'+
			'<td><div class="'+class1+'" style="width:'+p1+'%"><span>'+p1+'%</span></div></td>'+
		  '</tr>'+
		  '<tr>'+
			'<td><img class="r2" title="Argilla" alt="Argilla" src="img/x.gif"/> '+t2+'</td>'+
			'<td><div class="'+class2+'" style="width:'+p2+'%"><span>'+p2+'%</span></div></td>'+
		  '</tr>'+
		  '<tr>'+
			'<td><img class="r3" title="Ferro" alt="Ferro" src="img/x.gif"/> '+t3+'</td>'+
			'<td><div class="'+class3+'" style="width:'+p3+'%"><span>'+p3+'%</span></div></td>'+
		  '</tr>'+
		  '<tr>'+
			'<td><img class="r4" title="Grano" alt="Grano" src="img/x.gif"/> '+t4+'</td>'+
			'<td><div class="'+class4+'" style="width:'+p4+'%"><span>'+p4+'%</span></div></td>'+
		  '</tr>'+
		'</table>';
	wbox('Gestione Risorse',html);
}

function ResToBuildBOX(){
	var reqs=document.getElementsByClassName('required');
	for(i=0;i<reqs.length;i++){
		var rs=getResourcePerBuild(i);
		var html='<div class="box"><table width="100%" border="0" cellspacing="0" cellpadding="1">';
		var mxtim=0;
		for(r=0;r<4;r++){
			var p1=percentualedi(getResourceInfo()[r][1],rs[r]);
			if(p1<100){
				var tim=getTimeToTarget(getResourceInfo()[r],rs[r]);
				if(tim>mxtim){
					mxtim=tim;
				}
				var t1=time2string(tim);
			}else{
				var t1='---';
				var p1=100;
			}
		  html+='<tr>'+
			'<td width="25%"><img class="r'+(r+1)+'" src="img/x.gif"/> '+t1+'</td>'+
			'<td><div class="th-bar" style="width:'+p1+'%"><span>'+p1+'%</span></div></td>'+
		  '</tr>';
		}
		if(mxtim>0){
			var now=new Date();
			now=now.getTime();
			now=now/1000;
			var d=time2date(now+mxtim);
		}else{
			var d='---';
		}
		html+='<tr><td><img class="clock" title="durata" alt="durata" src="img/x.gif"/> '+d+'</td><td></td></tr>';
		html+='</table></div>';
		if(reqs.length>1){
			var tit=document.getElementsByTagName('h2')[i].innerHTML;
		}
		if(reqs.length==1){
			var tit='l\' edificio';
		}
		wbox('Risorse per '+tit,html,document.getElementsByClassName('required')[i]);
	}
}

function RewriteResBar(){
	var r=getResourceInfo();
	var d=document.getElementById('res');
	d.getElementsByTagName('TABLE')[0].style.display='none';
	d.innerHTML+='<table id="myresbar" width="100%" border="0" cellspacing="0" cellpadding="1">'+
					'<tr>'+
						'<td><img src="img/x.gif" class="r1" alt="" border="0" /></td>'+
						'<td align="right"><span id="myl1">'+r[0][1]+'</span><br/><span class="th-sr">'+r[0][2]+'</span></td>'+
						'<td><img src="img/x.gif" class="r2" alt="" border="0" /></td>'+
						'<td align="right"><span id="myl2">'+r[1][1]+'</span><br/><span class="th-sr">'+r[1][2]+'</span></td>'+
						'<td><img src="img/x.gif" class="r3" alt="" border="0" /></td>'+
						'<td align="right"><span id="myl3">'+r[2][1]+'</span><br/><span class="th-sr">'+r[2][2]+'</span></td>'+
						'<td><img src="img/x.gif" class="r4" alt="" border="0" /></td>'+
						'<td align="right"><span id="myl4">'+r[3][1]+'</span><br/><span class="th-sr">'+r[3][2]+'</span></td>'+
					'</tr>'+
				'</table>';
}

function UpdateResBar(){
	var r=getResourceInfo();
	document.getElementById('myl1').innerHTML=r[0][1];
	document.getElementById('myl2').innerHTML=r[1][1];
	document.getElementById('myl3').innerHTML=r[2][1];
	document.getElementById('myl4').innerHTML=r[3][1];
}
/* INIT ALL */
function addCSS(){
	addGlobalStyle('.th-box{background-color:rgba(0,0,150,0.7);width:100%; color:#FFFFFF;-moz-border-radius:4px;padding:2px;margin-bottom:2px;}.th-box h1{font-size:16px;border-bottom:1px dashed #FFFFFF;width:90%;margin-bottom:2px;padding-bottom:0px;}.th-bar{font-size:10px;background-color:#FFFFFF;color:rgb(120,120,250);-moz-border-radius-topright:1px;-moz-border-radius-bottomright:1px;text-align:center;}.th-bar-full{background-image:url(data:image/gif;base64,R0lGODlhCAAIAJEAAKqqqv%2F%2F%2FwAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2BQQJCgAAACwAAAAACAAIAAACDZQFCadrzVRMB9FZ5SwAIfkECQoAAAAsAAAAAAgACAAAAg%2BELqCYaudeW9ChyOyltQAAIfkECQoAAAAsAAAAAAgACAAAAg8EhGKXm%2BrQYtC0WGl9oAAAIfkECQoAAAAsAAAAAAgACAAAAg%2BEhWKQernaYmjCWLF7qAAAIfkECQoAAAAsAAAAAAgACAAAAg2EISmna81UTAfRWeUsACH5BAkKAAAALAAAAAAIAAgAAAIPFA6imGrnXlvQocjspbUAACH5BAkKAAAALAAAAAAIAAgAAAIPlIBgl5vq0GLQtFhpfaIAACH5BAUKAAAALAAAAAAIAAgAAAIPlIFgknq52mJowlixe6gAADs%3D);font-weight:bold; color: #000000;}.th-bar-full span{background-color:#FFFFFF;}.th-sr{color:#C0C0C0;font-size:10px;padding:0px;margin:0px;}');
}

function InitAll(){
	addCSS();
	RewriteResBar();
	setInterval(function(){UpdateResBar();},200);
	ResOverFlowBOX();
	if(document.getElementsByClassName('required').length>0){
		ResToBuildBOX();
	}
}

InitAll();