Travian Statistic Links

By Toxon Last update Aug 11, 2008 — Installed 5,097 times. Daily Installs: 1, 4, 0, 1, 2, 4, 0, 6, 0, 1, 3, 2, 1, 0, 1, 1, 0, 6, 0, 0, 2, 1, 3, 2, 1, 4, 2, 4, 1, 3, 3, 2

There are 9 previous versions of this script.

// ==UserScript==
// @name          Travian Statistic Links
// @version       1.4
// @namespace     http://travian.de
// @description   Inserts links to travian.ws, travian.ping-timeout.de and travmap.shishnet.org
// @author        Toxon 
/////////////////////////////////////////////////////////////////////////////
// @include http://*.travian*.*
// @include http://*.travian*.*/*
// @exclude *.css
// @exclude *.js
// @exclude http://*.travian.*/plus*
// @exclude http://travian.*/plus*
/////////////////////////////////////////////////////////////////////////////
// ==/UserScript==


///////////////////////////////////////////////////////////////////////////////
// Functions // Common
///////////////////////////////////////////////////////////////////////////////

function contains(a, b) {
// liefert true, wenn b in a enthalten ist
// a und b koennen vom typ string sein, dann wird true geliefert, wenn b ein Teilstring von a ist
// falls a ein Array ist, wird true geliefert, wenn b ein Element von a ist
  switch (typeof(a)) {
    case 'string':  return (a.indexOf(b) != - 1);  break;
    case 'object':  for (var i in a) { if (a[i] == b) { return true; }  }  return false; break;     
    default:        return false; break;
  }
}

function splitL (s,ss) { return s.substr(0,s.indexOf(ss)) }
// liefert alles aus s, was links von ss liegt

function splitR (s,ss) { return s.substr(s.indexOf(ss)+ss.length) }
// liefert alles aus s, was rechts von ss liegt


///////////////////////////////////////////////////////////////////////////////
// Functions // Elements
///////////////////////////////////////////////////////////////////////////////

function insertElAfter(node, referenceNode) {
// node nach referenceNode einfuegen
  referenceNode.parentNode.insertBefore(node, referenceNode.nextSibling);
}

///////////////////////////////////////////////////////////////////////////////
// Functions // URL
///////////////////////////////////////////////////////////////////////////////

function URLextension() {
// liefert von www.adresse.XXX -> XXX  bsp. www.google.de -> de
  var s = window.location.hostname.split('.');
  return s[s.length-1];
}

///////////////////////////////////////////////////////////////////////////////
// Functions // Travian
///////////////////////////////////////////////////////////////////////////////

function server () {
// liefert die travian server bezeichnung
  var dl = '?chatname=';
  var allAs = document.getElementsByTagName('a'); 
  for (var i = 0; (i < allAs.length); i ++ ) {
    var s = allAs[i].href;
    if (allAs[i].parentNode.className == 'menu') {
      if (contains (s,dl)) {
        return decodeURIComponent(splitL(splitR(s,dl),'|')); 
      } 
    }  
  }
}

function player () {
// liefert den spielernamen
  var p = '';
  var dl = '?chatname';
  var allAs = document.getElementsByTagName('a') 
  for (var i = 0; ((i < allAs.length) && (p == '')); i ++ ) {
    var s = allAs[i].href;
    if (contains (s,dl)) {
      p = decodeURIComponent(splitR(splitR(s,dl),'|')); 
      return p;
    } 
  }
}

///////////////////////////////////////////////////////////////////////////////
// Functions // travian.ping-timeout.de
///////////////////////////////////////////////////////////////////////////////

function ermittleWelt() {
  var tmpwelt = URLextension();
  var rest = splitL(window.location.hostname,'.travian');                             // XXX.travian
  if (tmpwelt == 'de') {
    if (contains(window.location.hostname,'speed')) { tmpwelt = 'speed'; }            // speed.travian.de
    else {tmpwelt = rest; }                                                           // weltX.travian.*
  } else {
    if (contains(window.location.hostname,'speed')) { tmpwelt = tmpwelt + 'speed'; }  // speed.travian.*
    else if (!contains(window.location.hostname,'www.travian.'))                      // www.travian.at www.travian.org
      { tmpwelt = tmpwelt + splitR(rest,'s'); }                                       // sX.travian.*
  }    
  return tmpwelt;
}

///////////////////////////////////////////////////////////////////////////////
// Images
///////////////////////////////////////////////////////////////////////////////

// travian.ping-timeout.de
img_stat = 'data:image/gif;base64,R0lGODlhDAAIAPcAAKH3f6vcmK/Znqzcmazcmq7cnLPZn7DcnrPNqrXVq7HbobjW'+
           'pb/Uq6L2gKL2gaX1g6X9gKT8ga/yja32j6j7gq75h6j4ib7unLr1k7nymLXrosDIuMTSs8XSv8rpqsLpssrxqc'+
           '/xrNTouNvwvsjMx83UxtHWz9TY09ba1Nba1tPny9bpxdzpydzo2OLyy+vy2Ony3ev03ent5urv6ezw7O/x7/D0'+
           '5fDy7/L27PP37fT37vHz8fH08fX38/b48/f59fb49vj69/j6+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAADAAIAAAIYABJpBhIsCCJEzd4KOSxY0cNGjNMpAAipGLFHjJa'+
           'qOgwsWIQHzlgrPigIcFEID90vBgBIsMECwpQ4LARw0UIDBUoQIhwoAQLER4uSHjQAAAABwI2cGCwwECBAQGiEk'+
           'AQEAA7';
           
// travian.ws
img_twa  = 'data:image/gif;base64,R0lGODlhDAAIAPcAAGZacHRpf3VqgX1xh4N4jYR6jYV5kYt/loqAk42El4+Cm5KG'+
           'nZOLm5iRn5SJoZaMoqCZqKOarKWYsKaZs6edsaqftamlraqlr6ynsbGmurCkvbCqtrKvt7Opu7OovLWqvrevv7'+
           'q2vrq2v7qvw7y4wb+5xcC5x8K/x8fEysnHzMnC0NHO1NLQ1NfU2tnW293a4OPe5uXf6/Py8/T09Pf2+Pv7+///'+
           '/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAADAAIAAAIUQBt2KDRggQDCCde1BAocMUGGB1UmEjggqENEiA+'+
           'ZPBQIQIGiyViUBgh4QAHFhYFKHCgYUEBiwIBBDAwYcAFmDZmhHiAgEADnDZkiEiBwoLFgAA7';
           
// travmap.shishnet.org           
img_map  = 'data:image/gif;base64,R0lGODlhDAAIAPcAACZ/AAAm//8AAMjMx9ba1v///wAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
           'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAADAAIAAAIMAAHEBhIsKBAAQIIFFDIcCEBhAUjDlxIkQAAAA4l'+
           'WgRQsECAAA0ZEvyoUaDGgQMCAgA7';

///////////////////////////////////////////////////////////////////////////////
// Main
///////////////////////////////////////////////////////////////////////////////

var image, newA, allA, a, welt, thisUID, thisAID;

welt = ermittleWelt();                           // Bezeichnung der Welt fuer travian.ping-timeout.de
a = 0;

allA = document.getElementsByTagName('a');       // alle Links,
while (a < allA.length) { 
  thisA = allA[a];
  if (( contains(thisA.href,'uid=')) &&          // in denen uid= vorkommt, aber...
      (!contains(thisA.href,'#'))&&              // nicht der Link mit uid=xxxx# - z.b. Anleitung
      (!contains(thisA.href,'newdid=')) &&       // nicht die Links auf Doerfer
      (thisA.parentNode.className != 'menu')){   // nicht der Menu-eintrag
    thisUID = splitR(thisA.href, 'uid=');
    if (splitL(window.location.pathname.substr(1), '.')=='spieler') { thisPlayer = player(); } else {thisPlayer = thisA.innerHTML;}
      

    newA = document.createElement('a'); 
    newA.href= 'http://travian.ping-timeout.de/index.php?m=spielersuche&uid='+thisUID+'&welt='+ welt;
    newA.target = '_blank';
    newA.innerHTML = ' ';
    insertElAfter(newA,thisA);
    image = document.createElement('img'); 
    image.src = img_stat; 
    newA.appendChild(image);
    a += 1;

    newA = document.createElement('a'); 
    newA.href= 'http://travian.ws/analyser.pl?s='+server()+'&uid='+thisUID;
    newA.target = '_blank';
    newA.innerHTML = ' ';
    insertElAfter(newA,thisA);
    image = document.createElement('img'); 
    image.src = img_twa; 
    newA.appendChild(image);
    a += 1;
    
    newA = document.createElement('a'); 
    newA.href= 'http://travmap.shishnet.org/map.php?server='+window.location.hostname+'&player='+thisPlayer+'&format=png&casen=on&azoom=on&caption='+thisPlayer;
    newA.target = '_blank';
    newA.innerHTML = ' ';
    insertElAfter(newA,thisA);
    image = document.createElement('img'); 
    image.src = img_map; 
    newA.appendChild(image);
    a += 1;
    
  }

  if ( contains(thisA.href,'aid=')) {            // in denen aid= vorkommt
    thisAID = splitR(thisA.href, 'aid=');
    thisAlliance = thisA.innerHTML;
    
    newA = document.createElement('a'); 
    newA.href= 'http://travian.ping-timeout.de/index.php?m=allianzsuche&aid='+thisAID+'&welt='+ welt;
    newA.target = '_blank';
    newA.innerHTML = ' ';
    insertElAfter(newA,thisA);
    image = document.createElement('img'); 
    image.src = img_stat; 
    newA.appendChild(image);
    a += 1;

    newA = document.createElement('a'); 
    newA.href= 'http://travian.ws/analyser.pl?s='+server()+'&aid='+thisAID;
    newA.target = '_blank';
    newA.innerHTML = ' ';
    insertElAfter(newA,thisA);
    image = document.createElement('img'); 
    image.src = img_twa; 
    newA.appendChild(image);
    a += 1;

    newA = document.createElement('a'); 
    newA.href= 'http://travmap.shishnet.org/map.php?server='+window.location.hostname+'&alliance='+thisAlliance+'&casen=on&azoom=on&format=png&caption='+thisAlliance;
    newA.target = '_blank';
    newA.innerHTML = ' ';
    insertElAfter(newA,thisA);
    image = document.createElement('img'); 
    image.src = img_map; 
    newA.appendChild(image);
    a += 1;
  }

  a +=1;
}