Greasemonkey Manual
// ==UserScript==
// @name Travian Village Building Level Tracker 0.7
// @namespace Travian
// @description Displays all your buildinglevels and compares to wanted levels. Shows witch buildings need to be upgraded, and witch not.
// @include http://*travian*/dorf2*
// @include http://*travian*/build.php?newdid*
// ==/UserScript==
// โ€บโ€บ Event listener starts things off once the page is done loading.
window.addEventListener("load",init,false);
// โ€บโ€บ Set styles. function init(){ var cssString2 = '.TMbuildingtags2{' + 'background-color:#99FF99;' + 'border:thin solid #000000;' + 'font-family: Verdana, Arial, Helvetica, sans-serif;' + 'font-size:8pt;' + 'font-weight:bold;' + 'text-align:center;' + 'position:absolute;' + 'width:230px;' + 'height:14px;' + 'cursor:pointer;' + 'visibility:hidden;' + 'z-index:50;}'; var cssString3 = '.TMbuildingtags3{' + 'background-color:#FF9999;' + // RED 'border:thin solid #000000;' + 'font-family: Verdana, Arial, Helvetica, sans-serif;' + 'font-size:8pt;' + 'font-weight:bold;' + 'text-align:center;' + 'position:absolute;' + 'width:230px;' + 'height:14px;' + 'cursor:pointer;' + 'visibility:hidden;' + 'z-index:50;}'; addCSS(cssString2); addCSS(cssString3); TM_ShowMainBuildingNumbers(); }
// โ€บโ€บ Main. function TM_ShowMainBuildingNumbers(){ // โ€บโ€บ x and y offset in pixels added to every absolutely positioned style element var x = 700; var y = 350;
// โ€บโ€บ could get this from the styles, but hard coding them is faster and allows for a simpler loop buildArr1 = new Array(21); buildArr1[0] = x; buildArr1[1] = x; buildArr1[2] = x; buildArr1[3] = x; buildArr1[4] = x; buildArr1[5] = x; buildArr1[6] = x; buildArr1[7] = x; buildArr1[8] = x; buildArr1[9] = x; buildArr1[10] = x; buildArr1[11] = x; buildArr1[12] = x; buildArr1[13] = x; buildArr1[14] = x; buildArr1[15] = x; buildArr1[16] = x; buildArr1[17] = x; buildArr1[18] = x; buildArr1[19] = x; buildArr1[20] = x; buildArr1[21] = x;
buildArr2 = new Array(21); buildArr2[0] = y; buildArr2[1] = 20 + y; buildArr2[2] = 40 + y; buildArr2[3] = 60 + y; buildArr2[4] = 80 + y; buildArr2[5] = 100 + y; buildArr2[6] = 120 + y; buildArr2[7] = 140 + y; buildArr2[8] = 160 + y; buildArr2[9] = 180 + y; buildArr2[10] = 200 + y; buildArr2[11] = 220 + y; buildArr2[12] = 240 + y; buildArr2[13] = 260 + y; buildArr2[14] = 280 + y; buildArr2[15] = 300 + y; buildArr2[16] = 320 + y; buildArr2[17] = 340 + y; buildArr2[18] = 360 + y; buildArr2[19] = 380 + y; buildArr2[20] = 400 + y; buildArr2[21] = 420 + y;
// โ€บโ€บ Map1 holds building names, level and building spot IDs in area elements (2 are duplicate walls to be ignored). var map1Element = document.getElementsByName('map1')[0]; if (map1Element){
// โ€บโ€บ Map1 ONLY has area children. var areaElements = map1Element.childNodes; var BuildingLevel, smallDIV; var BuildingName = new Array(21); var BuildingURL = new Array(21);
for (var i = 0; i < 22; i++) { BuildingLevel = /(\d+)/.exec(areaElements[i].getAttribute("title")); BuildingName = /[A-z0-9รครรถร–รฅร… -]+/.exec(areaElements[i].getAttribute("title")); var Name = BuildingName[0]; var spot = Name.indexOf(" taso"); //REPlase this with level Name = Name.slice(0,spot); BuildingURL = areaElements[i].getAttribute("href");
// โ€บโ€บ Only show spots with buildings on them. if (BuildingLevel){
// ********************************************************************************************************* // **** EDIT THIS IF YOU NEED ANOTHER LANQUAGE **** // **** IN DIFFRENT LANQUAGES, CHANGE BUILDING NAMES AS THEY SHOULD BE **** // **** tHIS WORKS IN FINNISH AND IN THE COMMMENTS YOU CAN FIND BUILDING NAMES IN ENGLISH **** // *********************************************************************************************************
Buildings = new Array(35); Buildings[0] = "Marketplace"; // Marketplace Buildings[1] = "Barracks"; // Barracks Buildings[2] = "Rally Point"; //Rally Point Buildings[3] = "Bakery"; //Bakery Buildings[4] = "Brickyard"; //Brickyard Buildings[5] = "Grain Mill"; //Grain Mill Buildings[6] = "Granary"; //Granary Buildings[28] = "Great Granary"; //Great Granary Buildings[7] = "Great Warehouse"; //Great Warehouse Buildings[8] = "Iron Foundry"; //Iron Foundry Buildings[9] = "Sawmill"; //Sawmill Buildings[10] = "Warehouse"; //Warehouse Buildings[11] = "Academy"; //Academy Buildings[12] = "Blacksmith"; //Blacksmith Buildings[13] = "Armoury"; //Armoury Buildings[14] = "City Wall"; //City Wall Buildings[29] = "Great Barracks"; //Great Barracks Buildings[30] = "Great Stable"; // Great Stable Buildings[15] = "Hero's Mansion"; //Hero's Mansion Buildings[16] = "Stable"; //Stable Buildings[17] = "Tournament Square"; //Tournament Square Buildings[18] = "Trapper"; //Trapper Buildings[19] = "Workshop"; //Workshop Buildings[20] = "Cranny"; //Cranny Buildings[21] = "Embassy"; //Embassy Buildings[22] = "Main Building"; //Main Building Buildings[23] = "Palace"; //Palace Buildings[24] = "Residence"; //Residence Buildings[25] = "Stonemason"; //Stonemason Buildings[26] = "Townhall"; //Townhall Buildings[27] = "Trade Office"; //Trade Office Buildings[31] = "Treasury"; //Treasury Buildings[32] = "Wonder Of The World"; //Wonder Of The World Buildings[33] = "Earth Wall"; //Earth Wall Buildings[34] = "Palisade"; //Palisade
// ********************************************************************************************************* // **** EDIT THIS **** // **** EDIT VALUES FROM HERE, DESIDE HOW FAR YOU WANT TO UPDRADE EACH BUILDING **** // **** EXAMPLE: "WantedLevels[1] = 15; // Barracks" MEANS THAT YOU WANT BARRACKS TO BE AT LEVEL 15 **** // *********************************************************************************************************
WantedLevels = new Array(35); WantedLevels[0] = 20; // Marketplace WantedLevels[1] = 15; // Barracks WantedLevels[2] = 1; //Rally point WantedLevels[3] = 5; //Bakery WantedLevels[4] = 5; //Brickyard WantedLevels[5] = 5; //Grain Mill WantedLevels[6] = 13; //Granary WantedLevels[7] = 1; //Great Warehouse WantedLevels[8] = 5; //Iron Foundry WantedLevels[9] = 5; //Sawmill WantedLevels[10] = 15; //Warehouse WantedLevels[11] = 10; //Academy WantedLevels[12] = 5; //Blacksmith WantedLevels[13] = 5; //Armoury WantedLevels[14] = 20; //City Wall WantedLevels[15] = 10; //Hero's Mansion WantedLevels[16] = 10; //Stable WantedLevels[17] = 1; //Tournament Square WantedLevels[18] = 1; //Trapper WantedLevels[19] = 1; //Workshop WantedLevels[20] = 1; //Cranny WantedLevels[21] = 1; //Embassy WantedLevels[22] = 19; //Workshop WantedLevels[23] = 20; //Palace WantedLevels[24] = 10; //Residence WantedLevels[25] = 10; //Stonemason WantedLevels[26] = 5; //Townhall WantedLevels[27] = 10; //Trade Office WantedLevels[28] = 1; //Great Granary WantedLevels[29] = 1; //Great Barracks WantedLevels[30] = 1; // Great Stable WantedLevels[31] = 1; //Treasury WantedLevels[32] = 1; //Wonder Of The World WantedLevels[33] = 20; //Earth Wall WantedLevels[34] = 20; //Palisade
// ********************************************************************************************************* // **** STOP EDITING **** // *********************************************************************************************************
for (var j = 0; j < 35; j++) { if (Buildings[j] == Name){ //document.write(Name); //document.write(Buildings[j]); //document.write(WantedLevels[j]); //document.write(BuildingLevel[0]); if (WantedLevels[j] <= BuildingLevel[0]){ //document.write("vihreรค"); smallDIV = addDiv('TMbuildingtag' + i,'TMbuildingtags2',Name + ' ' + BuildingLevel[0] + '/' + WantedLevels[j],false); }else{ //document.write("punainen"); smallDIV = addDiv('TMbuildingtag' + i,'TMbuildingtags3',Name + ' ' + BuildingLevel[0] + '/' + WantedLevels[j],false); } } }
//smallDIV = addDiv('TMbuildingtag' + i,'TMbuildingtags2',Name + ' ' + BuildingLevel[0],false); smallDIV.style.top = buildArr2[i] + 'px'; smallDIV.style.left = buildArr1[i] + 'px'; smallDIV.style.visibility = "visible"; smallDIV.setAttribute('goto', BuildingURL); smallDIV.addEventListener('click', function() { window.location.href = this.getAttribute('goto'); }, true); } } } }
// โ€บโ€บ Adds a generic div. function addDiv(id,style,html,parent){ var body, div; if (!parent){body = document.getElementsByTagName('body')[0];}else{body = document.getElementsByTagName(parent);} if (!body) { return false; } div = document.createElement('div'); div.id = id; div.className = style; if (html){div.innerHTML = html;} body.appendChild(div); return div; }
// โ€บโ€บ Add generic CSS. function addCSS(cssString2) { var style = document.createElement('STYLE'); style.type = 'text/css'; style.innerHTML = cssString2; document.getElementsByTagName('HEAD')[0].appendChild(style); }