Travian
By chamchoum
—
Last update Aug 31, 2006
—
Installed
6,777 times.
Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)
// Travian GreaseMonkey Script
// Get GreaseMonkey @ http://greasemonkey.mozdev.org/
// Author: d0t
// Thanks To: Sariel Amraphel, Nick_S, S-Force, Parisii, Requiem for suggestions and contributions to code
//some parts based on the travissimo script Copyright (C) 2005 by blomi
// Released under the GNU GPL license ( http://www.gnu.org/copyleft/gpl.html)
// ==UserScript==
// @name Travian
// @namespace travian
// @description Greasemonkey script pour Travian version française, c'un script qui permet d'ajouter de nombreux bonus à l'interface de travian. outil indispensable.
// @include http://travian.fr/*
// @include http://*.travian.fr/*
// @exclude http://forum.travian.*
// @exclude http://*.travian.*/index.php*
// @exclude http://*.travian.*/anleitung.php*
// @exclude http://*.travian.*/login.php*
// @exclude http://*.travian.*/chat/*
// @exclude http://*.travian.*/impressum.php*
// @exclude http://*.travian.*/karte2.php*
// ==/UserScript==
///////////// SETTINGS ////////////////
var defaultAttType = 3; // Type d'attaque par defaut : 2 = assistance, 3 = normal, 4 = pillage
var mapStep = 3; // nombre de case dont la carte se decale a chauqe fois
var disablePlusBtn = true; // retire le bouton plus dans la barre en haut
var disablePluspub = true; // retire la pub sur le cote
var forumURL; // = "http://forum.travian.fr/index.php";
var travissimoimg; //= 'http://ulzbug2.free.fr/img/'; // url pour les images supplementaires
var pos_notes = "20px"; // position de la case notes
var temps = 10; // temps avant lequel les chiffres passent en rouge ( en heures )
var bouton_coche_tout = true; //mettre false si vous avez deja cette fonctionnalite avec travian plus.
var skin = false; //mettre l'url du skin s'il y a, sinon false
var notes_right = false; // move notes to the right, assuming you have space there
///////////////////////////////////////
function t_format2(s) {
if (s > -1) {
stunden = Math.floor(s/3600);
minuten = Math.floor(s/60) % 60;
sekunden = s % 60;
t = stunden + ":";
if (minuten < 10) {
t += "0";
}
t += minuten + ":";
if (sekunden < 10){
t += "0";
}
t += sekunden;
} else {
t = "0:00:0?";
}
return t;
}
function t_format1(myElement) {
p = myElement.innerHTML.split(":");
stunden = p[0];
minuten = p[1];
sekunden = p[2];
sek = stunden * 3600 + minuten * 60 + sekunden * 1;
return sek;
}
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);
}
var server = window.location.href.match(/(\w+).travian/)[1];
var travissimo_vars = new Array('liens', 'calculPC','Notes','haute_resolution','coche_tout','temps_ressources','Lien_village','rapport','ToolDistance');
if (!skin) skin='http://'+server+'.travian.fr/';
var cout = [
[ [ 120, 100, 180, 40],
[ 100, 130, 160, 70],
[ 150, 160, 210, 80],
[ 140, 160, 20, 40],
[ 550, 440, 320, 100],
[ 550, 640, 800, 180],
[ 900, 360, 500, 70],
[ 950, 1350, 600, 90],
[ 30750, 27200, 45000, 37500],
[ 5800, 5300, 7200, 5500] ],
[ [ 100, 130, 55, 30],
[ 140, 150, 185, 60],
[ 170, 150, 20, 40],
[ 350, 450, 230, 60],
[ 360, 330, 280, 120],
[ 500, 620, 675, 170],
[ 950, 555, 330, 75],
[ 960, 1450, 630, 90],
[ 30750, 45400, 31000, 37500],
[ 5500, 7000, 5300, 4900]],
[ [ 95, 75, 40, 40],
[ 145, 70, 85, 40],
[ 130, 120, 170, 70],
[ 160, 100, 50, 50],
[ 370, 270, 290, 75],
[ 450, 515, 480, 80],
[ 1000, 300, 350, 70],
[ 900, 1200, 600, 60],
[ 35500, 26600, 25000, 27200],
[ 7200, 5500, 5800, 6500]]
];
var Transport = [
[ 40, 20, 50, 0, 100, 70, 0, 0, 0, 1600],
[ 30, 45, 0, 75, 35, 65, 0, 0, 0, 1600],
[ 60, 40, 50, 0, 110, 80, 0, 0, 0, 1600]
];
function elem(tag,content) {
var ret = document.createElement(tag);
ret.innerHTML = content;
return ret;
}
function div(content) {
return elem("div", content);
}
function get(id) {
return document.getElementById(id);
}
function find(xpath,xpres) {
var ret = document.evaluate(xpath,document,null,xpres,null);
return xpres == XPFirst ? ret.singleNodeValue : ret;
}
var XPFirst = XPathResult.FIRST_ORDERED_NODE_TYPE,
XPList = XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
function trim(s) {
return s.replace(/^\s*(.*?)\s*$/,'$1');
}
function pad2(n) {
return n<10 ? "0"+n : n;
}
function addBookmark(pr) {
var bmtitle = prompt("Titre du lien ?");
if (pr)
var loc = prompt("URL du lien ?");
else
var loc = window.location.href
if (bmtitle != null) {
GM_setValue("bookmarks",
GM_getValue("bookmarks","") + "|<>|" + bmtitle + "@@@" + loc);
window.location.reload( false );
}
}
function removeBookmark(bookmark) {
if (confirm("Enlever le lien " + bookmark + "?"))
GM_setValue("bookmarks",
GM_getValue("bookmarks","") . replace(bookmark,""));
window.location.reload( false );
}
// edit menu for bookmarks
var bmadd = elem("a","Ajouter un lien");
bmadd.addEventListener("click", function() { addBookmark(false); }, 0);
var bmadd2 = elem("a","Aj. un lien externe");
bmadd2.addEventListener("click", function() { addBookmark(true); }, 0);
var opts = elem("a","Options");
opts.href = "./spieler.php?s=5";
var hr = document.createElement("hr");
hr.size=1;
hr.color="#aaaaaa";
hr.style.marginLeft = "7px";
var menu = find("//td[@class='menu']",XPFirst);
if (menu) {
menu.style.display = "none"; // tegen knipperen (?)
menu.innerHTML = menu.innerHTML.replace('<a ','<a target="_blank" ')+'<a href="http://ulzbug.free.fr" target="_blank">Travian ToolBox</a>';
menu.appendChild(hr);
menu.appendChild(bmadd);
menu.appendChild(bmadd2);
menu.appendChild(opts);
menu.appendChild(hr.cloneNode(false));
var rmbm = "<span style='position:absolute;left:0px;font:0.75em;padding-left:1px;cursor:crosshair'>x </span>";
var bmarks = GM_getValue("bookmarks","").split("|<>|");
for (var bm in bmarks) {
bm = bmarks[bm];
if (trim(bm)=="")
continue;
var bmdata = bm.split("@@@");
var link = elem("a",rmbm + "<span>" + bmdata[0] + "</span>");
link.style.paddingTop = 0;
link.style.paddingBottom = 1;
link.setAttribute('bm',bm);
link.href = bmdata[1];
link.firstChild.addEventListener("click", function(e) { removeBookmark(e.target.parentNode.getAttribute('bm')); return false; }, 0);
ct = elem('span','');
ct.style.position = 'relative';
ct.appendChild(link);
menu.appendChild(ct);
}
menu.style.display = "table-cell";
} // if menu
// timer
function timerStart(id) {
var tmr = get(id);
if (!tmr)
return;
tmr.start = new Date().getTime();
tmr.sec = t_format1(tmr);
timerUpdate(tmr);
}
function timerUpdate(tmr) {
var sec = tmr.sec - Math.floor((new Date().getTime() - tmr.start) / 1000);
if (sec < 0 && tmr.onzero)
tmr.onzero();
else {
tmr.innerHTML = t_format2(sec);
setTimeout(function() { timerUpdate(tmr); }, 500);
}
}
function autre() {
// aType d'attaque
if (window.location.href.match(/a2b\.php/)) {
find("//input[@value='" + defaultAttType + "']", XPFirst).checked = true;
}
}
function modifieRapport(){
// rapports :
if (window.location.href.match(/berichte\.php/)) {
try {
var restr = find("//tr[@class='cbg1']/td[@class='s7']",XPFirst);
var restr = restr.parentNode;
var rescell = restr.getElementsByTagName("td")[1];
var rescell2 = restr.getElementsByTagName("td")[0];
var raj = 0;
var x = document.getElementsByTagName("td");
var attack = x[5 + raj].textContent, troops_kind = x[13 + raj].innerHTML;
if (attack.indexOf("attaque") == -1){
raj = 3;
var attack = x[5 + raj].textContent;
var troops_kind = x[13 + raj].innerHTML;
}
var res = trim(rescell.textContent).split(" ");
var total = parseInt(res[0]) + parseInt(res[1]) + parseInt(res[2]) + parseInt(res[3]);
} catch(e) {
rescell = null;
}
if (rescell && (attack.indexOf("attaque") != -1)) {
if (troops_kind.indexOf("gionnaire") != -1){
var peuple = 0;
}
if (troops_kind.indexOf("gourdin") != -1){
var peuple = 2;
}
if (troops_kind.indexOf("Phalange") != -1){
var peuple = 1;
}
var total_carry = 0; // total_carry = sum (troops-losses * carry of troop type)
var pertes_res = [ 0, 0, 0, 0];
for (var i = 0; i < 10; ++i){
total_carry += (parseInt(x[24 + i + raj].textContent) - parseInt(x[35 + i + raj].textContent)) * Transport[peuple][i];
for (var j = 0; j < 4; ++j)
pertes_res[j]+=cout[peuple][i][j]*parseInt(x[35+i+raj].textContent);
}
var pertes=pertes_res[0]+pertes_res[1]+pertes_res[2]+pertes_res[3];
var affichage=total + "/" + total_carry + " [" + Math.round(total / total_carry * 1000) / 10 +
"%]<br /><img src='" + skin + "img/fr/r/1.gif' border='0' height='12' width='18'>"+
pertes_res[0] + '<img src="' + skin + 'img/fr/r/2.gif" border="0" height="12" width="18">'+
pertes_res[1] + '<img src="' + skin + 'img/fr/r/3.gif" border="0" height="12" width="18">'+
pertes_res[2] + '<img src="' + skin + 'img/fr/r/4.gif" border="0" height="12" width="18">'+
pertes_res[3] + ' ('+pertes+')<br />';
if (total > pertes)
affichage+="Gain de ";
else
affichage+="Pertes de ";
affichage += "<img src='" + skin + "img/fr/r/1.gif' border='0' height='12' width='18'>" +
(parseInt(res[0]) -pertes_res[0]) + '<img src="' + skin +
'img/fr/r/2.gif" border="0" height="12" width="18">'+
(parseInt(res[1])-pertes_res[1])+'<img src="'+skin+
'img/fr/r/3.gif" border="0" height="12" width="18">'+
(parseInt(res[2])-pertes_res[2])+'<img src="'+skin+
'img/fr/r/4.gif" border="0" height="12" width="18">'+
(parseInt(res[3])-pertes_res[3]);
if (total_carry != 0){
rescell.appendChild(div(affichage));
rescell2.innerHTML='Butin<br />Butin total<br />Pertes<br />Pertes totales';
}
//Pertes defenseur
var pertes = find("//tr[@class='cbg1']/td[@class='c1 b']",XPFirst).parentNode.parentNode;
var x = pertes.getElementsByTagName("tr")[3].getElementsByTagName("td");
var pertesR = [0,0,0,0];
for (var i = 1; i < 11; ++i){
for (var j = 0; j < 4; ++j)
pertesR[j] += cout[peuple][i-1][j] * parseInt(x[i].textContent);
}
var td1=elem('td','Pertes');
var td2=elem('td',"<img src='"+skin+"img/fr/r/1.gif' border='0' height='12' width='18'>"+
pertesR[0]+'<img src="'+skin+'img/fr/r/2.gif" border="0" height="12" width="18">'+
pertesR[1]+'<img src="'+skin+'img/fr/r/3.gif" border="0" height="12" width="18">'+
pertesR[2]+'<img src="'+skin+'img/fr/r/4.gif" border="0" height="12" width="18">'+pertesR[3]);
td2.setAttribute('colspan', '10');
td2.setAttribute('class', 's7');
var tr1=elem('tr','');
tr1.appendChild(td1);
tr1.appendChild(td2);
pertes.appendChild(tr1);
}
else
if (!isNaN(total))
rescell.appendChild(div("Total : " + total));
}
}
function ressources(){
var rtd = [], prod = [], store = [], storeMax = [], secFull = [];
var capacite=0;
if (window.location.pathname == '/dorf2\.php'){
var capa_cachette=[0,100,130,170,220,280,360,460,600,770,1000];
var bats = find("//map[@name='map1']",XPFirst);
bat=bats.getElementsByTagName("area");
for (var j = 0; j < bat.length; ++j) {
if (bat[j].title.indexOf('Cachette')>=0){
capacite += capa_cachette[parseInt(bat[j].title.replace(/[a-zA-z ]+/,''))];
}
}
if (bats.innerHTML.indexOf('Palissade') >= 0)
capacite = capacite*2;
}
for (var i = 0; i < 4; ++i) {
rtd[i] = get("l"+(i+1));
if (!rtd[i])
break;
prod[i] = parseInt(rtd[i].title);
store[i] = parseInt(rtd[i].textContent.match(/(\d+)\//));
storeMax[i] = parseInt(rtd[i].textContent.replace(/(\d+)\//,""));
if (prod[i] > 0) {
secFull[i] = (3600*(storeMax[i]-store[i])/prod[i]);
var fullStr = t_format2(Math.ceil(Math.max(0,secFull[i]))).slice(0,-3);
if (store[i]==storeMax[i])
fullStr = "<b>" + fullStr + "</b>";
}else if(prod[i]==0){
secFull[i]= -1;
fullstr="infini";
}else {
secFull[i] = 3600*store[i]/(-prod[i]);
var fullStr = t_format2(Math.ceil(Math.max(0,secFull[i]))).slice(0,-3);
}
if ( temps*3600 >= secFull[i] && secFull[i]!=-1)
fullStr = "<font color='red'>" + fullStr + "</font>";
if (store[i]>capacite && capacite>0)
fullStr = "<i>" + fullStr + "</i>";
var insCell = rtd[i].previousSibling.previousSibling;
insCell.style.position = "relative";
insCell.appendChild(elem("span","<span style='font-size:8pt;position: absolute;top:13px;'>(" +
(prod[i]<0?"":"+") + prod[i] + "," + fullStr + ")</span>" ));
}
// build
if (window.location.href.match(/build\.php/)) {
// for each resource listing...
var tbls = find("//table[@class='f10']",XPList);
for (var j = 0; j < tbls.snapshotLength; ++j) {
var tbl = tbls.snapshotItem(j);
var cell = tbl.rows[0].firstChild;
var cost = cell.textContent.split("|").splice(0,4);
var hrs2go = 0;
var lack = [];
var hrs = [];
if (cost.length != 4)
continue; // not a resource cost table
for (var i = 0; i < 4; ++i) {
cost[i] = parseInt(cost[i]);
lack[i] = cost[i]-store[i];
hrs[i] = lack[i] / Math.max(1e-8, prod[i]);
if (hrs2go < hrs[i]) {
needed = i;
hrs2go = hrs[i];
}
}
if (hrs2go != 0) {
var dateBuild = new Date(new Date().getTime()+hrs2go*3600000);
var timeBuild = pad2(dateBuild.getHours()) + ":" + pad2(dateBuild.getMinutes());
var hrs2go = t_format2(Math.ceil(hrs2go*3600));
var id = "timer" + j;
var cell_html = '<table style="margin:5px 0px 3px 0px" cellspacing="1" cellpadding="2" class="tbg">'+
'<tr class="rbg"><td colspan="3">Resources n\u00E9c\u00E9ssaires</td></tr>'+
'<tr><tr class="cbg1"><td> </td><td>Quantité requise</td><td>Temps requis</td></tr><tr>';
for (var i = 0; i < 4; ++i)
if (hrs[i]>0)
cell_html += '<tr' +(i == needed?" style='font-weight:bold":"")+
'><td><img src="'+skin+'img/fr/r/'+(i+1)+'.gif"></td><td>'+
lack[i]+'</td><td>'+(hrs[i]<10000?t_format2(Math.ceil(hrs[i]*3600)):'infini')+'</td></tr>';
cell_html += "</table>";
cell.appendChild(div(cell_html));
}
}
}
}
// main overview
function saveNotes() {
GM_setValue(server+"_notes",get('note').value);
get('bn').value = "Notes sauv\u00E9es!";
return false;
}
function afficheNotes(){
var noteHTML = div("<b>Notes:</b><textarea class='fm' style='width:100%;height:110px;' id='note'></te"+"xtarea><br><input type=button id='bn' value='Sauvegarder les notes' class=fm style='width:100%;height:25px;margin-top:-3px;background:#eee;'>");
function addNoteHandler() {
get('bn').addEventListener("click",function(){ saveNotes(); }, true);
}
if (window.location.href.match(/dorf1\.php/) || notes_right) {
if (notes_right) {
noteHTML = div("<b>Notes:</b><br /><textarea class='fm' style='width:100%;padding: .5ex;margin: 0;height:480px;' id='note'></textarea><br /><input type=button id='bn' value='Sauvegarder les notes' class=fm style='width:100%;height:2.5em;margin:0;background:#eee;' />");
noteHTML.style.margin = "0 0 0 20em";
noteHTML.style.position = "absolute";
noteHTML.style.right = "1em";
noteHTML.style.top = "100px";
noteHTML.style.left = "680px";
} else {
noteHTML.style.margin = "0px 20px";
if (travissimo_set[3]){
noteHTML.style.bottom = pos_notes;
noteHTML.style.width= "90%";
noteHTML.style.position= "absolute";
}
}
document.body.appendChild(noteHTML);
addNoteHandler();
get('note').value = GM_getValue(server+"_notes","");
}
if (window.location.href.match(/karte?\.php/) && mapStep != 1) {
var westLink = find("//area[@title='Ouest']",XPFirst);
if (westLink) { // map view
var loc = 1 + parseInt(westLink.href.match(/z=(\d+)/)[1]);
var ts = ['Ouest','Est','Nord','Sud'];
var fac = [-1,1,-512,512];
for (var i = 0; i < 4; ++i) {
var link = find("//area[@title='" + ts[i] + "']" ,XPFirst);
link.href = link.href.replace(/z=(\d+)/,'z='+(loc+fac[i]*mapStep));
}
} else { // province view
var loc = window.location.href.match(/d=(\d+)/)[1];
find("//div/font/table[@class='f10']",XPFirst).parentNode.appendChild(noteHTML);
addNoteHandler();
get('note').value = GM_getValue(loc+"_notes","");
}
}
}
function coche(){
for (var i = 1; i <= 10; i++){
document.getElementsByName('n'+i)[0].checked = document.getElementsByName('coche_tout')[0].checked;
}
}
function cocher_messages(){
if (window.location.pathname=='/berichte.php'
&& window.location.search.indexOf('id') == -1
|| window.location.href.match(/nachrichten\.php/)){
var bouton = find("//tr[@class='rbg']",XPList);
if (window.location.href.match(/nachrichten\.php/) && bouton.snapshotItem(1).getElementsByTagName("td")[1].innerHTML=='Sujet')
var raj = 1;
else
if (window.location.pathname=='/berichte.php'
&& bouton.snapshotItem(1).getElementsByTagName("td")[0].innerHTML=='SUjet :')
var raj = 1;
else
var raj = 0;
bouton.snapshotItem(1 + raj).getElementsByTagName("td")[0].innerHTML =
'<input type="checkbox" name="coche_tout" id="coche" />'+bouton.snapshotItem(1+raj).getElementsByTagName("td")[0].innerHTML;
get('coche').addEventListener("click",function(){ coche(); }, 0);
if (window.location.pathname=='/berichte.php')
bouton.snapshotItem(0+raj).getElementsByTagName("td")[0].innerHTML='Sujet :';
}
}
function tool_distance(){
if (window.location.pathname=='/karte\.php' && window.location.search.indexOf('d')==-1){
var disthtml=div('<table><tr><td>X </td><td> <input type="text" name="x1" value="" size="3" /></td>'+
'<td></td><td>Y </td><td> <input type="text" name="y1" value="" size="3" /></td></tr>'+
'<tr><td>X </td><td> <input type="text" name="x2" value="" size="3" /></td><td></td>'+
'<td>Y </td><td> <input type="text" name="y2" value="" size="3" /></td></tr></table>'+
'<select name="units">'+
'<option value="6">Légionnaire</option>'+
'<option value="5">Prétorien</option>'+
'<option value="7">Imperian</option>'+
'<option value="16">Equites Legati</option>'+
'<option value="14">Equites Imperatoris</option>'+
'<option value="10">Equites Caesaris</option>'+
'<option value="4">Bélier</option>'+
'<option value="3">Catapulte à feu</option>'+
'<option value="4">Sénateur</option>'+
'<option value="5">Colon</option>'+
'<option value="7">Combattant au gourdin</option>'+
'<option value="7">Combattant à la lance</option>'+
'<option value="6">Combattant à la hache</option>'+
'<option value="9">Eclaireur</option>'+
'<option value="10">Paladin</option>'+
'<option value="9">Cavalier Teuton</option>'+
'<option value="4">Bélier</option>'+
'<option value="3">Catapulte</option>'+
'<option value="4">Chef de tribu</option>'+
'<option value="5">Colon</option>'+
'<option value="7">Phalange</option>'+
'<option value="6">Combattant à l\'épée</option>'+
'<option value="17">Avant-garde</option>'+
'<option value="19">Eclair de Toutatis</option>'+
'<option value="16">Cavalier druide</option>'+
'<option value="13">Hédouin</option>'+
'<option value="4">Bélier</option>'+
'<option value="3">Trebuchet</option>'+
'<option value="5">Chef</option>'+
'<option value="5">Colon</option>'+
'<option value="24">Marchand gaulois</option>'+
'<option value="16">Marchand romain</option>'+
'<option value="12">Marchand germain</option>'+
'</select><br />'+
'Heure d\'arrivée : '+
'<input type="text" name="heures" size="2" value="0" />h:'+
'<input type="text" name="minutes" size="2" value="0" />m:'+
'<input type="text" name="secondes" size="2" value="0" />s'+
'<br /><br /><input type="button" id="bouton" value="Calculer" onclick="calcul()" />'+
'<br />'+
'<table><tr><td>Distance : </td><td><div id="distance"></div></td></tr>'+
'<tr><td>Temps : </td><td><div id="temps"></div></td></tr>'+
'<tr><td>Heure de départ : </td><td><div id="depart"></div></td></tr>');
disthtml.style.margin = "0px 20px";
if (travissimo_set[3]){
disthtml.style.bottom = pos_notes;
disthtml.style.width= "350px";
disthtml.style.position= "absolute";
disthtml.style.left= "300px";
disthtml.style.bottom= "30px";
}
document.body.appendChild(disthtml);
get("bouton").addEventListener("click",function(){ calcul_distances(); }, 0);
}
}
function calcul_distances() {
var vitesse=document.getElementsByName("units")[0].value;
var distance=
Math.sqrt(Math.pow(document.getElementsByName("x1")[0].value-document.getElementsByName("x2")[0].value,2)+
Math.pow(document.getElementsByName("y1")[0].value-document.getElementsByName("y2")[0].value,2));
var temps = distance/vitesse*3600;
var j = Math.floor(temps/(24*3600));
var h = Math.floor(temps/3600)%24;
var m = Math.floor(temps/60)%60;
var s = Math.floor(temps-3600*h-60*m-24*3600*j);
var hd = document.getElementsByName("heures")[0].value - h;
if (hd < 0)
hd = hd + 24;
var md = document.getElementsByName("minutes")[0].value-m;
if (md < 0){
md = md + 60;
hd = hd - 1;
}
var sd = document.getElementsByName("secondes")[0].value-s;
if (sd < 0){
sd = sd + 60;
md = md - 1;
if (md < 0)
hd = hd - 1;
}
if (hd<0)
hd = hd + 24;
get('distance').innerHTML = Math.round(distance, 1) + ' cases';
get('temps').innerHTML = j + 'jours, ' + h + 'h:' + m + 'm:' + s+'s';
get('depart').innerHTML = hd + 'h:' + md +'m:' + sd +'s';
}
function Distance_CapTus(){
if (window.location.pathname=='/karte\.php' && window.location.search.indexOf('d')>=0) {
// Recherche des coordonnýes du village ...
var test = find("//body",XPList);
var test = test.snapshotItem(0);
var coordo = test.innerHTML.match(/<h1>([^\n]+) \(([\d\x2D]+)\|([\d\x2D]+)\)<\/h1>/);
var x2 = coordo[2];
var y2 = coordo[3];
// Fin de recherche des coordonnýes
// Recherche des coordonnýes du village de l'utilisateur
var test2 = find("//table[@class='f10']",XPList);
for ( var j = 0; j < test2.snapshotLength; ++j){
var test23 = test2.snapshotItem(j);
if (test23.innerHTML.match(/<li class[^\n]+<\/li>/)){
var toutTR = test23.getElementsByTagName("tr");
for ( var i = 0; i < toutTR.length; ++i)
if (toutTR[i].innerHTML.match(/<li class[^\n]+<\/li>/)){
var x1 = toutTR[i].innerHTML.match(/\(([\d\x2D]+)<\/td>/);
var y1 = toutTR[i].innerHTML.match(/([\d\x2D]+)\)<a/);
}
}
}
var x1 = x1[1];
var y1 = y1[1];
// Fin de recherche des coordonnýes
if (coordo[1] != 'Plaine dýlaissýe'){
var vitesse=6;
var distance=
Math.sqrt(Math.pow(x1-x2,2)+
Math.pow(y1-y2,2));
var temps = distance/vitesse*3600;
var j = Math.floor(temps/(24*3600));
var h = Math.floor(temps/3600)%24;
var m = Math.floor(temps/60)%60;
var s = Math.floor(temps-3600*h-60*m-24*3600*j);
test.innerHTML = test.innerHTML.replace(/<\/h1>/,'</h1><form name="form"><div style="font-size:8pt;position:absolute; width:450px; height:110px; border: 0px solid #000000; left:155px; top:165px"><b>Unitý la plus lente :</b><SELECT style="border:#FFFFFF solid;border-width: 1px;font-size:8pt;" name="units" onChange="var distance='+distance+';var vitesse=this.value;var temps = distance/vitesse*3600;var j = Math.floor(temps/(24*3600));var h = Math.floor(temps/3600)%24;var m = Math.floor(temps/60)%60;var s = Math.floor(temps-3600*h-60*m-24*3600*j);document.form.Temps.value=j+\' jours,\'+h+\'h:\'+m+\'m\'+s+\'s\';"><option value="6">Légionnaire</option><option value="5">Prétorien</option><option value="7">Imperian</option><option value="16">Equites Legati</option><option value="14">Equites Imperatoris</option><option value="10">Equites Caesaris</option><option value="4">Bélier</option><option value="3">Catapulte à feu</option><option value="4">Sénateur</option><option value="5">Colon</option><option value="7">Combattant au gourdin</option><option value="7">Combattant à la lance</option><option value="6">Combattant à la hache</option><option value="9">Eclaireur</option><option value="10">Paladin</option><option value="9">Cavalier Teuton</option><option value="4">Bélier</option><option value="3">Catapulte</option><option value="4">Chef de tribu</option><option value="5">Colon</option><option value="7">Phalange</option><option value="6">Combattant à l\'épée</option><option value="17">Avant-garde</option><option value="19">Eclair de Toutatis</option><option value="16">Cavalier druide</option><option value="13">Hédouin</option><option value="4">Bélier</option><option value="3">Trebuchet</option><option value="5">Chef</option><option value="5">Colon</option><option value="24">Marchand gaulois</option><option value="16">Marchand romain</option><option value="12">Marchand germain</option></SELECT><br/><b>Temps pour aller ý ' + coordo[1] + ':</b><input type="text" size="30" style="border:#FFFFFF solid;border-width: 1px;font-size:8pt;" name="Temps" value="'+ j + 'jours, ' + h + 'h:' + m + 'm:' + s+'s"></div></form>');
}else{
var vitesse=5;
var distance=
Math.sqrt(Math.pow(x1-x2,2)+
Math.pow(y1-y2,2));
var temps = distance/vitesse*3600;
var j = Math.floor(temps/(24*3600));
var h = Math.floor(temps/3600)%24;
var m = Math.floor(temps/60)%60;
var s = Math.floor(temps-3600*h-60*m-24*3600*j);
test.innerHTML = test.innerHTML.replace(/<\/h1>/,'</h1><div style="position:absolute; width:400px; height:110px; border: 0px solid #000000; left:155px; top:165px"><b>Temps pour coloniser ce village :</b> '+ j + 'jours, ' + h + 'h:' + m + 'm:' + s+'s</div>');
}
}
}
function profilVillages(){
if (window.location.pathname == '/dorf2\.php'){
var nomvil = find("//td[@class='s3']",XPFirst);
nomvil = nomvil.getElementsByTagName("div")[0];
nomvil.innerHTML='<a href="./spieler.php?s=1">'+nomvil.innerHTML+'</a>';
} else
if (window.location.pathname == '/dorf1\.php'){
var nomvil = find("//td[@class='s3']",XPFirst);
nomvil=nomvil.getElementsByTagName("h1")[0];
nomvil.innerHTML='<a href="./spieler.php?s=1">'+nomvil.innerHTML+'</a>';
}
}
// travissimo functions, based on the travissimo script
function travissimo_igmlinks() { // add message and attack links
var links = document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++){
var igmlink = null;
if (links[i].href.search(/spieler.php\?uid=(\d+)/)>0) {
igmlink = elem('a','<img src="'+travissimoimg+
'igm.png" style="margin:3px 0px 1px 3px; display: inline" height="10" width="10"'+
'title="Envoyer un message" alt="Envoyer un message" border="0" />');
igmlink.href = 'nachrichten.php?t=1&id='+RegExp.$1;
}
if (links[i].href.search(/karte.php\?d=(\d+$)/)>0){
igmlink = elem('a','<img src="'+travissimoimg+
'att_all.gif" style="margin:3px 0px 1px 3px; display: inline" height="10" width="10"'+
'title="Envoyer des troupes" alt="Envoyer des troupes" border="0" />');
igmlink.href = 'a2b.php?z='+RegExp.$1;
}
if (igmlink) {
if (links[i].hasAttribute('bm')) { // bookmark links
igmlink.style.position = 'absolute';
igmlink.style.backgroundImage = 'none !important';
igmlink.style.cursor = 'crosshair';
igmlink.style.padding = "0px";
var c = links[i].childNodes[1];
igmlink.style.left = links[i].childNodes[1].offsetWidth + 12;
igmlink.style.top = -1;
links[i].parentNodeappendChild
}
links[i].parentNode.insertBefore(igmlink, links[i].nextSibling);
}
}
var coordx=[]
var coordy=[]
var coord=[];
var xlist = find("//table[@class='f8']",XPList);
for (var j = 0; j < xlist.snapshotLength; ++j) {
coordx[j] = parseInt(xlist.snapshotItem(j).getElementsByTagName("td")[0].innerHTML.slice(1));
coordy[j] = parseInt(xlist.snapshotItem(j).getElementsByTagName("td")[2].innerHTML);
coord[j] = 512*(-coordy[j] + 256) + 256 + coordx[j] + 1;
xlist.snapshotItem(j).getElementsByTagName("td")[2].innerHTML=xlist.snapshotItem(j).getElementsByTagName("td")[2].innerHTML+
'<a href="./build.php?ze='+coord[j]+'&gid=17"><img src="'+travissimoimg+
'commerce.png" style="margin:0px 0px 0px 0px; display: inline" height="10" width="10" border="0" alt="Envoyer un commerçant" /></a>'+
'<a href="./a2b.php?z='+coord[j]+'"><img src="'+travissimoimg+
'att_all.gif" style="margin:0px 0px 0px 0px; display: inline" height="10" width="10" title="Envoyer des troupes" alt="Att" border="0"/></a>';
xlist.snapshotItem(j).getElementsByTagName("td")[2].width=55;
}
}
function travissimo_navigationbar(){
var n = find("//div[@class='div2']",XPFirst); // works better than divs[4]
n.style.textAlign = 'left';
n.style.paddingLeft = 70;
n.style.width = 800;
var p = find("//div[@class='plus']",XPFirst);
if (disablePlusBtn)
p.style.display = 'none';
else
p.style.left = 850;
var rs = find("//table[@class='tbg']",XPList);
for (var j = 0; j < rs.snapshotLength; ++j) {
var r = rs.snapshotItem(j);
if (r.style.width=='140px' && disablePluspub)
r.style.visibility = 'hidden';
}
var se = find("//div[@class='div3']",XPFirst);
se.innerHTML=se.innerHTML.replace('dans','en');
/* Markettplace */
var marktmap = elem('map','<area shape=rect coords="0, 0, 70, 50" href="build.php?gid=17" title="Marché : Envoyer">' +
'<area shape=rect coords="0, 50, 35, 100" href="build.php?gid=17&t=1" title="Marché : Acheter">' +
'<area shape=rect coords="35, 50, 70, 100" href="build.php?gid=17&t=2" title="Marché : Vendre">' );
marktmap.name = 'markt';
var marktimg = document.createElement('img');
marktimg.src = travissimoimg+'markt.png';
marktimg.width = 70;
marktimg.height = 100;
marktimg.border = 0;
marktimg.setAttribute('usemap', '#markt');
marktimg.style.marginLeft = 50;
n.appendChild(marktmap);
n.appendChild(marktimg);
/* Military */
var milimap = elem('map','<area shape=rect coords="0, 0, 35, 50" href="build.php?gid=16" title="Place de rassemblement">' +
'<area shape=rect coords="35, 0, 70, 50" href="build.php?gid=19" title="Caserne">' +
'<area shape=rect coords="0, 50, 35, 100" href="build.php?gid=20" title="Ecurie">' +
'<area shape=rect coords="35, 50, 70, 100" href="build.php?gid=21" title="Atelier">');
milimap.setAttribute('name', 'mili');
var miliimg = document.createElement('img');
miliimg.src = travissimoimg+'mili.png';
miliimg.width = 70;
miliimg.height = 100;
miliimg.border=0;
miliimg.setAttribute('usemap', '#mili');
n.appendChild(milimap);
n.appendChild(miliimg);
/* Alliance */
var allimap = elem('map','<area shape=rect coords="0, 0, 35, 100" href="allianz.php?s=3" title="Attaques d\'alliances">' +
'<area shape=rect coords="35, 0, 70, 100" href="'+forumURL+'" title="Forum">' );
allimap.setAttribute('name', 'alli');
var alliimg = document.createElement('img');
alliimg.src = travissimoimg+'alli.png';
alliimg.width = 70;
alliimg.height = 100;
alliimg.border=0;
alliimg.setAttribute('usemap', '#alli');
n.appendChild(allimap);
n.appendChild(alliimg);
}
function travissimo_marktalli() {
if (window.location.href.match(/build\.php.*t=1/)) {
var m = find("//tr[@class='rbg']",XPFirst);
if (m) {
m = m.parentNode;
var z = m.getElementsByTagName("tr");
z[0].childNodes[1].setAttribute('colspan', '8');
z[1].appendChild(elem('td','Alliance'));
z[z.length-1].childNodes[0].setAttribute('colspan', '8');
for (var i = 2; i < z.length - 1; i++){
var offre = parseInt(z[i].getElementsByTagName("td")[1].innerHTML);
var demande=parseInt(z[i].getElementsByTagName("td")[3].innerHTML);
if (offre < demande){
z[i].setAttribute('class', 'c');
}
var atd = document.createElement("td");
atd.appendChild(document.createTextNode(z[i].childNodes[8].attributes[0].nodeValue));
z[i].appendChild(atd);
}
}
}
}
function travissimo_kpberechnung() { // first line is language-specific
if (window.location.pathname == '/build.php'
&& window.location.search.indexOf('s=2')>=0
&& (document.getElementsByTagName("h1")[0].innerHTML.indexOf("Pal")>=0
|| document.getElementsByTagName("h1")[0].innerHTML.indexOf("sidence")>=0)) {
var b = document.getElementsByTagName('b');
var prod = parseInt(b[2].innerHTML);
var stand = parseInt(b[3].innerHTML);
var not = parseInt(b[4].innerHTML);
var nd = travissimo_kp2dorf(not);
var text;
if (not < stand){
var md = travissimo_kp2dorf(stand);
if (md == nd)
text = 'Vous avez assez de points pour conquérir votre <b>' + nrfmt(nd) +'</b> village.';
else
text = 'Vous avez assez de points pour conquérir encore '+nrfmt(md-nd+1)+' villages.';
} else {
var sec = (not-stand)/prod*86400;
text = 'Vous avez besoin d\'encore <b>'+(not-stand)+'</b> points, ';
text = text+'assez de points dans <b>'+travissimo_sectodur(sec)+'</b>, ('+travissimo_sectodate(sec) + ')';
}
var nxneeded = travissimo_dorf2kp(nd+1);
var text2 = 'Vous pourrez fonder ou conquérir un nouveau village dans <b>'+
(Math.ceil((nxneeded-stand)/prod))+'</b> jour(s).<br>(<b>' + nxneeded + '</b> points requis)';
b[4].parentNode.innerHTML = b[4].parentNode.innerHTML + '<p>'+text+'</p><p>'+text2+'</p>';
}
}
function travissimo_sectodur(sec) { // seconds to days/hrs
return (d=Math.floor(sec/86400))+' jours et '+Math.floor((sec-86400*d)/3600)+' heures';
}
function travissimo_sectodate(sec) { // returns formatted date : now + sec
var d = new Date((new Date()).getTime()+sec*1000);
return 'le ' + d.getDate()+'.'+(d.getMonth() + 1)+' à '+d.getHours()+':'+d.getMinutes();
}
function travissimo_kp2dorf(kp){
return Math.floor(Math.sqrt(kp/2000)+1);
}
function travissimo_dorf2kp(anz){
return Math.pow(anz-1,2)*2000;
}
function nrfmt(n) { // 3 -> 3rd , 21 -> 21st etc.
if (n==1)
return n + "er";
if (n==2)
return n + "nd";
return n + "ème";
}
function travissimo_marktsenden(){
if (window.location.pathname == '/build.php'
&& window.location.search.indexOf('t') == -1
&& document.getElementsByName('r1').length >= 1
&& ((mc=find("//td[@colspan='2']",XPFirst).textContent).indexOf("Commer")>=0)) {
var f = document.getElementsByTagName('input');
var ex = f[5].parentNode.parentNode.parentNode;
ex.innerHTML = ex.innerHTML +
'<tr><td colspan="2">Commerçants</td><td id="travissimo_markttdh"></td></tr>'+
'<tr><td colspan="2">Capacité inutilisée<br>Total libre</td><td id="travissimo_markttdk"></td></tr>';
for (var i = 0; i < 4; i++){
f[i+2].addEventListener("change", travissimo_marktshowhandler, false);
f[i+2].addEventListener("keyup", travissimo_marktshowhandler, false);
f[i+2].addEventListener("move", travissimo_marktshowhandler, false);
}
var a = document.getElementsByTagName('table')[3].getElementsByTagName("a");
for (var i = 0; i < a.length; i++)
a[i].addEventListener("mouseup", travissimo_marktshowhandler, false);
for (var i = 0; i < 8; i++)
f[i + 2].tabIndex = (i + 1);
f[2].focus();
travissimo_marktshowhandler();
}
}
function travissimo_marktshowhandler(){
var h = get('travissimo_markttdh'),k = get('travissimo_markttdk');
var t = parseInt(document.getElementsByTagName('b')[4].innerHTML);
var f = document.getElementsByTagName('input');
var l = 0;
var m = mc.match(/\d+/)[0];
for (var i = 0; i < 4; i++)
l = l + parseInt(f[i+2].value);
if (Math.ceil(l/t) > parseInt(m))
h.innerHTML = '<span style="color:red; font-weight:bold">'+Math.ceil(l/t)+'</span>';
else
h.innerHTML = Math.ceil(l/t);
if (m * t - l < 0)
k.innerHTML = "<span style=\"color:red; font-weight:bold\">-<br>" + m * t - l + "</span>";
else
k.innerHTML = "" + (Math.ceil(l/t)*t-l) + "<br>" + (m*t-l);
}
function BBCode(){
if (window.location.pathname == '/allianz.php' || window.location.pathname == '/spieler.php') {
var descr = find("//td[@class='slr3']",XPList);
for (var j = 0; j < descr.snapshotLength; ++j) {
var desc = descr.snapshotItem(j);
//Balise [img][/img]
while(desc.innerHTML.match(/\[img\](http\:\/\/[\.\w\x2D\/\?=]+(\.jpg|\.gif|\.png))\[\/img\]/))
desc.innerHTML = desc.innerHTML.replace(/\[img\](http\:\/\/[\.\w\x2D\/\?=]+(\.jpg|\.gif|\.png))\[\/img\]/,'<img src="$1" alt="$1" name="$1"/>');
//Balise [url][/url]
while(desc.innerHTML.match(/\[url\](http\:\/\/([[%\.\w\x2D\/\?=]+))\[\/url\]/))
desc.innerHTML = desc.innerHTML.replace(/\[url\](http\:\/\/([[%\.\w\x2D\/\?=]+))\[\/url\]/,'<a href="$1" target="_blank">$1</a>');
//Balise [url=*****]***[/url]
while(desc.innerHTML.match(/\[url=(http\:\/\/[[%\.\w\x2D\/\?=]+)\]([\w]+)\[\/url\]/))
desc.innerHTML = desc.innerHTML.replace(/\[url=(http\:\/\/[[%\.\w\x2D\/\?=]+)\]([\w]+)\[\/url\]/,'<a href="$1" target="_blank">$2</a>');
}
}
}
function settings() {
if (window.location.pathname == '/spieler.php'){
var p = document.getElementsByTagName("p")[0];
if (p.innerHTML.indexOf("Vue") == -1)
var p = document.getElementsByTagName("p")[1];
if (p.innerHTML.indexOf("Vue")>=0){
p.innerHTML = p.innerHTML.replace('Paquet graphique','Skin');
var strich = document.createTextNode(' | ');
var linktext = document.createTextNode('Travissimo');
var link = document.createElement('a');
link.setAttribute('href', 'spieler.php?s=5');
link.appendChild(linktext);
p.appendChild(strich);
p.appendChild(link);
if (window.location.search.indexOf('s=5')>=0){
if (window.location.search.indexOf('travissimo_save')>=0){
savesettings();
loadsettings();
}
showsettings(p);
}
}
}
}
function showsettings(p) {
var text = new Array(
'Liens de messages et d\'attaque',
'Calcul des points de culture',
'Notes',
'Haute resolution ( > 1024*768 ), ne pas cocher dans le doute',
'Case pour cocher tous les messages',
'Temps des ressources',
'Lien vers le profil ( nom du village )',
'Modification des rapports',
'Calcul de distances sur la carte');
var table = '<form action="spieler.php">'+
'<input type="hidden" name="s" value="5">'+
'<table cellspacing="1" cellpadding="2" class="tbg">'+
'<tr>'+
'<td class="rbg" colspan="2">Travissimo</td>'+
'</tr>';
for (var i=0; i < travissimo_vars.length; i++){
table = table + '<tr class="s7"><td><input class="fm f110" type="checkbox" name="'+travissimo_vars[i]+'" ';
if (travissimo_set[i]==1){
table = table+'checked';
}
table += '></td><td>'+text[i]+'</td></tr>';
}
table += '</table>'+
'<p><input type="text" name="travissimoimg" size="50" class="fm" value="'+travissimoimg+'"> Lien pour le skin</p>'+
'<p><input type="text" name="forumURL" size="50" class="fm" value="'+forumURL+'"> Lien de forum</p>'+
'<p>Attaque par defaut : <input type="radio" name="defaultAttType" value="2" ';
if (defaultAttType==2)
table+='checked="checked" ';
table+='/>assistance | <input type="radio" name="defaultAttType" value="3"';
if (defaultAttType==3)
table+='checked="checked" ';
table+='/>attaque normale | <input type="radio" name="defaultAttType" value="4"';
if (defaultAttType==4)
table+='checked="checked" ';
table += ' />pillage</p>'
+ '<p align="center"><input type="image" value="" border="0" name="travissimo_save" src="img/fr/b/s1.gif" width="80" height="20"></input></p>';
p.innerHTML = p.innerHTML + table;
}
function savesettings(){
var s = window.location.search;
for (var i = 0; i < travissimo_vars.length; i++){
if (s.indexOf(travissimo_vars[i])>=0){
GM_setValue(travissimo_vars[i], 1);
} else {
GM_setValue(travissimo_vars[i], 0);
}
}
if (s.match(/travissimoimg=([%\.\w]+)/)){
var img = decodeURIComponent(RegExp.$1);
GM_setValue('travissimoimg', img);
}
if (s.match(/forumURL=([%\.\w\x2D]+)/)){
var forum = decodeURIComponent(RegExp.$1);
GM_setValue('forumurl'+server, forum);
}
if (s.match(/defaultAttType=([%\.\w\x2D]+)/)){
var default_attaque= decodeURIComponent(RegExp.$1);
GM_setValue('defaultAttType', default_attaque);
}
}
function loadsettings(){
travissimo_set = new Array();
for (var i=0; i<travissimo_vars.length; i++){
travissimo_set[i] = GM_getValue(travissimo_vars[i], 1);
}
travissimoimg = GM_getValue('travissimoimg', 'http://ulzbug2.free.fr/img/');
forumURL = GM_getValue('forumurl'+server, 'http://'+server+'.travian.fr/allianz.php?s=2');
defaultAttType =GM_getValue('defaultAttType', 3);
}
function travissimo_main() {
loadsettings();
settings();
if (travissimo_set[0]==1){
travissimo_igmlinks();
}
travissimo_navigationbar();
if (travissimo_set[1]==1){
travissimo_kpberechnung();
}
if (travissimo_set[2])
afficheNotes();
if (travissimo_set[4])
cocher_messages();
if (travissimo_set[5])
ressources();
if (travissimo_set[6])
profilVillages();
if (travissimo_set[7])
modifieRapport()
if (travissimo_set[8]){
tool_distance();
Distance_CapTus();
}
travissimo_marktalli();
travissimo_marktsenden();
BBCode();
autre();
}
travissimo_main();