NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name otomatik yagma
// @author sarayköylü ( cüneyt)
// @namespace FM
// @description sadece chrome icin
// @include http://*.travian.*/build.php?*gid=16*
// @include http://*.travian.*/build.php?*id=39*
// @include http://*.travian.*/a2b.php*
// @include http://*.travian.*/karte.php*
// @include http://*.travian.*/berichte.php*
// @include http://*.travian.*/login.php
// @include http://*.travian.*/
// @include http://*.travian.*/dorf1.php
// @exclude http://forum.travian.*
// @version 1.0.0
// ==/UserScript==
var SCRIPT = {
url : 'http://userscripts.org/scripts/source/.user.js',
version : '1.0.0' //same value as @version
};
//Adapt these variables to your personal need:
//Message Window config
var messageWindowTop = 450; //0 means top of the browser window
var messageWindowLeft = 700; //0 means left most point of the browser window
var zIndex = 100; //Make it as big as you want to put the message window over top of anything
//Waiting times
var minWait = 5000; //Don't make it smaller then 5000ms!
var maxWait = 1 * minWait;
//Skipping villages
var maxSkipCount = -1; //Max. Number for skipped farms before changing villages, make it -1 to try the whole list
//Map
//FarmImage by Black_Blood
var farmImage = "http://img706.imageshack.us/img706/5794/d22.gif";
//Default troops
var defTroops = "0,0,0,0,0,0,0,0,0,0,0";
//DynamicTroopCount variables
var minimumTroopCount = 2;
var minimumEfficiency = 50;
//Logging
var logLevel = 0; //You probably don't need to change this
/* Log Levels:
* 0: no special logging (logs general stuff)
* 1: log for testing level1
* 2: log for testing level2
* 3: logs calls of all functions
* 4: logs steps inside of functions
* 5: logs values inside of functions
*/
//Global variables (Don't changes these)
var dom = new DOMUtils();
var server = location.hostname;
var rootPath = "http://" + server + "/";
var suffixLocal, suffixGlobal;
var lang = new Array(); //Language definitions
var image = new Array(); //All images used
var farmList = new Array(); //Complete farm List
var fque = new Array(); //Farm queue
var prioque = new Array(); //Priority queue
var user_race = 1; //Default Romans
var globalInt = -1;
var totalTroops = new Array(); //For temporary value passing between functions
var runningDiv;
var random; //Random farming
var priorityAttack = false;
var vT35;
var XPFirst = XPathResult.FIRST_ORDERED_NODE_TYPE;
var XPList = XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
var XPListO = XPathResult.ORDERED_NODE_SNAPSHOT_TYPE;
var XPIter = XPathResult.UNORDERED_NODE_ITERATOR_TYPE;
//FM main functions
function main() {
FM_log(3,"main() called");
suffixGlobal = server + '_' + getPlayerId();
suffixLocal = suffixGlobal + '_' + getActiveVillageId();
FM_log(3,"suffixGlobal is: "+suffixGlobal);
FM_log(3,"suffixLocal is: "+suffixLocal);
//Define Travian 3.6 Version
getT35version();
FM_log(5,document.URL);
var html = document.body.innerHTML; // In case 'Unable to load site' is showed, try to Refresh the page.
if (html.indexOf(" <!-- ERROR ITEM CONTAINER") != -1) {
window.location.replace(rootPath + "a2b.php");
}
if (GM_getValue("Active_" + suffixGlobal, -1) > -1 && GM_getValue("ReadRep_" + suffixGlobal, -1)==1 )
{
newreport = document.getElementsByTagName('html')[0].innerHTML.indexOf('id=\"n5\" class=\"i1\"')+document.getElementsByTagName('html')[0].
innerHTML.indexOf('id=\"n5\" class=\"i3\"');
if ( newreport != -2)
{
if(document.URL.indexOf("berichte.php") == -1) {
window.open("/berichte.php", "_self");
}
checkreports();
return;
}
}
// Start countdown and forward to rallypoint if FM is active
// This is not working because FM script not runs on all the Travian pages
// Could be working if @includes get changed, but this probably leads to a slow browser
/*
if (GM_getValue("Active_" + suffixGlobal, -1) > -1)
{
//alert("waiting");
setTimeout(function(){window.open("/a2b.php","_self");}, 60000); //wait 1 minute then go back to rally point
}
*/
// Get variable for random farming
random = GM_getValue("RandomFarming_" + suffixGlobal, 0);
FM_log(3,"Setting language, images & style");
setLanguage();
loadImage();
loadStyle();
var url = document.URL;
url = url.substring(url.lastIndexOf("/") + 1);
user_race = GM_getValue('Tribe_' + suffixGlobal, -1);
if (user_race != -1) {
user_race = GM_getValue('Tribe_' + suffixGlobal, 0);
user_race = parseInt(user_race);
} else {
if (url.indexOf("a2b.php") != -1) {
user_race = 1 + 10 * getPlayerTribe();
GM_setValue('Tribe_' + suffixGlobal, user_race);
alert(T('SCRIPT_NAME') + " KURULDU"
+ T('INSTALL_M1') + "\n" + T('INSTALL_M2') + " \nBlack_Blood");
window.location.replace(rootPath + "build.php?id=39"); //ToDo: Reload
} else {
window.location.replace(rootPath + "a2b.php"); //ToDo: Reload
}
}
// Set default values if not defined yet
if (GM_getValue("Maximize_" + suffixGlobal, false) === false) {
GM_setValue("Maximize_" + suffixGlobal, 1);
}
if (GM_getValue("MaximizeSettings_" + suffixGlobal, false) === false) {
GM_setValue("MaximizeSettings_" + suffixGlobal, 0);
}
if (GM_getValue("StartIndex_" + suffixLocal, false) === false) {
GM_setValue("StartIndex_" + suffixLocal, 0);
}
if (GM_getValue("EndIndex_" + suffixLocal, false) === false) {
GM_setValue("EndIndex_" + suffixLocal, -1);
}
if (GM_getValue("Skipcounter_" + suffixGlobal, false) === false) {
GM_setValue("Skipcounter_" + suffixGlobal, 0);
}
//Settings
if (GM_getValue("RandomFarming_" + suffixGlobal, false) == false) {
GM_setValue("RandomFarming_" + suffixGlobal, 0);
}
if (GM_getValue("farmMarking_" + suffixGlobal, false) === false) {
GM_setValue("farmMarking_" + suffixGlobal, 0);
}
if (GM_getValue("VillageSkipping_" + suffixGlobal, false) === false) {
GM_setValue("VillageSkipping_" + suffixGlobal, 0);
}
if (GM_getValue("DelTList_" + suffixLocal, false) === false) {
GM_setValue("DelTList_" + suffixLocal, 1);
}
if (GM_getValue("ReadRep_" + suffixLocal, false) === false) {
GM_setValue("ReadRep_" + suffixLocal, 0);
}
if (GM_getValue("DynamicTroopCount__" + suffixLocal, false) === false) {
GM_setValue("DynamicTroopCount__" + suffixLocal, 1);
}
// Setting Travian Version
if (GM_getValue("TravianVersion_" + suffixGlobal, false) === false) {
GM_setValue("TravianVersion_" + suffixGlobal, 0);
}
//Insert village selector
rp_villageSelector();
//Alert (url);
if (url.indexOf("build.php?") > -1 && (url.indexOf("gid=16") > -1 || url.indexOf("id=39") > -1)) {
if (isReallyRallyPoint()) {
rp_mainPage();
}
activeMain();
} else if (url.indexOf("a2b.php") > -1) {
activeMain();
} else if (url.indexOf("karte.php?") > -1 && url.indexOf("d=") > -1
&& url.indexOf("c=") > -1) { //If user profile page
foundNewFarm();
} else if (url.indexOf("berichte.php") > -1) {
// If no messages there, return to rally point
newreport = document.getElementsByTagName('html')[0].innerHTML.indexOf('id=\"n5\" class=\"i1\"')+document.getElementsByTagName('html')[0]. innerHTML.indexOf('id=\"n5\" class=\"i3\"');
if ( newreport == -2 && GM_getValue("Active_" + suffixGlobal, -1) > -1)
{
window.open("/build.php?id=39", "_self");
return;
}
}
// Farm marking in the map
if (url.indexOf('karte.php')>-1 && url.indexOf('karte.php?d=')==-1 && GM_getValue("farmMarking_" + suffixGlobal, 0)==1)
{
// Get center village
var mapX = dom.get('x').textContent;
var mapY = dom.get('y').textContent;
FM_log(4,"CenterCoords="+mapX+","+mapY);
GM_setValue("MapCenter_"+suffixGlobal,mapX+","+mapY);
// Look for arrow buttons
var ex = "//area[contains(@id,'ma_n')]";
tag = document.evaluate(ex,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
FM_log(4,"adding eventListener");
for(var i=1; i<=tag.snapshotLength;i++)
{
var arrowButton = tag.snapshotItem(i-1);
// Call function to check again after listener was activated
FM_log(4,"arrowId="+arrowButton.id);
arrowButton.addEventListener("click", function (e){
var evt = e || event;
var ele = evt.target || evt.srcElement;
setTimeout(function(){getXYtoFarms(ele.id);},500);
}, true); // So that it will check again when scrolling.
}
getXYtoFarms("")
}
}
function activeMain() {
FM_log(3,"activeMain() called");
if (GM_getValue("Active_" + suffixGlobal, -1) > -1) {
FM_log(4,"FM is active");
GM_addStyle("body { color:black; }");
drawMessageBox();
var messageStr = "", acVillageFlag = true, titleStr = "";
var currentVillageId = getActiveVillageId();
if (isFarmerVillage(currentVillageId)) {
if (farmList == null || farmList.length == 0) {
farmList = GM_getValue("FarmList_" + suffixLocal, "").split(">:)");
}
var sIndex = getStartIndex();
FM_log(4,"activeMain sIndex="+sIndex);
var eIndex = getEndIndex();
//Teuton Mod Code (M4rtini)
fque = GM_getValue('farmqueue'+ suffixLocal, '');
if (fque == null || fque.length == 0 || fque.indexOf('>:)') == -1)
{
//Alert("neue liste");
fque = new Array();
x = 0;
if(eIndex == -1) //No eIndex set
{ // First fill from sIndex to end, then add from beginning to sIndex
for (var i = sIndex; i < farmList.length; i++)
{
fque[x] = farmList[i];
x++;
}
for (var i = 0; i < sIndex; i++)
{
fque[x] = farmList[i];
x++;
}
}else if(eIndex <= farmList.length){ //Fill in between sIndex and eIndex
for (var i = sIndex; i <= eIndex; i++)
{
fque[x] = farmList[i];
x++;
}
}else if(eIndex <= sIndex){ //Fill to the End and then from the beginning to eIndex
for (var i = sIndex; i < farmList.length; i++)
{
fque[x] = farmList[i];
x++;
}
for (var i = 0; i < eIndex; i++)
{
fque[x] = farmList[i];
x++;
}
}
//Removing all inactives.
for (var i=0; i < fque.length;i++)
{
temp = fque[i].split('|');
if(temp[7] != 'true')
{
fque.splice(i,1); //Removes from array
}
}
if(random==1) {
fque.sort(randOrd);
fque.sort(randOrd);
fque.sort(randOrd);
fque.sort(randOrd);
}
//Alert(fque.join('>:)'));
GM_setValue('farmqueue'+ suffixLocal, fque.join('>:)'));
}else{ //Fque already existing
fque = fque.split('>:)');
}
// End Teuton Mod
if (eIndex >= farmList.length) {
GM_setValue("EndIndex_" + suffixLocal, -1);
}
var doneHere = GM_getValue("DoneHere_" + suffixLocal, 0);
if (fque == "" || fque.length == 0 || doneHere == 1) {
titleStr = T("NO_FARM");
messageStr = T('CHANGE_VILLAGE');
setTextMessage(titleStr, messageStr);
acVillageFlag = false;
} else {
if (sIndex < farmList.length) {
setAttackMessage();
} else {
titleStr = T("Error");
messageStr = T('CHANGE_VILLAGE');
setTextMessage(titleStr, messageStr);
changeVillage();
return;
}
}
} else {
titleStr = T('NOT_FARMER');
messageStr = T('CHANGE_VILLAGE');
acVillageFlag = false;
setTextMessage(titleStr, messageStr);
}
if (acVillageFlag) {
var url = document.URL;
url = url.substring(url.lastIndexOf("/") + 1);
if (url == "a2b.php") { //Ready to fill out form
setTimeout(function(){sendtroops();},Random()/2);
} else { //Changing to the send troops form
setTimeout("window.location.replace('" + rootPath + "a2b.php')",Random() / 2);
}
} else {
changeVillage();
}
}
}
function rp_mainPage() {
FM_log(3,"rp_mainPage() called");
if (GM_getValue("Active_" + suffixGlobal, -1) > -1) {
setTimeout("window.location.replace('" + rootPath + "a2b.php')",
Random());
} else {
insertEditFarmBox();
//Now Add eventlistener for the save button
dom.get("FMsaveButton")
.addEventListener('click', saveEditedFarm, false); //Add eventlistener
var container = dom.get("content");
var newP = dom.cn("p");
newP.id = "FMtitle";
newP.innerHTML += '<b>Farming Machine</b>';
container.appendChild(newP);
//Insert a new table
rp_insertTable();
}
}
function rp_villageSelector() { //Adds Village checkboxes
FM_log(3,"rp_villageSelector() called");
//Get Travian Version
vT35 = GM_getValue("TravianVersion_" + suffixGlobal, false);
var vTableExp = "//a[contains(@href,'newdid')]/ancestor::td/ancestor::tr/ancestor::tbody";
var vTable = dom.find(vTableExp, XPFirst);
if (vTable != null && vTable.firstChild != null) {
for (var i = 1; i < vTable.childNodes.length; i++) {
var search = /\n?\((.*)\n?\s*\|\s*\n?(.*)\)\n?/;
var resultxy = search.exec(vTable.childNodes[i].textContent);
var X = resultxy[1];
var Y = resultxy[2];
var vid = xy2id(X, Y);
var newdid = getParamFromUrl(vTable.childNodes[i].getElementsByTagName("a")[0].getAttribute("href"),"newdid");
var checkButton = createInputButton("checkbox", i);
checkButton.id = "vcb_" + vid + "~" + newdid;
if (isFarmerVillage(vid)) {
checkButton.checked = true;
}
if (GM_getValue("Active_" + suffixGlobal, -1) > -1) {
checkButton.disabled = true;
} else {
checkButton.addEventListener("click", function(event) {
villageCheckBox(event)
}, false);
}
if(vT35==1) {
FM_log(4,"old code version");
var newCol = dom.cn("td");
newCol.appendChild(checkButton);
vTable.childNodes[i].appendChild(newCol);
} else if (vT35==2) {
FM_log(4,"new code version");
var vilExp = vTableExp+"/tr["+(i)+"]/td[contains(@class,'dot')]";
dom.xs(vilExp).textContent = "";
dom.xs(vilExp).appendChild(checkButton);
} else {
FM_log(0,"could not attach villagecheckbox - unknown Travian Version");
}
}
}
}
function sendtroops() {
FM_log(3,"sendtroops() called");
prioque = GM_getValue('priorityqueue'+ suffixLocal, '').split('>:)');
fque = GM_getValue('farmqueue'+ suffixLocal, '').split('>:)');
//Get Travian Version
vT35 = GM_getValue("TravianVersion_" + suffixGlobal, false);
if (prioque.length >= 1 && prioque[0].length > 2)
{
FM_log(4,"priority attack");
var arr = prioque[0].toString().split("|");
attackList = prioque;
priorityAttack = true;
}else{
var arr = fque[0].toString().split("|");
attackList = fque;
priorityAttack = false;
}
xy = arr[0].split(",");
var sIndex = getSindexFromXY(xy[0],xy[1], suffixLocal);
var eIndex = getEndIndex();
var notFoundHtml = (dom.get("content")).innerHTML;
var formNode = dom.get("content").innerHTML, titleStr = "", messageStr = "";
var attackCount = GM_getValue("Active_" + suffixGlobal, 0);
if(vT35==1) {
var searchStr = "<div class=\"f10 e b\">";
var searchExp = "//div[@class='f10 e b']";
} else if (vT35==2) {
var searchStr = "<p class=\"error\">";
var searchExp = "//p[@class='error']";
}
if (notFoundHtml.indexOf(searchStr) > -1) { //Village not found or player bannded
farmSetInactive(sIndex, suffixLocal); // Got error on this farm so set it inactive
if (sIndex == eIndex) {
GM_setValue("DoneHere_" + suffixLocal, 1);
}
errText = dom.xs(searchExp).textContent;
FM_log(4,"errText="+errText);
titleStr = T("Error") + " :";
messageStr = errText + "<br>" + T('NEXT_FARM');
setTextMessage(titleStr, messageStr);
removefromque(priorityAttack); //Remove the farm from the attack queue.
setTimeout("window.location.replace('" + rootPath + "a2b.php')",Random());
} else if (sIndex < farmList.length) { // No error message from travian and inside farmList
if(arr[3]=="pixelgeek") {
farmSetInactive(sIndex, suffixLocal); // Got error on this farm so set it inactive
if (sIndex == eIndex) {
GM_setValue("DoneHere_" + suffixLocal, 1);
}
titleStr = T("Error") + " :";
messageStr = "...<br>" + T('NEXT_FARM');
setTextMessage(titleStr, messageStr);
removefromque(priorityAttack); //Remove the farm from the attack queue.
setTimeout("window.location.replace('" + rootPath + "a2b.php')",Random());
} else {
if (formNode.indexOf("kid") > -1) { //Confimation page
var e = document.getElementsByTagName('form');
e[0].submit(); //Submit done
GM_setValue("Active_" + suffixGlobal, attackCount + 1);
if(GM_getValue("RandomFarming_" + suffixGlobal, 1)==0 && priorityAttack==false) {
//Keep all villages in the list for making it the same as the inital version of FM
makelastinque(priorityAttack);
} else {
//If prioattack or random farming, this farm needs to be removed from the list
removefromque(priorityAttack);
}
titleStr = T('TROOPS_GONE') + ":";
messageStr = "[" + sIndex + "] " + E2C(arr[3]) + " : "
+ E2C(arr[5]) + "<b>(" + arr[0] + ")</b>";
setTextMessage(titleStr, messageStr);
if (sIndex == eIndex) {
GM_setValue("DoneHere_" + suffixLocal, 1);
}
} else { //Filling out the form & sending troops
setAttackMessage();
var i;
if (arr[7] == "true") {
FM_log(4,"checking if there are enough troops");
var xy = arr[0].split(",");
var troopsCount = arr[1].split(",");
var random = GM_getValue("RandomFarming_" + suffixGlobal, 0);
var skipcounter = GM_getValue("Skipcounter_" + suffixGlobal, 0);
var availableTroops = new Array();
//Find all the available troops
//Alert(getNumber(formNode.substr(formNode.lastIndexOf("t1.value"))));
for (i = 1; i < 11; i++) {
var tt = "t" + i + ".value";
availableTroops.push(getNumber(formNode.substr(formNode
.lastIndexOf(tt))));
}
for (i = 0; i < troopsCount.length; i++) {
if (parseInt(availableTroops[i]) < parseInt(troopsCount[i])) {
FM_log(4,"not enough troops");
titleStr = T("Error") + " :";
tIndex = getSindexFromXY(arr[0].split(",")[0],arr[0].split(",")[1], suffixLocal)
messageStr = T('NOT_ENOUGH') + ":<br>["+tIndex+"] " + E2C(arr[3]) + " : " + E2C(arr[5])
+ "<b>(" + arr[0] + ")</b><br>"
+ T("Available") + ": <b>" + availableTroops[i]
+ "</b> " + T("Needed") + ": <b>"
+ troopsCount[i] + "</b>";
setTextMessage(titleStr, messageStr);
//Move village to the latest position and continue with next village
//Only if skipvillage is activated
if(GM_getValue("VillageSkipping_" + suffixGlobal, 0)==1) {
FM_log(4,"moving village to the end of list");
makelastinque(priorityAttack);
}
//Add one unsuccessfull count to the skipcounter
skipcounter++;
GM_setValue("Skipcounter_" + suffixGlobal, skipcounter);
FM_log(5,"Skipcounter="+skipcounter);
FM_log(5,"attackList Length="+attackList.length);
//If all farms were unsuccessfully, change village otherwise continue trying
if(maxSkipCount < 1) {
maxSkipCount = attackList.length;
}
if(maxSkipCount > attackList.length) {
maxSkipCount = attackList.length;
}
FM_log(5,"maxSkipcount="+maxSkipCount);
if (skipcounter >= maxSkipCount )
{
changeVillage();
}else{
setTimeout("window.location.replace('" + rootPath + "a2b.php')",Random());
if(GM_getValue("VillageSkipping_" + suffixGlobal, 0)==1) { //Only display message, when it's really skipping to next farm
messageStr = T('NEXT_FARM');
setTextMessage("", messageStr);
}
setTimeout(function(){sendtroops}, 2000);
}
return;
}
}
var theForm = document.forms.namedItem("snd");
for (i = 1; i < 12; i++) {
theForm.elements.namedItem("t" + i).value = troopsCount[i-1];
}
dom.find("//input[@name='c' and @value='" + arr[8] + "']",
XPFirst, theForm).checked = true;
//theForm.elements.namedItem('c').value = 3;
theForm.elements.namedItem('x').value = xy[0];
theForm.elements.namedItem('y').value = xy[1];
//All set.. submit
//Reset skipcounter, because a village was successfully attacked
FM_log(3,"Successfully send troops > skipcounter = 0");
GM_setValue("Skipcounter_" + suffixGlobal, 0);
setTimeout(function(){theForm.submit()}, Random());
} else { //Farm not active
titleStr = T('FARM_INACTIVE') + ":";
messageStr = E2C(arr[3]) + " : " + E2C(arr[5]) + "<b>(" + arr[0] + ")</b>";
setTextMessage(titleStr, messageStr);
//alert("Farm inactiv: removing it");
removefromque(priorityAttack);
setTimeout("window.location.replace('" + rootPath + "a2b.php')",Random());
setTimeout(function(){sendtroops}, 2000);
return;
}
}
}
} else {
messageStr = T('CHANGE_VILLAGE');
setTextMessage(titleStr, messageStr);
changeVillage();
}
}
function markFarm(x, y) {
FM_log(1,"markFarm("+x+","+y+") called");
//farm coords
var x = parseInt(x);
var y = parseInt(y);
var id = (x + 401) + ((400 - y) * 801);
//Get map center
var centerCoords = GM_getValue("MapCenter_"+suffixGlobal,"");
if(centerCoords!="") {
centerCoords = centerCoords.split(',');
FM_log(4,"stored coords:"+centerCoords[0]+","+centerCoords[1]);
} else {
FM_log(4,"no center coords stored");
return;
}
var centerX = parseInt(centerCoords[0]);
var centerY = parseInt(centerCoords[1]);
//Get map size
//var ex = "//area[contains(@href,'d=')][contains(@id,'a_')]";
var ex = "//div[contains(@id,'i_')]";
var tag = dom.xo(ex);
mapSize = Math.floor(Math.sqrt(tag.snapshotLength));
FM_log(2,"mapSize="+mapSize);
mapCenterX = (mapSize-1)/2;
mapCenterY = (mapSize-1)/2;
FM_log(4,"mapCenterXY="+mapCenterX+","+mapCenterY);
mapOffsetX = mapCenterX - 3;
mapOffsetY = mapCenterY - 3;
mapOffsetX = 0;
mapOffsetY = 0;
//Create coordinates for each cell and compare
for(var i=0; i<mapSize; i++) {
//calculate X-Offset to Center
offX = i - mapCenterX;
FM_log(4,"offX="+offX);
//Calculate tCoorX
tCoorX = centerX + offX + mapOffsetX;
for(var j=0; j<mapSize; j++) {
//calculate Y-Offset
offY = j - mapCenterY;
FM_log(4,"offY="+offY);
//calculate tCoorY
tCoorY = centerY + offY + mapOffsetY;
FM_log(4,"tCoords="+tCoorX+"/"+tCoorY);
//compare to farm coords
//FM_log(2,"compare X="+tCoorX+"/"+x);
//FM_log(2,"compare Y="+tCoorY+"/"+y);
if(tCoorX==x && tCoorY==y) {
var exArea = "//div[@id='i_"+i+"_"+j+"']";
FM_log(2,"exArea="+exArea);
tag2 = dom.xs(exArea);
//tag2.innerHTML = "<div class=\"isfarm\"> </div>";
tag2.setAttribute("class","isfarm");
//return;
}
}
}
}
function farmSetInactive(index, suffix) {
FM_log(3,"farmSetInactive("+index+","+suffix+") called");
var fList = GM_getValue("FarmList_" + suffix, "").split(">:)");
var newfList = "";
var i, j;
if (index < fList.length) {
for (i = 0; i < fList.length; i++) {
if (i)
newfList += ">:)";
if (i == index) {
var arr = fList[i].split("|");
arr[7] = "false";
for (j = 0; j < arr.length; j++) {
if (j)
newfList += "|";
newfList += arr[j];
}
} else {
newfList += fList[i];
}
}
GM_setValue("FarmList_" + suffixLocal, newfList);
}
}
function farmAddRemoveOne(index, suffix,add) {
FM_log(2,"farmAddOne("+index+","+suffix+") called");
FM_log(2, "suffix:"+ suffix +" SuffixLocal:"+ suffixLocal);
var fList = GM_getValue("FarmList_" + suffix, "").split(">:)");
var newfList = "";
var i, j;
if (index < fList.length) {
for (i = 0; i < fList.length; i++) {
if (i)
newfList += ">:)";
if (i == index) {
var arr = fList[i].split("|");
//FM_log(2, arr[1]);
troops = arr[1].split(',')
//FM_log(2,troops);
for (var x in troops) {
if(add && parseInt(troops[x]) != 0){
troops[x]++;
break;
}else if( parseInt(troops[x]) != 0 && parseInt(troops[x]) > minimumTroopCount){
troops[x]--;
break;
}
}
arr[1] = troops.join(',');
//FM_log(2,arr[1]);
for (j = 0; j < arr.length; j++) {
if (j)
newfList += "|";
newfList += arr[j];
}
} else {
newfList += fList[i];
}
}
GM_setValue("FarmList_" + suffix, newfList);
}
}
function changeVillage() {
try{
FM_log(3,"changeVillage() called");
GM_setValue("Skipcounter_" + suffixGlobal, 0);
//clear farmque, because all the other farms are already tried...
if(maxSkipCount==-1 && GM_getValue("RandomFarming_" + suffixGlobal, -1)==1) {
clearque();
}
var vList = GM_getValue("FarmerVillages_" + suffixGlobal);
var newList = new Array();
var i, pause, messageStr = "";
if (vList != null && vList != "") {
vList = vList.toString().split(",");
if (vList.length > 0) {
var activeVId = getActiveVillageId();
for (i = 0; i < vList.length; i++) {
var ids = vList[i].split('~')[0];
if (GM_getValue("DoneHere_" + suffixGlobal + "_" + ids, 0) == 0
&& ids != activeVId) {
newList.push(vList[i]); //only taking villages which is not current village and also not done
}
}
}
}
random = GM_getValue("RandomFarming_" + suffixGlobal, 0);
if (newList.length == 0) { //Village Change is not possible, Engine is pause for X sec
//if there are other villages, reactivate these, otherwise stay in this village
if (vList == "" || vList == null) {
//no farmer village! so set the current village a farmer, important for single village account
GM_setValue("FarmerVillages_" + suffixGlobal, getActiveVillageId()
+ "~-1"); //no newdid
vList = GM_getValue("FarmerVillages_" + suffixGlobal, "");
}
FM_log(4,"Reseting all doneHeres");
//reset DoneHere for all selected village
var arr = vList.toString().split(",");
FM_log(4,"number of villages="+arr.length);
for (var i = 0; i < arr.length; i++) {
arr[i] = arr[i].split("~");
FM_log(4,"villageId="+arr[i][0]);
GM_setValue("DoneHere_" + suffixGlobal + "_" + arr[i][0], 0);
}
pause = Random();
messageStr = T('NO_VILLAGE') + " " + T('WAITING') + " <b> "
+ Math.floor(pause / 1000) + "</b> " + T('SEC') + " "
setTextMessage("", messageStr);
setTimeout("window.location.replace('" + rootPath + "a2b.php')", pause);
} else {
//In case of random iteration we come up to this point because sIndex was bigger then farmList length
//before we leave this village we have to ensure that when we came back to this village we got the sIndex is in between farmlist length
var sIndex = 0;
if (random == 1 && farmList != null && farmList.length > 0) {
sIndex = Random(0, farmList.length - 1);
GM_setValue("StartIndex_" + suffixLocal, sIndex); //by force set it inside
}
//select a village randomly from the active villages
i = Random(0, newList.length - 1);
newList[i] = newList[i].split('~');
var coord = id2xy(newList[i][0]);
pause = Random();
messageStr = T('SWITCH_V') + ": (" + coord.x + "|" + coord.y + "), "
+ T("after") + " " + Math.floor(pause / 1000) + " " + T("sec");
setTextMessage("", messageStr);
setTimeout("window.location.replace('" + rootPath + "a2b.php?newdid="+ newList[i][1] + "')", pause);
}
} catch(error) {
FM_log(0,"changeVillage(): change not successfull");
}
}
function foundNewFarm() {
FM_log(3,"foundNewFarm() called");
insertEditFarmBox();
var tribe = getFPlayerTribe().toUpperCase();
var tribeG=T('GAUL').toUpperCase();
if (tribe ==tribeG) {
dom.get("radio3").checked = true; //default attack for gauls
} else {
dom.get("radio4").checked = true; //default raid for other
}
dom.get('FMsaveButton').addEventListener('click', addNewFarm, true);
var tbody = dom.xs("//a[contains(@href,'karte.php')]/parent::td/parent::tr/parent::tbody");
if (tbody == null || tbody == "")
return;
/*
Trying to mark already added villages
*/
// getting coordinates
testCoord = getFVillageCoords();
// checking if already existing
if(isFarm(testCoord.split(',')[0],testCoord.split(',')[1])) {
var addOption = createLinkButton('<font style="color: #cd0000;">'+'\u00BB' + " " + T("Add_To") + " "
+ T('SCRIPT_NAME') + "<\/font>", T("Add_As"), showPopupFarmEditBox);
} else {
var addOption = createLinkButton('\u00BB' + " " + T("Add_To") + " "
+ T('SCRIPT_NAME'), T("Add_As"), showPopupFarmEditBox);
}
/* original Code
var addOption = createLinkButton('\u00BB' + " " + T("Add_To") + " "
+ T('SCRIPT_NAME'), T("Add_As"), showPopupFarmEditBox);
*/
var row = dom.cn('tr');
var cell = dom.cn('td');
cell.appendChild(addOption);
row.appendChild(cell);
tbody.appendChild(row);
}
function addNewFarm() {
FM_log(3,"addNewFarm() called");
var formDiv = dom.get("popupFarmEditBox");
var inputTag = formDiv.getElementsByTagName("input");
var troopConfig = "", attackType, activeBool, i;
for (i = 0; i < inputTag.length; i++) {
if (i < 11) {
if (i)
troopConfig += ",";
if (inputTag[i].value == "" || inputTag[i].value == null)
inputTag[i].value = 0;
troopConfig += parseInt(inputTag[i].value);
} else {
if (inputTag[i].getAttribute("type") == "radio"
&& inputTag[i].checked) {
attackType = inputTag[i].value;
} else if (inputTag[i].getAttribute("type") == "checkbox") {
activeBool = inputTag[i].checked;
}
}
}
//alert(troopConfig+"|"+attackType+"|"+activeBool);
var coords = getFVillageCoords();
var tribe = getFPlayerTribe();
var fPlayerName = getFPlayerName();
var fPlayerId = getFPlayerId();
FM_log(3,"getFVillageName");
var fVillageName = getFVillageName();
//alert(fVillageName);
FM_log(3,"getCvalue");
var cValue = getCvalue();
FM_log(3,"window confirm");
if (window.confirm(T('ADD_FARM') + ": " + fVillageName + " (" + coords
+ ")" + "\n" + T('TROOP_CONFIG') + ": \"" + troopConfig + "\"\n"
+ T('CONFIRM') + "?")) {
addList(coords + "|" + troopConfig + "|" + C2E(tribe) + "|"
+ C2E(fPlayerName) + "|" + C2E(fPlayerId) + "|"
+ C2E(fVillageName) + "|" + cValue + "|" + activeBool + "|"
+ attackType);
//alert("New Farm Added: "+fVillageName+"("+coords+") :)");
hidePopupFarmEditBox();
}
FM_log(3,"New Farm Add done");
}
function addList(dataStr) {
FM_log(3,"addList() called");
var oldList = GM_getValue("FarmList_" + suffixLocal, "") + " ";
oldList = trim(oldList);
if (oldList != "") {
oldList += ">:)";//evil face
}
oldList += dataStr; //now it is actually new list ;)
GM_setValue("FarmList_" + suffixLocal, oldList);
}
function randOrd(){ //randomize for farmque
return (Math.round(Math.random())-0.5);
}
function removefromque(prioattack) { //remove farm from farmque or prioque
FM_log(3,"removefromque() called");
if(prioattack)
{
prioque.shift();
GM_setValue('priorityqueue'+ suffixLocal, prioque.join('>:)'));
}else{
fque.shift();
GM_setValue('farmqueue'+ suffixLocal, fque.join('>:)'));
}
}
function makelastinque(prioattack) {
FM_log(3,"makelastinque() called");
if(prioattack)
{
if (prioque.length > 1)
{
info = prioque.shift();
prioque.push(info);
//alert("make last: " + prioque.join('>:)'));
GM_setValue('priorityqueue'+ suffixLocal, prioque.join('>:)'));
}else{
//only one in the list so there is no need to change position
}
}else{
if (fque.length > 1)
{
info = fque.shift();
fque.push(info);
//alert(fque.join('>:)'));
GM_setValue('farmqueue'+ suffixLocal, fque.join('>:)'));
}else{
//only one in the list so there is no need to change position
}
}
}
function addtoprio(info, vilId) { //add farm to prioque
FM_log(0,"addtoprio("+info+","+vilId+" called");
suffixGlobal = server + '_' + getPlayerId();
suffixLocal = suffixGlobal + '_' + vilId;
prioque = GM_getValue('priorityqueue'+ suffixLocal, '') + " ";
prioque = trim(prioque);
if (prioque != "") {
prioque += ">:)";
}
prioque += info;
//alert(prioque);
GM_setValue('priorityqueue'+ suffixLocal, prioque);
}
function clearque() { //delete farmque / prioque
FM_log(3,"clearque() called");
var vListID = getAllVillageId().toString();
FM_log(4,"vListID="+vListID);
var temptemp = vListID.split(",");
//alert(temptemp.length);
for(var i=0; i<temptemp.length;i++)
{
//alert(temptemp[i]);
GM_setValue('farmqueue'+ suffixGlobal + '_' + temptemp[i], '');
GM_setValue('priorityqueue'+ suffixGlobal + '_' + temptemp[i], '');
}
FM_log(4,"Farmqueue cleared");
}
function checkreports() { //Analyze new reports
FM_log(3,"checkreports() called");
FM_log(3,"Setting language, images & style");
setLanguage();
loadImage();
loadStyle();
drawMessageBox();
setTextMessage("Checking reports", "Opening report");
url = document.URL;
pulled = document.createElement('div');
if ( (url.indexOf("berichte.php") != -1 && url.indexOf("berichte.php?") == -1) || url.indexOf("berichte.php?s=") != -1) {
ex = "//td/div/a[contains(@href,'berichte.php?')]/parent::*";
ex2 = "//td/div/a[contains(@href,'berichte.php?id=')]";
tag = document.evaluate(ex,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
//alert(tag);
totReports = find(ex2,XPList);
for(i=totReports.snapshotLength-1;i>=0;i--){
pulled.innerHTML = tag.snapshotItem(i).innerHTML;
attackreporturl = pulled.getElementsByTagName('a')[0].href;
endofA = tag.snapshotItem(i).innerHTML.indexOf("</a>");
testIndex = tag.snapshotItem(i).innerHTML.indexOf("(",endofA); // check if line is a new report
if (testIndex != -1 && endofA < testIndex) {
//save url
GM_setValue("lastreportpage_"+suffixGlobal, url);
FM_log(4,"attrepurl="+attackreporturl);
//window.open(attackreporturl, "_self");
setTimeout("window.location.replace('" + attackreporturl + "')", 500);
break;
}
}
if (i==-1){ // all reports from this page done, switching to next page
newreport = document.getElementsByTagName('html')[0].innerHTML.indexOf('id=\"n5\" class=\"i1\"') + document.getElementsByTagName('html')[
0].innerHTML.indexOf('id=\"n5\" class=\"i3\"');
if ( newreport == -2 || url.indexOf("berichte.php?s=1000") != -1) {
//no more reports to read, going back to attacks
setTextMessage("Checking reports", "No more reports to read<br/>Going back to rally point")
//resetting lastreportpage
GM_setValue("lastreportpage_"+suffixGlobal, "berichte.php");
setTimeout("window.location.replace('" + rootPath + "a2b.php')",500);
} else {
//going to next page
next = find("//a[contains(@href,'berichte.php?s=')]",XPList);
if (next.snapshotLength > 0)
{
nextRep = next.snapshotItem(next.snapshotLength-1).href.split("/");
nextRepLink = nextRep[nextRep.length-1];
FM_log(4,"nextRepLink="+nextRepLink);
GM_setValue("lastreportpage_"+suffixGlobal,nextRepLink);
//window.open(next.snapshotItem(next.snapshotLength-1).href, "_self");
setTimeout("window.location.replace('" + next.snapshotItem(next.snapshotLength-1).href + "')",500);
}
}
}
}
//Is this any report page?
if ((url.indexOf("berichte.php?id=") != -1 || url.indexOf("berichte.php?newdid=") != -1) ) {
FM_log(4,"inside report page");
//alert("analysing report");
test = find("//a[contains(@href,'uid=')]",XPList);
var uids = find("//div[@id='content']//a[contains(@href,'karte.php?d=')]",XPList);
if(test.snapshotLength == 3 && uids.snapshotLength == 2 ){
setTextMessage("Checking reports", "Attack report");
FM_log(4,"report is attack report");
troopsinattack = document.getElementsByTagName('tr')[6].innerHTML.match(/\d+/g).join();
casualties = document.getElementsByTagName('tr')[7].innerHTML.match(/\d+/g).join();
attackedId = uids.snapshotItem(1).href.split('d=')[1].split('&c')[0];
attackerVillageId = uids.snapshotItem(0).href.split('d=')[1].split('&c')[0];
attackerPlayerId = test.snapshotItem(1).href.split('uid=')[1];
playerId = getPlayerId();
thisCValue = uids.snapshotItem(1).href.split('d=')[1].split('&c=')[1];
defenderPlayerId = test.snapshotItem(2).href.split('uid=')[1];
//alert(defenderPlayerId);
//alert(thisCValue);
coords = id2xy(attackedId);
FM_log(4,"coords="+coords.x+"/"+coords.y);
FM_log(2,"going to check attacktable");
temp = attacktable();
lostResources = temp[1];
var gain;
var carryCapacity;
var carryCell=dom.find("//img[@class='car']/parent::div",XPFirst);
if (carryCell != null) {
gain = carryCell.textContent.split('/')[0] - lostResources;
carryCapacity = carryCell.textContent.split('/')[1];
efficiency = gain/carryCapacity * 100;
}else{
efficiency = -1;
}
FM_log(2, "Gain "+gain+"Carry: "+ carryCapacity + "Efficiency: "+ efficiency);
//adding up casualties
var casTemp = casualties.split(',');
var casNr=0;
for(i=0;i<casTemp.length;i++) {
casNr+casTemp[i];
}
setTextMessage("Checking reports", "Attack report<br/><br/>Efficiency: "+efficiency+"%<br/>Gain: "+gain+"<br/>Casualties: "+casNr);
FM_log(0,"efficiency="+efficiency);
switch (temp[2]){
case 1:tribe=T('ROMAN');break;
case 2:tribe=T('TEUTON');break;
case 3:tribe=T('GAUL');break;
default:tribe=T('ROMAN');break;
}
if (temp[2]==3) {
attType = 3;
} else {
attType = 4;
}
//alert("troopsinattack:"+troopsinattack);
//alert("casualties:"+casualties);
//alert("gain:"+gain);
//alert("efficiency:"+efficiency);
if (troopsinattack.split(',').join() == casualties || gain < 0)
{
//alert("all units lost - deactivating village");
suffix = suffixGlobal + '_' + attackerVillageId;
suffixLocal = suffixGlobal + '_' + getActiveVillageId();
index = getSindexFromXY(coords.x,coords.y, suffix);
if (index != -2)
{
farmSetInactive(index, suffix);
//alert("farm set inactive");
}
}
FM_log(2,"c="+casualties+"/eff="+efficiency+"/playerId="+playerId+"/attPId="+attackerPlayerId);
var DynamicTroopCount = GM_getValue("DynamicTroopCount_" + suffixGlobal, 0);
if(casualties == "0,0,0,0,0,0,0,0,0,0" && efficiency == 100 && playerId == attackerPlayerId )
{
suffixGlobal = server + '_' + getPlayerId();
suffix = suffixGlobal + '_' + attackerVillageId;
index = getSindexFromXY(coords.x,coords.y, suffix);
FM_log(1,"Calling: farmAddRemoveOne("+ index + ","+ suffix +",true)");
if(DynamicTroopCount){
farmAddRemoveOne(index, suffix,true);
}
FM_log(2,"adding this farm to prioque");
villageName = uids.snapshotItem(1).textContent;
FM_log(4,"villageName="+villageName);
playerName = test.snapshotItem(2).textContent + '(Priority)';
FM_log(4,"playerName="+playerName);
attackInfo = coords.x +','+ coords.y +'|'+ troopsinattack +'|'+tribe+'|'+playerName+'|'+defenderPlayerId+'|'+villageName+'|'+ thisCValue +'|true|'+attType;
FM_log(2,"attackInfo="+attackInfo);
addtoprio(attackInfo, attackerVillageId);
}
if(casualties == "0,0,0,0,0,0,0,0,0,0" && efficiency < minimumEfficiency && efficiency != -1 && playerId == attackerPlayerId ){
suffixGlobal = server + '_' + getPlayerId();
suffix = suffixGlobal + '_' + attackerVillageId;
index = getSindexFromXY(coords.x,coords.y, suffix);
FM_log(1,"Calling: farmAddRemoveOne("+ index + ","+ suffix +",false)");
if(DynamicTroopCount){
farmAddRemoveOne(index, suffix,false);
}
}
} else {
setTextMessage("Checking reports", "No Attack report");
}
//going back to last report page
lastRepPage = GM_getValue("lastreportpage_" + suffixGlobal, "berichte.php");
FM_log(4,"RepPage="+lastRepPage);
//window.location.replace(lastRepPage);
setTimeout("window.location.replace('" + lastRepPage + "')",500);
}
}
function attacktable(){ //analyse report table
try {
FM_log(1,"attacktable() called");
var ats=new Array(0,0,0,0,0,0,0,0,0,0,0);
var XPFirst=XPathResult.FIRST_ORDERED_NODE_TYPE;
var XPList=XPathResult.ORDERED_NODE_SNAPSHOT_TYPE;
exTab = "//div[@id='content']//a[contains(@href,'spieler.php?')]/parent::*/parent::tr/parent::thead/parent::table/tbody";
tab=find(exTab,XPList);
//alert(tab.snapshotLength);
table=tab.snapshotItem(0).getElementsByTagName("td"); //Item(0)=attacker, Item(1)=bounty, Item(2,3,4)=defender
if(tab.snapshotLength>1) {
//alert("check details");
//real defender is always the last table
tabledefender=tab.snapshotItem(tab.snapshotLength-1).getElementsByTagName("td");
//alert(tabledefender);
if(tabledefender[1].innerHTML.indexOf("unit u1")>0) tribedefender=1;
if(tabledefender[1].innerHTML.indexOf("unit u11")>0) tribedefender=2;
if(tabledefender[1].innerHTML.indexOf("unit u21")>0) tribedefender=3;
} else {
//define tribe for defender
tribedefender = 0;
}
var statushero=0;
var statustrap=0;
var troops=0; //1-romans 2-teutons 3-gauls
var lostres=new Array(0,0,0,0);
var atstemp=new Array(0,0,0,0,0,0,0,0,0,0,0);
tableattacker=tab.snapshotItem(0).getElementsByTagName("td");
if(tableattacker[1].innerHTML.indexOf("unit u1")>0) troops=1;
if(tableattacker[1].innerHTML.indexOf("unit u11")>0) troops=2;
if(tableattacker[1].innerHTML.indexOf("unit u21")>0) troops=3;
//alert(troops);
switch (troops){ //define need resources for troops
case 1:tm=romans;break;
case 2:tm=teutons;break;
case 3:tm=gauls;break;
default:tm=null;break;
}
var rescell=dom.find("//img[@class='r1']/parent::div",XPFirst);
if (rescell != null){
if(tm!=null){
if(tab.snapshotItem(0).getElementsByTagName("tr")[0].innerHTML.indexOf("unit uhero")>0) {statushero=1;ats[5]=1;}
//alert(statushero);
var tda=11+statushero; //start for sent units
var tdl=20+statushero*2; //start for casualities
var tdt=0;
for(var i=0;i<=(9+statushero);i++){
atstemp[0]=atstemp[0]+table[tda+i].textContent*tm[i][0];
lostres[0]=lostres[0]+table[tdl+i].textContent*tm[i][3];
lostres[1]=lostres[1]+table[tdl+i].textContent*tm[i][4];
lostres[2]=lostres[2]+table[tdl+i].textContent*tm[i][5];
lostres[3]=lostres[3]+table[tdl+i].textContent*tm[i][6];
atstemp[4]=atstemp[4]+table[tda+i].textContent*tm[i][7];
atstemp[6]=atstemp[6]+table[tdl+i].textContent*tm[i][7];
atstemp[8]=atstemp[8]+table[tda+i].textContent*tm[11][i]*tm[i][0];
atstemp[9]=atstemp[9]+table[tda+i].textContent*tm[12][i]*tm[i][0];
if(tdt!=0){
atstemp[7]=atstemp[7]+table[tdt+i].textContent*tm[i][7];
atstemp[3]=atstemp[3]+(table[tda+i].textContent-table[tdl+i].textContent-table[tdt+i].textContent)*tm[i][9];
}else{
atstemp[3]=atstemp[3]+(table[tda+i].textContent-table[tdl+i].textContent)*tm[i][9];
}
}
atstemp[1]=lostres[0]+lostres[1]+lostres[2]+lostres[3];
FM_log(2,"resText="+rescell.textContent);
res=rescell.textContent.split(" | ");
atstemp[2]=parseInt(res[0])+parseInt(res[1])+parseInt(res[2])+parseInt(res[3]);
var efficiency = Math.round(atstemp[2] / atstemp[3] * 100);
gain = atstemp[2] - atstemp[1];
//alert(atstemp[1]);
FM_log(2,"Loot: "+atstemp[2]+" Carry capacity: "+atstemp[3]);
FM_log(2,efficiency+"/"+gain+"/"+tribedefender);
returnstring = new Array();
returnstring[0] = efficiency;
returnstring[1] = atstemp[1];
returnstring[2] = tribedefender;
return (returnstring);
};
}
return 0;
} catch(error) {
FM_log(0,"attacktable(): Error in reading the attack-table");
}
}
function getSindexFromXY(x,y, suffix) {
FM_log(3,"getSindexFromXY() called");
farmList = GM_getValue("FarmList_" + suffix, "");
if (farmList != "" && farmList != null) {
farmList = farmList.split(">:)");
//alert(farmList.length);
for (i=0; i<farmList.length;i++)
{
xy = farmList[i].split("|")[0].split(',');
//alert(xy);
if (x == xy[0] && y == xy[1])
{
return i;
}
}
}
return -2;
}
//FM list functions
function farmRemove(itemToRemove) { //Remove a farm from the list
FM_log(3,"farmRemove("+itemToRemove+") called");
var sIndex = getStartIndex();
var eIndex = getEndIndex();
FM_log(4,"sufLoc:"+suffixLocal);
var fullList = GM_getValue("FarmList_" + suffixLocal);
var farms = new Array;
farms = fullList.split(">:)");
var newFarmList = '', flag = false, i;
if (itemToRemove < farms.length) {
var arr = farms[itemToRemove].split("|");
if (confirm(T('REMOVING') + ": " + E2C(arr[5]) + "(" + arr[0] + ")")) {
for (i = 0; i < farms.length; i++) {
if (i != itemToRemove) {
if (flag) {
newFarmList += ">:)";
}
newFarmList += farms[i];
flag = true;
}
}
//alert(newFarmList);
if (itemToRemove <= sIndex) {
GM_setValue("StartIndex_" + suffixLocal, (sIndex - 1) >= 0
? (sIndex - 1)
: 0);
}
if (itemToRemove <= eIndex) {
GM_setValue("EndIndex_" + suffixLocal, (eIndex - 1) >= 0
? (eIndex - 1)
: 0);
}
GM_setValue("FarmList_" + suffixLocal, newFarmList);
//reload the farm table
clearque();
reloadFarmTable();
}
} else {
alert('???Not a farm for remove');
}
}
function startEngine() {
farmList = new Array();
var vList = GM_getValue("FarmerVillages_" + suffixGlobal, "");
if (vList == "" || vList == null) {
//no farmer village! so set the current village a farmer, important for single village account
GM_setValue("FarmerVillages_" + suffixGlobal, getActiveVillageId()
+ "~-1"); //no newdid
vList = GM_getValue("FarmerVillages_" + suffixGlobal, "");
}
//reset DoneHere for all selected village
var arr = vList.toString().split(","), i;
for (i = 0; i < arr.length; i++) {
arr[i] = arr[i].split("~");
GM_setValue("DoneHere_" + suffixGlobal + "_" + arr[i][0], 0);
}
GM_setValue("Active_" + suffixGlobal, 0);
GM_addStyle("body { color:black; }");
window.location.replace(rootPath + "a2b.php");
}
function stopEngine() {
// set active variable to -1
GM_setValue("Active_" + suffixGlobal, -1);
// reset skipcounter
GM_setValue("Skipcounter_" + suffixGlobal, 0);
// reset all active farming villages
var vList = GM_getValue("FarmerVillages_" + suffixGlobal, "").split(",");
if (vList.length == 1 && vList[0].split("~")[1] == -1) { //for single village account
GM_setValue("FarmerVillages_" + suffixGlobal, "");
}
// Reset farmques if random is deactivated so it will start where it should start
if(GM_getValue("DelTList_" + suffixGlobal, 0)==1) {
//alert("clearing que");
clearque();
}
GM_addStyle("body { color:black; }");
FM_log(3,"Engine stopped, setting skipcounter=0");
// going back to rallypoint
setTimeout("window.location.replace('build.php?id=39')",500);
//window.location.replace("build.php?id=39");
}
function reloadFarmTable() {
FM_log(3,"reloadFarmTable() called");
var oldTable;
if ((oldTable = dom.get("farmMachineTable")) != null
|| oldTable != "undefined") {
//then remove it
dom.get("content").removeChild(dom.get("farmMachineTable"));
}
rp_insertTable();
FM_log(4,"Farm Table Reload Complete");
}
function distanceSort(a, b) {
var d1 = a.distance;
var d2 = b.distance;
return (d1 < d2) ? -1 : ((d1 > d2) ? 1 : 0); // -1 a,b | 1 b,a | 0 nothing
}
function sortFarms() {
FM_log(1,"sortFarms() called");
farmList = GM_getValue("FarmList_" + suffixLocal, "");
if (farmList == "" || farmList == null)
return;
farmList = farmList.split(">:)");
if (farmList.length == 1) //just one farm
return;
var arr = new Array(), i;
var xy = getActiveVillageXY(), xyt;
for (i = 0; i < farmList.length; i++) {
xyt = farmList[i].split("|")[0].split(",");
arr[i] = {
FarmInfo : farmList[i],
distance : coordDistXYtoXY(xy[0], xy[1], xyt[0], xyt[1])
};
//alert(xy[0]+" "+xy[1]+" "+xyt[0]+" "+xyt[1]);
}
arr.sort(distanceSort); //sorting
var newList = "";
for (i = 0; i < arr.length; i++) {
if (i)
newList += ">:)";
newList += arr[i].FarmInfo;
}
GM_setValue("FarmList_" + suffixLocal, newList);
reloadFarmTable();
}
function optimizeFarmsByDistance() {
FM_log(3,"optimizeFarmsByDistance() called");
if (confirm(T('OPTIMIZE_SM') + "\n" + T('CONFIRM') + "?")) {
var selectedvList = GM_getValue("FarmerVillages_" + suffixGlobal, ""); //if empty, just one village
var i, j, minDis, k;
if (selectedvList != "" && selectedvList != null) {
var vList = selectedvList.split(",");
if (vList.length < 2) return;
for (i = 0; i < vList.length; i++) {
vList[i] = vList[i].split('~')[0];
}
var allFarms = "", vCoords = new Array(), newFarmList = new Array();
for (i = 0; i < vList.length; i++) {
var fList = GM_getValue("FarmList_" + suffixGlobal + "_" + vList[i], "");
if (fList != "" && fList != null) {
if (allFarms != "") allFarms += ">:)";
allFarms += fList;
}
newFarmList[i] = "";
vCoords[i] = id2xy(vList[i]);
}
if (allFarms != "") {
allFarms = allFarms.split(">:)");
for (i = 0; i < allFarms.length; i++) {
minDis = 5000000.0;
k = -1;
var xy = allFarms[i].split("|")[0].split(",");
for (j = 0; j < vList.length; j++) {
var dis = coordDistXYtoXY(vCoords[j].x, vCoords[j].y,
xy[0], xy[1]);
if (dis < minDis) {
minDis = dis;
k = j;
}
}
if (k != -1) {
if (newFarmList[k] != "") {
newFarmList[k] += ">:)";
}
newFarmList[k] += allFarms[i];
}
}
for (i = 0; i < vList.length; i++) {
GM_setValue("FarmList_" + suffixGlobal + "_" + vList[i],
newFarmList[i]);
}
}
}
reloadFarmTable();
alert(T('OPTIMIZE_DONE'));
}
}
function importExport() {
FM_log(3,"importExport() called");
var farmData = GM_getValue("FarmList_" + suffixLocal, ""), val;
FM_log(4,"suffixLocal="+suffixLocal);
val = prompt(T('LOCAL_IM_EX_PROMPT'), farmData);
if (val != null) {
val = trim(val);
GM_setValue("FarmList_" + suffixLocal, val);
reloadFarmTable();
}
}
function globalImportExport() {
var allVillageId = getAllVillageId();
allVillageId = allVillageId.split(",");
var allData = "", i, j, farmData;
for (i = 0; i < allVillageId.length; i++) {
farmData = GM_getValue("FarmList_" + suffixGlobal + "_"
+ allVillageId[i], "");
farmData = trim(farmData);
if (allData != "")
allData += "//";
allData += allVillageId[i] + ":>" + farmData;
}
var val = prompt(T('GLOBAL_IM_EX_PROMPT'), allData);
if (val != null) {
val = trim(val).split("//");
for (i = 0; i < val.length; i++) {
farmData = val[i].split(":>");
farmData[0] = trim(farmData[0]);
if (farmData.length == 1)
farmData.push("");
for (j = 0; j < allVillageId.length; j++) {
if (farmData[0] == allVillageId[j]) {
break;
}
}
if (j < allVillageId.length) {
//alert(allVillageId[j]+" Data:"+farmData[1]);
GM_setValue("FarmList_" + suffixGlobal + "_" + allVillageId[j],
farmData[1]);
}
}
reloadFarmTable();
}
}
function editFarm(itemToEdit, event) {
FM_log(3,"editFarm("+itemToEdit+",event) called");
farmList = GM_getValue("FarmList_" + suffixLocal, "");
var i;
hidePopupFarmEditBox();
if (farmList != "" && farmList != null) {
farmList = farmList.split(">:)");
if (itemToEdit < farmList.length) {
//initialize the form with old values;
var farmEditBox = dom.get("popupFarmEditBox");
var arr = farmList[itemToEdit].split("|");
var troopsConfig = arr[1].split(",");
var inputTag = farmEditBox.getElementsByTagName("input");
for (i = 0; i < inputTag.length; i++) {
if (i < 11) {
inputTag[i].value = troopsConfig[i];
} else {
if (inputTag[i].getAttribute("type") == "radio") {
if (parseInt(inputTag[i].value) == parseInt(arr[8])) {
inputTag[i].checked = true;
} else {
inputTag[i].checked = false;
}
}
if (inputTag[i].getAttribute("type") == "checkbox") {
if (arr[7] == "true") {
inputTag[i].checked = true;
} else {
inputTag[i].checked = false;
}
}
}
}
FM_log(3,"editFarm: Form Initialization complete " + farmList.length);
//get the globalInt so if the save button get clicked saveEditedFarm function will use it
globalInt = itemToEdit;
//changing position
farmEditBox.style.top = event.pageY + "px";
farmEditBox.style.left = (event.pageX + 20) + "px";
showPopupFarmEditBox(); //Now show the box
}
}
}
function saveEditedFarm() {
FM_log(3,"saveEditedFarm() called");
var itemToEdit = globalInt;
FM_log(4,"itemToEdit="+itemToEdit);
var newList = "", i, j;
hidePopupFarmEditBox();
if (farmList.length == 0 || farmList == null || itemToEdit < 0 || itemToEdit >= farmList.length) {
FM_log(3,"saveEditedFarm: illegal call of this function");
return;
}
FM_log(4,"SaveEditedFarm: Going to save the edited farm " + farmList.length);
for (i = 0; i < farmList.length; i++) {
if (newList != "") {
newList += ">:)";
}
if (i == itemToEdit) {
var formDiv = dom.get("popupFarmEditBox");
var inputTag = formDiv.getElementsByTagName("input");
var troopConfig = "", attackType, activeBool;
for (j = 0; j < inputTag.length; j++) {
if (j < 11) {
if (j)
troopConfig += ",";
if (inputTag[j].value == "" || inputTag[j].value == "NaN" || inputTag[j].value == null)
inputTag[j].value = 0;
troopConfig += parseInt(inputTag[j].value);
} else {
if (inputTag[j].getAttribute("type") == "radio" && inputTag[j].checked) {
attackType = inputTag[j].value;
} else if (inputTag[j].getAttribute("type") == "checkbox") {
activeBool = inputTag[j].checked;
}
}
}
var arr = farmList[i].split("|");
newList += arr[0] + "|" + troopConfig + "|" + C2E(arr[2]) + "|"
+ C2E(arr[3]) + "|" + C2E(arr[4]) + "|" + C2E(arr[5]) + "|"
+ arr[6] + "|" + activeBool + "|" + attackType;
} else {
newList += farmList[i];
}
}
GM_setValue("FarmList_" + suffixLocal, newList);
FM_log(4,"SaveEditedFarm: Edit Farm Save Complete");
clearque();
reloadFarmTable();
}
//get informations
function getT35version() {
try{
plusLogo = dom.get("logo");
if(plusLogo != null) {
if(plusLogo.nodeName == "IMG") {
//de2
GM_setValue("TravianVersion_"+suffixGlobal,1);
vT35=1;
} else if (plusLogo.nodeName == "A") {
//com7, com9, it9, comx
GM_setValue("TravianVersion_"+suffixGlobal,2);
vT35=2;
} else {
GM_setValue("TravianVersion_"+suffixGlobal,0);
vT35=0;
FM_log(0,"unknown Travian Version");
}
}
FM_log(2,"Travian Version is: "+vT35);
return;
} catch (error) {
FM_log(0,"getT35version(): error retrieving Travian35-Version");
}
}
function getStartIndex() {
FM_log(3,"getStartIndex() called");
FM_log(4,"getSIndex suffixLocal="+suffixLocal);
var sIndex = GM_getValue("StartIndex_" + suffixLocal, 0);
FM_log(4,"retrieved sIndex="+sIndex);
return sIndex;
}
function getEndIndex() {
var eIndex = GM_getValue("EndIndex_" + suffixLocal, 0);
return eIndex;
}
function getXYtoFarms(buttonId) {
FM_log(1,"getXYtoFarms("+buttonId+") called");
var xOff = 0, yOff = 0;
if(buttonId!="") {
if (buttonId=="ma_n1") {
xOff = 0; yOff = 1;
} else if (buttonId=="ma_n2") {
xOff = 1; yOff = 0;
} else if (buttonId=="ma_n3") {
xOff = 0; yOff = -1;
} else if (buttonId=="ma_n4") {
xOff = -1; yOff = 0;
} else if (buttonId=="ma_n1p7") {
xOff = 0; yOff = 7;
} else if (buttonId=="ma_n2p7") {
xOff = 7; yOff = 0;
} else if (buttonId=="ma_n3p7") {
xOff = 0; yOff = -7;
} else if (buttonId=="ma_n4p7") {
xOff = -7; yOff = 0;
}
}
FM_log(4,"offsets="+xOff+"/"+yOff);
//get new map center and store it
centerCoords = GM_getValue("MapCenter_"+suffixGlobal,"");
if(centerCoords!="") {
centerCoords = centerCoords.split(',');
FM_log(4,"stored coords:"+centerCoords[0]+","+centerCoords[1]);
} else {
FM_log(4,"no center coords stored");
return;
}
centerX = parseInt(centerCoords[0])+xOff;
centerY = parseInt(centerCoords[1])+yOff;
//store new map Center
FM_log(4,"new mapCenter="+centerX+"/"+centerY);
GM_setValue("MapCenter_"+suffixGlobal,centerX+","+centerY);
var allVillageId = new Array();
var allVillageIdStr = getAllVillageId().toString();
FM_log(4,"allVillageStr="+allVillageIdStr);
if(allVillageIdStr.indexOf(",")<0) {
allVillageId.push(allVillageIdStr);
} else {
allVillageId = allVillageIdStr.split(",");
}
var allData = "", i, farmData;
for (i = 0; i < allVillageId.length; i++) {
farmData = GM_getValue("FarmList_" + suffixGlobal + "_" + allVillageId[i], "");
farmData = trim(farmData);
if(allData !="") allData +=">:)";
allData += farmData;
}
FM_log(4,"allDataString="+allData);
allData = allData.split(">:)");
FM_log(4,"allDatalength="+allData.length);
for (var i = 0; i < allData.length; i++) {
if(allData[i].length>3) {
xyt = allData[i].split("|")[0].split(",");
markFarm(xyt[0], xyt[1]);
}
}
}
function isFarmerVillage(currentVillageId) {
var vList = GM_getValue("FarmerVillages_" + suffixGlobal, "").split(",");
if (vList == "" || vList.length == 0) {
return false;
}
var i;
for (i = 0; i < vList.length; i++) {
if (vList[i].split('~')[0] == currentVillageId) {
return true;
}
}
return false;
}
function isFarm(x,y) {
FM_log(3,"isFarm("+x+","+y+") called");
var allvList = getAllVillageId().toString();
FM_log(4,"allvList="+allvList);
if(allvList != "" && allvList != null) {
var vList = allvList.split(',');
for(i=0; i<vList.length; i++) {
var vId = vList[i];
//Get Farmlist for this village
tList = GM_getValue("FarmList_"+suffixGlobal+"_"+vId, "");
fVillages = tList.split(">:)");
for(j=0; j<fVillages.length; j++) {
vCoords = fVillages[j].split("|")[0];
cooX = vCoords.split(",")[0];
cooY = vCoords.split(",")[1];
if(x==cooX && y== cooY) {
FM_log(4,"it is a farm");
return true;
}
}
}
FM_log(4,"it is not a farm");
return false;
} else {
FM_log(4,"error fetching allvList");
return false;
}
}
function isReallyRallyPoint() {
FM_log(3,"isReallyRallyPoint() called");
// suche muss umgestaltet werden > direkt nach links suchen
var rp_link_overview = dom.xo('//a[contains(@href,"build.php?id=39")]');
var rp_link_sendtroops = dom.xo('//a[contains(@href,"a2b.php")]');
var rp_link_warsim = dom.xo('//a[contains(@href,"warsim.php")]');
FM_log(5,"LinkOverview:"+rp_link_overview.snapshotLength+"/LinkSendtroops:"+rp_link_sendtroops.snapshotLength+"/LinkWarsim:"+rp_link_warsim.
snapshotLength);
if (rp_link_overview.snapshotLength < 1 || rp_link_sendtroops.snapshotLength < 1 || rp_link_warsim.snapshotLength < 1) {
//one of the link was not found
FM_log(4,"isReallyRallyPoint() = false");
return false;
}
FM_log(4,"isReallyRallyPoint() = true");
return true;
}
function getPlayerTribe() { //retrieve Player's tribe
FM_log(3,"getPlayerTribe() called");
var tribe = 0; //roman
if (dom.xs("//img[contains(@src,'x.gif')][@class='unit u1']")) {
tribe = 0;
} else if (dom.xs("//img[contains(@src,'x.gif')][@class='unit u11']")) {
tribe = 1;
} else if (dom.xs("//img[contains(@src,'x.gif')][@class='unit u21']")) {
tribe = 2;
}
return tribe;
}
function getFPlayerName() { //retrieve Farm player's name
FM_log(3,"getFPlayerName() called");
var user = dom.xs("//a[contains(@href,'spieler.php')]/parent::td");
//alert(user);
var playerName = (user) ? user.textContent : '';
playerName = trim(playerName);
//alert(playerName);
return playerName;
}
function getFPlayerId() { //retrieve Farm player's ID
FM_log(3,"getFPlayerId() called");
var user = dom.xs("//a[contains(@href,'spieler.php')][1]");
//alert(user);
var playerId = (user) ? getParamFromUrl(user.href, 'uid') : '';
//alert(playerId);
return playerId;
}
function getFPlayerTribe() { //retrieve Farm player's tribe
FM_log(3,"getFPlayerTribe() called");
var playerLink = dom.xs("//a[contains(@href,'spieler.php')]");
var playerTribe = "";
if (playerLink.snapshotLength<2) { //abandoned area/empty oasis
playerTribe = '';
} else {
playerTribe = dom.xs("//a[contains(@href,'spieler.php?')]/parent::td/parent::tr/parent::tbody/tr[1]/td[last()]").textContent;
}
playerTribe = trim(playerTribe.toLowerCase());
//alert(playerTribe);
FM_log(4,"PlayerTribe="+playerTribe);
return playerTribe;
}
function getCvalue() { //retrieve village c value
var url = document.location.href;
var cValue = getParamFromUrl(url, 'c');
return cValue;
}
function getFVillageCoords() { //retrieve coordinates
FM_log(3,"getFVillageCoords() called");
var playerLink = dom.xs("//a[contains(@href,'spieler.php')]");
var title, coordsObject;
if (playerLink.snapshotLength<2) { //abandoned area/empty oasis
title = "";
coordsObject = dom.xo('//h1').textContent;
} else { //normal village or occupied oasis
title = dom.xs('//h1').textContent;
coordsObject = dom.xo('//h1').textContent;
}
title = title.replace(/^[\s( )]+/g, '').replace(/[\s( )]+$/g, '');
var coords = title.substring(title.lastIndexOf('('));
coords = coords.replace(/[\(\)]/g, '').split('|').join(',')
FM_log(4,"retrieved coords:"+coords);
return coords; //comma sperated
}
function getFVillageName() { //retrieve Farm Village name
FM_log(3,"getFVillageName() called");
var playerLink = dom.xo("//a[contains(@href,'spieler.php')]");
//alert(divcontent);
var title, villageName;
FM_log(2,"playerLink.snapshotLength="+playerLink.snapshotLength);
if (playerLink.snapshotLength<2) { //abandoned area/empty oasis
var villageNameObject = dom.xs('//h1');
title = villageNameObject.textContent;
villageName = title.substring(0, title.lastIndexOf('(')).replace(
/^\s+|\s+$/g, '');
//alert(villageName);
} else {
//normal village or occupied oasis
var villageNameObject = dom.xo("//h1/div");
FM_log(2,"villageNameObject.snapshotLength="+villageNameObject.snapshotLength);
villageName = villageNameObject.snapshotItem(villageNameObject.snapshotLength-1).innerHTML;
}
FM_log(3,"Final villageName="+villageName);
villageName = trim(villageName);
//alert(villageName);
return villageName;
}
function getPlayerId() { //retrieve Player's ID
try {
var user = dom.xs('//*[@id="side_navi"]/p/a[starts-with(@href, "spieler.php?uid=")]');
if(user==null) {
//old id-tag
user = dom.xs('//*[@id="sleft"]/p/a[starts-with(@href, "spieler.php?uid=")]');
}
var playerID = (user) ? getParamFromUrl(user.href, 'uid') : '';
FM_log(3,"Fetched userid");
return playerID;
} catch(error) {
FM_log(0,"getPlayerId(): error retrieving ID");
}
}
function getActiveVillageId() { //retrieve ID of active Village from Villagelist
try {
FM_log(3,"getActiveVillageId() called");
var xy = getActiveVillageXY();
return xy2id(xy[0], xy[1]);
} catch(error) {
FM_log(0,"getActiveVillageId(): error retrieving ID");
}
}
function getAllVillageId() { //retrieve IDs of all Villages
try {
FM_log(1,"getAllVillageId() called");
//get Travian Version
vT35 = GM_getValue("TravianVersion_" + suffixGlobal, 0);
//Look for villageTable
citiesExp = "//a[contains(@href,'newdid')]/parent::td/parent::tr/parent::tbody";
var cities = dom.find(citiesExp,XPFirst);
if (!cities) {
FM_log(4,"no villageTable");
//no villageTable
return getActiveVillageId();
} else {
FM_log(4,"villageTable existing");
var idList = "", i;
//check number of villages
var nVillages = cities.childNodes.length -1;
FM_log(4,nVillages+" villages");
if(nVillages>1) {
FM_log(4,"more than 1 village");
for (var i = 1; i <= nVillages; i++) {
if(vT35==1) {
cityExp1 = citiesExp + "/tr["+i+"]/td[@class='x']";
cityExp2 = citiesExp + "/tr["+i+"]/td[@class='y']";
} else if (vT35==2) {
cityExp1 = citiesExp + "/tr["+i+"]/td/div[@class='cox']";
cityExp2 = citiesExp + "/tr["+i+"]/td/div[@class='coy']";
}
FM_log(4,"cityExp1:"+cityExp1);
FM_log(4,"cityExp2:"+cityExp2);
if(dom.xs(cityExp1)!=null) {
X = dom.xs(cityExp1).textContent.match(/[-\d]+/);
Y = dom.xs(cityExp2).textContent.match(/[-\d]+/);
} else {
FM_log(2,"Travian Beyond table conflicting");
if(vT35==1) {
TBExp1 = citiesExp + "/tr["+i+"]/td[@class='x']";
TBExp2 = citiesExp + "/tr["+i+"]/td[@class='y']";
} else {
TBExp1 = citiesExp + "/tr["+i+"]//td[@class='cox']";
TBExp2 = citiesExp + "/tr["+i+"]//td[@class='coy']";
}
FM_log(4,"TBExp1="+TBExp1);
FM_log(4,"TBExp2="+TBExp2);
X = dom.xs(TBExp1).textContent.match(/[-\d]+/);
Y = dom.xs(TBExp2).textContent.match(/[-\d]+/);
}
if (i > 1)
idList += ",";
idList += xy2id(X, Y);
}
} else { //TBeyond table
FM_log(4,"only 1 village - TBeyond table");
cityExp1 = citiesExp + "/tr[1]/td[@class='x']";
cityExp2 = citiesExp + "/tr[1]/td[@class='y']";
if(dom.xs(cityExp1)==null) {
cityExp1 = citiesExp + "/tr[1]//td[@class='cox']";
cityExp2 = citiesExp + "/tr[1]//td[@class='coy']";
}
X = dom.xs(cityExp1).textContent.match(/[-\d]+/);
Y = dom.xs(cityExp2).textContent.match(/[-\d]+/);
idList += xy2id(X, Y);
}
FM_log(4,"idList="+idList);
return idList;
}
} catch(error) {
FM_log(0,"getAllVillageId(): Error retrieving all village IDs");
}
}
function getActiveVillageXY() { //retrieve coordinates of active Village from Villagelist
try {
FM_log(3,"getActiveVillageXY() called");
//get Travian Version
vT35 = GM_getValue("TravianVersion_" + suffixGlobal, 0);
var xy = new Array();
if(vT35 == 1) {
// old search strings for de-servers
FM_log(4,"old T35 version");
var ex1 = "//tr[@class='sel']";
var ex1_1 = "//tr[@class='sel']/td[@class='x']";
var ex1_2 = "//tr[@class='sel']/td[@class='y']";
} else if (vT35 == 2) {
//new T35-Version
FM_log(4,"new T35 version");
var ex1 = "//td[@class='dot hl']/parent::tr";
var ex1_1 = "//td[@class='dot hl']/parent::tr/td/div[@class='cox']";
var ex1_2 = "//td[@class='dot hl']/parent::tr/td/div[@class='coy']";
if(dom.xs(ex1_1)==null) { //different Version: it9
ex1_1 = "//td[@class='dot hl']/parent::tr//td[@class='cox']";
ex1_2 = "//td[@class='dot hl']/parent::tr//td[@class='coy']";
}
FM_log(4,"ex1: "+ex1);
} else {
FM_log(0,"unknown Travian Version");
}
var villageNode = dom.xo(ex1);
FM_log(5,"villageNode.snapshotLength="+villageNode.snapshotLength);
if (villageNode.snapshotLength > 0) {
FM_log(3,"villageTable existing");
xy.push(dom.xs(ex1_1).textContent.match(/[-\d]+/));
xy.push(dom.xs(ex1_2).textContent.match(/[-\d]+/));
} else {
FM_log(3,"villageTable not existing - Single Village Account");
xy.push("");
xy.push("");
}
//alert(xy);
if (xy[0] == "" || xy[1] == "") {
//single Village
var singleVillageXY = GM_getValue('SingleVillageXY_' + suffixGlobal, '');
if (!singleVillageXY || singleVillageXY == '') {
//grab coordinates for the first time
xy = getSingleVillageXY();
} else {
xy = singleVillageXY.split(",");
}
}
FM_log(4,"retrieved coords: X="+xy[0]+"/Y="+xy[1]);
return xy;
} catch(error) {
FM_log(0,"getActiveVillageXY(): error retrieving coordinates");
}
}
function getSingleVillageXY() { //retrieve coordinates for single village account
try {
var url = document.URL;
url = url.substring(0, url.lastIndexOf('/') + 1);
url = url + 'karte.php';
GM_xmlhttpRequest({
method : 'GET',
url : url,
onload : function(responseDetails) {
if (responseDetails.status != 200)
return new Array(0, 0);
var div = dom.cn('div', responseDetails.responseText);
var ansDoc = document.implementation.createDocument('', '', null);
ansDoc.appendChild(div);
var x = ansDoc.getElementById('x').firstChild.nodeValue;
var y = ansDoc.getElementById('y').firstChild.nodeValue;
var singleVillageCoords = x + ',' + y;
GM_setValue('SingleVillageXY_' + suffixGlobal, singleVillageCoords);
return new Array(x, y);
}
});
} catch(error) {
FM_log(0,"getSingleVillageXY(): error retrieving coordinates");
}
}
function xy2id(x, y) { //calculate village ID from coordinates
return (1 + (parseInt(x) + 400) + (801 * Math.abs(parseInt(y) - 400)));
}
function id2xy(id) { //calculate village coordinates from ID
var x = (id % 801) - 401;
var y = 400 - (id - 401 - x) / 801;
return {
x : x,
y : y
};
}
/**
* getParamFromUrl
* @param {String} url The string of the URL
* @param {String} urlParam The param being searched in the URL
*/
function getParamFromUrl(url, urlParam) {
var res = "&" + url.substring(url.indexOf("?") + 1); //exclude "?" and before that
var searchStr = "&" + urlParam + "=";
var pos = res.indexOf(searchStr);
if (pos != -1) {
res = res.substring(res.indexOf(searchStr) + searchStr.length);
var endPos = (res.indexOf("&") > res.indexOf("#"))
? res.indexOf("&")
: res.indexOf("#");
if (endPos != -1) {
res = res.substring(0, endPos);
}
return res;
} else {
return null;
}
}
//message window functions
/**
* set text message to the runningDiv. If title is blank then it append the message with the previous message
* @param {} titleStr
* @param {} messageStr
*/
function drawMessageBox() {
FM_log(3,"drawMessageBox() called");
runningDiv = dom.cn("div"); //global
runningDiv
.setAttribute(
"style",
"text-align:center; margin:auto; position:absolute; top:"+400+"px; left:"+700+"px; width:320px; height:180px; background-color: #F8F8FF; border: 2px solid #c0c0c0; -moz-border-radius: 5px; z-index:"+zIndex);
var tempDiv = dom.cn("div");
tempDiv
.setAttribute(
"style",
"font-size:12px; margin-bottom:6px; font-weight:bold; color:red; border-bottom: 1px solid #c0c0c0; padding: 3px 0 3px 0;");
tempDiv.innerHTML = T('MACHINE_RUNNING') + "...";
runningDiv.appendChild(tempDiv);
var textDiv = dom.cn("div");
textDiv
.setAttribute(
"style",
"text-align:center; font-size:10px; margin:auto; overflow: auto; height:90px; border-bottom: 1px solid #c0c0c0;");
runningDiv.appendChild(textDiv);
tempDiv = dom.cn("div");
tempDiv.setAttribute("style",
"font-size: 10px; border-bottom: 1px solid #c0c0c0; margin:4px 0 4px 0; height: 16px;");
tempDiv.innerHTML = " ";
runningDiv.appendChild(tempDiv);
var pushButton = createInputButton("button", T("Halt_Farming"), function() {
stopEngine();
});
runningDiv.appendChild(pushButton);
document.body.appendChild(runningDiv);
}
function setAttackMessage() {
FM_log(3,"setAttackMessage() called");
prioque = GM_getValue('priorityqueue'+ suffixLocal, '').split('>:)');
fque = GM_getValue('farmqueue'+ suffixLocal, '').split('>:)');
if (prioque.length >= 1 && prioque[0].length > 2)
{
FM_log(3,"priority attack");
var arr = prioque[0].split("|");
priorityAttack = true;
attackList = prioque
}else{
var arr = fque[0].split("|");
attackList = fque;
priorityAttack = false;
}
tX = arr[0].split(",")[0];
tY = arr[0].split(",")[1];
sIndex = getSindexFromXY(tX,tY, suffixLocal);
var titleStr = T("Going_to")
+ " "
+ (arr[8] == 2 ? T("Reinforce") : (arr[8] == 3
? T("Attack")
: T("Raid")));
var messageStr = "["+sIndex+"] "+E2C(arr[3]) + " - "; // FPlayerName
messageStr += E2C(arr[5]);
messageStr += "<b>(" + arr[0] + ")</b><br>"; // X,Y
messageStr += T("Used_Troops") + ": ";
arr[1] = arr[1].split(",");
if (parseInt(arr[1][0])) {
messageStr += " : " + arr[1][0] + " ";
}
for (var i = 1; i < 10; i++) {
if (parseInt(arr[1][i]) > 0) {
messageStr += " " + arr[1][i] + " ";
}
}
setTextMessage(titleStr, messageStr);
}
function setTextMessage(titleStr, messageStr) {
if (titleStr != "") {
runningDiv.childNodes[1].innerHTML = "<div style='font-size:14px; font-weight:bold; color:black'>"
+ titleStr + "</div>";
}
runningDiv.childNodes[1].innerHTML += messageStr + "<br>";
var attackCount = GM_getValue("Active_" + suffixGlobal, 0);
runningDiv.childNodes[2].innerHTML = T('SUCCESS_COUNT') + ": "
+ attackCount;
}
//add farm pop up
function insertEditFarmBox() {
FM_log(3,"insertEditFarmBox() called");
var i;
div = document.createElement('div');
div.id = "popupFarmEditBox";
div.style.visibility = 'hidden';
div.style.zIndex = 100;
div.style.position = 'absolute';
div.style.borderWidth = '1px';
div.style.top = '600px';
div.style.left = '150px';
//getting default troops
tempTroops = defTroops.split(',');
FM_log(4,"tempTroops arraysize="+tempTroops.length);
if(tempTroops.length!=11) {
defTroops = "0,0,0,0,0,0,0,0,0,0,0";
tempTroops = defTroops.split(',');
}
var text = "<fieldset style='background-color: #F8F8FF; border: 1px solid #C0C0C0; -moz-border-radius: 10px;'>"
+ "<legend style='background-color: #F4F7EC; border-top: 1px solid #C0C0C0; -moz-border-radius: 2px;'>Add/Edit Farm</legend>"
+ "<img src='img/x.gif' class='unit u" + (user_race)
+ "'>:<input type='text' size='1' value='" + tempTroops[0] + "' id='t1'>";
for (i = 1; i < 10; i++) {
text += "<img src='/img/x.gif' class='unit u" + (user_race + i)
+ "'>:<input type='text' size='1' value='" + tempTroops[i] + "' id='t"
+ (i + 1) + "'>";
}
text += "<img src='/img/x.gif' class='unit uhero'>:<input type='text' size='1' value='" + tempTroops[10] + "' id='t"
+ (10 + 1) + "'>";
text += "<br/>"
+ "<input type='radio' id='radio2' name='AttackType' value='2' />"
+ T("Reinforce")
+ "<input type='radio' id='radio3' name='AttackType' value='3' />"
+ T("Attack")
+ "<input type='radio' id='radio4' name='AttackType' checked='true' value='4' />"
+ T("Raid")
+ "<br />"
+ "<input type='checkbox' checked='true' id='activeCheck' />"
+ T("Active_Farm")
+ "<br />"
+ "<input style='float: right;' id='FMcancelButton' type='submit' value="
+ T('Cancel')
+ " />"
+ "<input style='float: right;' id='FMsaveButton' type='submit' value="
+ T('Save') + " /></fieldset>";
div.innerHTML = text;
document.body.appendChild(div);
dom.get('FMcancelButton').addEventListener('click', hidePopupFarmEditBox,
true);
FM_log(3,"FarmEditBox Insert done");
//Add the event listener for Save button in appropiate place :)
}
function showPopupFarmEditBox() {
var farmEditBox = null;
if ((farmEditBox = document.getElementById('popupFarmEditBox')) == null
|| farmEditBox == "undefined") {
return;
}
farmEditBox.style.visibility = "visible";
}
function hidePopupFarmEditBox() {
var farmEditBox = null;
if ((farmEditBox = document.getElementById('popupFarmEditBox')) == null
|| farmEditBox == "undefined") {
return;
}
farmEditBox.style.visibility = "hidden";
}
//set up options
function rp_setStartIndex(index) {
GM_setValue("StartIndex_" + suffixLocal, index);
}
function rp_setEndIndex(index) {
GM_setValue("EndIndex_" + suffixLocal, index);
}
function rp_removeEndIndex() {
GM_setValue("EndIndex_" + suffixLocal, -1);
reloadFarmTable();
}
function setVillageSkipping() { //Option VillageSkipping
var vilSkip = GM_getValue("VillageSkipping_" + suffixGlobal, -1);
if (vilSkip == 1) {
GM_setValue("VillageSkipping_" + suffixGlobal, 0);
} else {
GM_setValue("VillageSkipping_" + suffixGlobal, 1);
}
}
function setFarmMarking() { //Option Farm marking
var farmMark = GM_getValue("farmMarking_" + suffixGlobal, -1);
if (farmMark == 1) {
GM_setValue("farmMarking_" + suffixGlobal, 0);
} else {
GM_setValue("farmMarking_" + suffixGlobal, 1);
}
}
function setRandomFarming() { //Option Randomize
var random = GM_getValue("RandomFarming_" + suffixGlobal, -1);
if (random == 1) {
GM_setValue("RandomFarming_" + suffixGlobal, 0);
} else {
GM_setValue("RandomFarming_" + suffixGlobal, 1);
}
}
function setDelTList() { //Option Delete Temporary List
var DelTList = GM_getValue("DelTList_" + suffixGlobal, -1);
if (DelTList == 1) {
GM_setValue("DelTList_" + suffixGlobal, 0);
} else {
GM_setValue("DelTList_" + suffixGlobal, 1);
}
}
function setDynamicTroopCount() { //Option Dynamic Troop Count
var DelTList = GM_getValue("DynamicTroopCount_" + suffixGlobal, -1);
if (DelTList == 1) {
GM_setValue("DynamicTroopCount_" + suffixGlobal, 0);
} else {
GM_setValue("DynamicTroopCount_" + suffixGlobal, 1);
}
}
function setReadRep() { //Option Read Reports
var ReadRep = GM_getValue("ReadRep_" + suffixGlobal, -1);
if (ReadRep == 1) {
GM_setValue("ReadRep_" + suffixGlobal, 0);
} else {
GM_setValue("ReadRep_" + suffixGlobal, 1);
}
}
function min_max_settings() { //shows / hides the settings part
if (GM_getValue("MaximizeSettings_" + suffixGlobal, 0) == 0) {
GM_setValue("MaximizeSettings_" + suffixGlobal, 1);
} else {
GM_setValue("MaximizeSettings_" + suffixGlobal, 0);
}
reloadFarmTable();
}
function rp_min_max() { //minimizes / maximizes the farming list
if (GM_getValue("Maximize_" + suffixGlobal, 0) == 0) {
GM_setValue("Maximize_" + suffixGlobal, 1);
} else {
GM_setValue("Maximize_" + suffixGlobal, 0);
}
reloadFarmTable();
}
// Auto Login
function loginCheck()
{
if (GM_getValue('wearein') == 1) {
location.href = rootPath+"build.php?id=39";
GM_setValue('wearein', 0);
}
if (document.getElementsByName('login'))
{
var ex = ".//input[@value='login']";
tag = document.evaluate( ex, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var ex = ".//input[@type='password' and contains(@value, '*')]";
tag2 = document.evaluate( ex, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
if(tag.snapshotLength && tag2.snapshotLength)
{
loginButton = tag.snapshotItem(0);
loginButton.click();
GM_setValue('wearein', 1);
}
}
}
var ex = "id('errorTitleText')";
tag = document.evaluate( ex, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var ex2 = "id('content')/p[2]/a[contains(@href, 'del_cookie')]";
tag2 = document.evaluate( ex2, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
if (tag.snapshotLength > 0) {
setTimeout("window.location.replace('" + rootPath + "build.php?id=39')", 3000);
} else if (tag2.snapshotLength > 0) {
setTimeout("window.location.replace('" + rootPath + "login.php')", 3000);
} else {
loginCheck();
}
//Update
function updateFM(SCRIPT) {
var loadImg = dom.cn("img");
loadImg.src = image['LOADING'];
var updater = dom.get("updater");
updater.appendChild(loadImg);
try {
/*if (!GM_getValue)
return;*/
GM_xmlhttpRequest({
method : 'GET',
url : SCRIPT.url + '?source',
onload : function(result) {
updater.removeChild(loadImg);
if (result.status != 200) {
alert(T("UPDATE_M1"));
return;
}
if (!result.responseText.match(/@version\s+([\d.]+)/)) {
alert(T('UPDATE_UNKNOWN') + " v" + RegExp.$1);
return;
}
var onlineVersion = RegExp.$1;
var currentVersion = SCRIPT.version;
if (onlineVersion == SCRIPT.version) {
alert(T('UPDATE_LAST') + " " + T("Script_name") + ' (v'
+ onlineVersion + ')');
return;
} else {
currentVersion = currentVersion.split(".");
var onlineArray = onlineVersion.split(".");
if (currentVersion[0] <= onlineArray[0]
|| currentVersion[1] <= onlineArray[1]
|| currentVersion[2] <= onlineArray[2]) {
var messageStr = "";
if (onlineArray[2] != 0) {
messageStr = T('UPDATE_BETA');
} else {
messageStr = T('UPDATE_NEW') + " v" + onlineVersion;
}
if (confirm(messageStr + "\n\n" + T('CONFIRM') + ":"
+ T('UPDATE_NOW') + "?")) {
window.location.href = SCRIPT.url;
GM_setValue("Tribe_" + suffixGlobal, -1);
}
}
}
}
});
} catch (ex) {
alert("AJAX request Exception! Try later.");
}
}
//insert elements
function rp_insertTable() {
FM_log(3,"rp_insertTable() called");
var farmTable = dom.cn("table");
var ftableBody = dom.cn("tbody");
var i;
var maximize = GM_getValue("Maximize_" + suffixGlobal, 0);
farmTable.className = "FMtbg";
farmTable.id = "farmMachineTable";
farmTable.setAttribute('cellpadding', 0);
farmTable.setAttribute('cellspacing', 0);
farmTable.style.marginBotton = "12px";
//top row
var tableRow = dom.cn("tr");
tableRow.className = "cbg1";
var tableCol = dom.cn("td");
tableCol.setAttribute("colspan", 15);
var Button = dom.cn("div");
Button.id = "updater";
Button.setAttribute("style", "margin:auto; width: 477px;");
Button.appendChild(createLinkButton(T('UPDATE_M') + " " + T('SCRIPT_NAME'), T('UPDATE_M') + " "
+ T('SCRIPT_NAME'), function() {
updateFM(SCRIPT);
}));
tableCol.appendChild(Button);
tableRow.appendChild(tableCol);
//Add Minimize||Maximize button
tableCol = dom.cn("td");
var img = dom.cn("img");
if (maximize) {
img.src = image['MINIMIZE']; //add minimize image
img.title = T("Minimize");
} else {
img.src = image['MAXIMIZE']; //add minimize image
img.title = T("Maximize");
}
img.style.height = '16px';
img.style.width = '30px';
img.style.cursor = "pointer";
Button = dom.cn("div");
Button.setAttribute("style", "width:30px;float:right;");
Button.appendChild(img);
Button.addEventListener('click', function() {
rp_min_max();
}, 0);
tableCol.appendChild(Button);
tableRow.appendChild(tableCol);
ftableBody.appendChild(tableRow); //adding the top row
//********************************
// option row
tableRow = dom.cn("tr");
tableRow.className = "cbg1";
tableCol = dom.cn("td");
tableCol.setAttribute("colspan", 15);
if(GM_getValue("MaximizeSettings_" + suffixGlobal, 0)==1) {
tableRow = dom.cn("tr");
tableRow.className = "cbg1";
tableCol = dom.cn("td");
tableCol.setAttribute("colspan", 16);
var settingsTable = dom.cn('table');
settingsTable.width = "100%";
settingsTable.setAttribute("margin-bottom",10);
//1st option: randomiz farming
var setRowRandomize = dom.cn('tr');
var setRandomizeC1 = dom.cn('td');
setRandomizeC1.width = 20;
RandomButton = createInputButton("checkbox", 0, setRandomFarming);
var random = GM_getValue("RandomFarming_" + suffixGlobal, 0);
if (random == 1) {
RandomButton.checked = true;
}
setRandomizeC1.appendChild(RandomButton);
var setRandomizeC2 = dom.cn('td');
setRandomizeC2.innerHTML = T('SETRANDOMIZE');
setRowRandomize.appendChild(setRandomizeC1);
setRowRandomize.appendChild(setRandomizeC2);
//2nd option: delete temporary list
var setRowDelTList = dom.cn('tr');
var setTListC1 = dom.cn('td');
setTListC1.width = 20;
TListButton = createInputButton("checkbox", 0, setDelTList);
var TList = GM_getValue("DelTList_" + suffixGlobal, 0);
if (TList == 1) {
TListButton.checked = true;
}
setTListC1.appendChild(TListButton);
var setTListC2 = dom.cn('td');
setTListC2.innerHTML = T('SETDELTLIST');
setRowDelTList.appendChild(setTListC1);
setRowDelTList.appendChild(setTListC2);
//3rd option: read reports to make a priority queue
var setRowReadRep = dom.cn('tr');
var setReadRepC1 = dom.cn('td');
setReadRepC1.width = 20;
ReadRepButton = createInputButton("checkbox", 0, setReadRep);
var ReadRep = GM_getValue("ReadRep_" + suffixGlobal, 0);
if (ReadRep == 1) {
ReadRepButton.checked = true;
}
setReadRepC1.appendChild(ReadRepButton);
var setReadRepC2 = dom.cn('td');
setReadRepC2.innerHTML = T('SETREADREP');
setRowReadRep.appendChild(setReadRepC1);
setRowReadRep.appendChild(setReadRepC2);
//4th option: skipping of Villages
var setRowVilSkip = dom.cn('tr');
var setVilSkipC1 = dom.cn('td');
setVilSkipC1.width = 20;
SkipButton = createInputButton("checkbox", 0, setVillageSkipping);
var vilSkip = GM_getValue("VillageSkipping_" + suffixGlobal, 0);
if (vilSkip == 1) {
SkipButton.checked = true;
}
setVilSkipC1.appendChild(SkipButton);
var setVilSkipC2 = dom.cn('td');
setVilSkipC2.innerHTML = T('SETVILSKIP');
setRowVilSkip.appendChild(setVilSkipC1);
setRowVilSkip.appendChild(setVilSkipC2);
//5th option: marking of Farms
var setRowFarmMark = dom.cn('tr');
var setFarmMarkC1 = dom.cn('td');
setFarmMarkC1.width = 20;
farmMarkButton = createInputButton("checkbox", 0, setFarmMarking);
var farmMark = GM_getValue("farmMarking_" + suffixGlobal, 0);
if (farmMark == 1) {
farmMarkButton.checked = true;
}
setFarmMarkC1.appendChild(farmMarkButton);
var setFarmMarkC2 = dom.cn('td');
setFarmMarkC2.innerHTML = T('FARMMARKING');
setRowFarmMark.appendChild(setFarmMarkC1);
setRowFarmMark.appendChild(setFarmMarkC2);
//6th option: Adjust Troop Count
var setRowDynamicTroopCount = dom.cn('tr');
var setDynamicTroopCountC1 = dom.cn('td');
setDynamicTroopCountC1.width = 20;
DynamicTroopCountButton = createInputButton("checkbox", 0, setDynamicTroopCount);
var DynamicTroopCount = GM_getValue("DynamicTroopCount_" + suffixGlobal, 0);
if (DynamicTroopCount == 1) {
DynamicTroopCountButton.checked = true;
}
setDynamicTroopCountC1.appendChild(DynamicTroopCountButton);
var setDynamicTroopCountC2 = dom.cn('td');
setDynamicTroopCountC2.innerHTML = T('DYNAMICTROOPCOUNT');
setRowDynamicTroopCount.appendChild(setDynamicTroopCountC1);
setRowDynamicTroopCount.appendChild(setDynamicTroopCountC2);
// adding settingRows to the table
settingsTable.appendChild(setRowRandomize);
settingsTable.appendChild(setRowDelTList);
settingsTable.appendChild(setRowReadRep);
settingsTable.appendChild(setRowVilSkip);
settingsTable.appendChild(setRowFarmMark);
settingsTable.appendChild(setRowDynamicTroopCount);
// add table
tableCol.appendChild(settingsTable);
tableRow.appendChild(tableCol);
ftableBody.appendChild(tableRow); //add to table
}
// end option row
//second row
tableRow = dom.cn("tr");
tableRow.className = "cbg1";
tableCol = dom.cn("td");
tableCol.setAttribute("colspan", 16);
tableCol.appendChild(createInputButton("submit", T('START_FARMING'),
startEngine));
tableRow.appendChild(tableCol);
ftableBody.appendChild(tableRow); //adding the second row
//third row
tableRow = dom.cn("tr");
tableRow.className = "cbg1";
//start
tableCol = dom.cn("td");
tableCol.innerHTML = "<div style='cursor:help;' class='b' title='"
+ T('START_M') + "'>S</div>";
tableRow.appendChild(tableCol);
tableCol = dom.cn("td");
//tableCol.innerHTML = "<div style='cursor:pointer;' class='b' title='Select End Position'>E</div>";
//tableCol.addEventListener("click",rp_removeEndIndex,false);
tableCol.appendChild(createLinkButton("E", T('END_M'), rp_removeEndIndex));
tableRow.appendChild(tableCol);
tableCol = dom.cn("td");
tableCol.innerHTML = "<div style='cursor:help;' class='b' title='"
+ T('EDIT_M') + "'>E</div>";
tableRow.appendChild(tableCol);
tableCol = dom.cn("td");
tableCol.innerHTML = "<div style='cursor:help;' class='b' title='"
+ T('DELETE_M') + "'>D</div>";
tableRow.appendChild(tableCol);
tableCol = dom.cn("td");
tableCol.width = "35%";
tableCol.appendChild(createLinkButton(T('FARM') + " ↓",
T('SORT_FARM'), sortFarms));
tableRow.appendChild(tableCol);
tableCol = dom.cn("td");
tableCol.innerHTML = '<td><img src="img/x.gif" class="unit u' + user_race + '"></td>';
tableRow.appendChild(tableCol);
for (i = 1; i < 10; i++) {
tableCol = dom.cn("td");
tableCol.innerHTML = '<td><img src="img/x.gif" class="unit u' + (user_race + i)
+ '"></td>';
tableRow.appendChild(tableCol);
}
tableCol = dom.cn("td");
tableCol.innerHTML = '<td><img src="img/x.gif" class="unit uhero"></td>';
tableRow.appendChild(tableCol);
ftableBody.appendChild(tableRow); //adding the 3rd row
//add List
//getting first farm in list for sIndex
prioque = GM_getValue('priorityqueue'+ suffixLocal, '').split('>:)');
fque = GM_getValue('farmqueue'+ suffixLocal, '').split('>:)');
if (prioque.length >= 1 && prioque[0].length > 2)
{
var arr = prioque[0].split("|");
var tX = arr[0].split(",")[0];
var tY = arr[0].split(",")[1];
var sIndex = getSindexFromXY(tX,tY, suffixLocal);
} else if (fque.length >= 1 && fque[0].length > 2){
var arr = fque[0].split("|");
var tX = arr[0].split(",")[0];
var tY = arr[0].split(",")[1];
var sIndex = getSindexFromXY(tX,tY, suffixLocal);
} else {
sIndex = getStartIndex();
}
FM_log(4,"starting farmrows for: "+suffixLocal);
farmList = GM_getValue("FarmList_" + suffixLocal, "");
totalTroops = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
if (farmList != "" && farmList != null) {
farmList = farmList.split(">:)");
var eIndex = getEndIndex();
FM_log(3,"sIndex="+sIndex+"/eIndex="+eIndex);
if (farmList.length > 0) {
for (i = 0; i < farmList.length; i++) {
if (maximize == 1) {
tableRow = rp_createFarmRow(i, sIndex, eIndex);
if (tableRow != null) {
ftableBody.appendChild(tableRow);
}
} else { //the i have to count totalTroops here
var arr = farmList[i].split("|");
if (arr[7] == 'true') {
arr[1] = arr[1].split(",");
for (var j = 0; j < arr[1].length; j++) {
totalTroops[j] += parseInt(arr[1][j]);
}
}
}
}
}
} else {
tableCol = dom.cn("td");
tableCol.setAttribute("colspan", 16);
tableCol.innerHTML = "<div style='margin: auto;'>" + T('NO_FARM_YET')
+ "</div>";
ftableBody.appendChild(tableCol);
}
//bottom row
tableRow = dom.cn("tr");
tableRow.className = "cbg1";
tableCol = dom.cn("td");
tableCol.setAttribute("colspan", 5);
//Optimize button
img = dom.cn("img");
img.src = image['OPTIMIZE'];
img.title = T('OPTIMIZE_M');
img.style.height = '16px';
img.style.width = '16px';
img.style.cursor = "pointer";
Button = dom.cn("div");
Button.setAttribute("style", "width:16px;float:left;");
Button.appendChild(img);
Button.addEventListener('click', function() {
optimizeFarmsByDistance();
}, 0);
tableCol.appendChild(Button);
//add space
Button = dom.cn("div");
Button.innerHTML = " ";
Button.setAttribute("style", "width:5px;float:left;");
tableCol.appendChild(Button);
//Import/Export Button
img = dom.cn("img");
img.src = image['IM_EXPORT'];
img.title = T('LOCAL_IM_EX_M');
img.style.height = '16px';
img.style.width = '16px';
img.style.cursor = "pointer";
Button = dom.cn("div");
Button.setAttribute("style", "width:16px;float:left;");
Button.appendChild(img);
Button.addEventListener('click', function() {
importExport();
}, 0);
tableCol.appendChild(Button);
//add space
Button = dom.cn("div");
Button.innerHTML = " ";
Button.setAttribute("style", "width:5px;float:left;");
tableCol.appendChild(Button);
//globalImportExport
img = dom.cn("img");
img.src = image['GIM_EXPORT'];
img.title = T('GLOBAL_IM_EX_M');
img.style.height = '16px';
img.style.width = '16px';
img.style.cursor = "pointer";
Button = dom.cn("div");
Button.setAttribute("style", "width:16px;float:left;");
Button.appendChild(img);
Button.addEventListener('click', function() {
globalImportExport();
}, 0);
tableCol.appendChild(Button);
//add space
Button = dom.cn("div");
Button.innerHTML = " ";
Button.setAttribute("style", "width:5px;float:left;");
tableCol.appendChild(Button);
//Delete Farm list Button
img = dom.cn("img");
img.src = image['DELTEMPLIST'];
img.title = T('DELTEMPLIST');
img.style.height = '16px';
img.style.width = '16px';
img.style.cursor = "pointer";
Button = dom.cn("div");
Button.setAttribute("style", "width:16px;float:left;");
Button.appendChild(img);
Button.addEventListener('click', function() {
clearque();
alert("Farmlist and Prioritylist deleted");
}, 0);
tableCol.appendChild(Button);
//add space
Button = dom.cn("div");
Button.innerHTML = " ";
Button.setAttribute("style", "width:5px;float:left;");
tableCol.appendChild(Button);
//Settings Button
img = dom.cn("img");
img.src = image['SETTINGS'];
img.title = T('UPDATE_SETTINGS');
img.style.height = '16px';
img.style.width = '16px';
img.style.cursor = "pointer";
Button = dom.cn("div");
Button.setAttribute("style", "width:16px;float:left;");
Button.appendChild(img);
Button.addEventListener('click', function() {
min_max_settings();
}, 0);
tableCol.appendChild(Button);
//append the row in the table
tableRow.appendChild(tableCol);
for (i = 0; i < 11; i++) {
tableCol = dom.cn("td");
tableCol.innerHTML = totalTroops[i];
tableRow.appendChild(tableCol);
}
ftableBody.appendChild(tableRow);
farmTable.appendChild(ftableBody);
var container = dom.get("content");
container.appendChild(farmTable);
}
function rp_createFarmRow(index, sIndex, eIndex) {
FM_log(3,"rp_createFarmRow() called");
var arr = farmList[index].split("|");
var troops = arr[1], i;
//alert(troops);
if (!(troops == null || troops == "")) {
var tableRow = dom.cn("tr"); //the row
FM_log(3,"rp_createFarmRow: Row Create Start");
if (index % 2 == 1) {
tableRow.style.backgroundColor = "#F8F8F0";
}
if (arr[7] == "false") {
tableRow.className = "inactive";
}
var tableCol = dom.cn("td"); //cell 1
//create start radio button
var Button = createInputButton("radio", index);
Button.name = "StartIndex";
Button.addEventListener("click", function() {
rp_setStartIndex(index);
}, false);
if (sIndex == index)
Button.checked = true;
tableCol.appendChild(Button);
tableRow.appendChild(tableCol); // add the cell
tableCol = dom.cn("td"); //cell 2
//create End radio button
Button = createInputButton("radio", index);
Button.name = "EndIndex";
Button.addEventListener("click", function() {
rp_setEndIndex(index);
}, false);
if (eIndex == index)
Button.checked = true;
tableCol.appendChild(Button);
tableRow.appendChild(tableCol); // add the cell
var img;
//create Edit button
img = dom.cn("img");
img.src = image['EDIT'];
img.title = T('EDIT_FARM');
img.setAttribute("style",
"height: 14px; width:14px; cursor: 'pointer';");
Button = dom.cn("div");
Button.appendChild(img);
Button.addEventListener('click', createEditFarmCallback(index), 0); //adding clicking event
tableCol = dom.cn("td");
tableCol.appendChild(Button);
tableRow.appendChild(tableCol);
//create Delete button
img = dom.cn("img");
img.src = image['DELETE'];
img.title = T('DELETE_FARM');
img.setAttribute("style",
"height: 14px; width:14px; cursor: 'pointer';");
Button = dom.cn("div");
Button.appendChild(img);
//Button.addEventListener("mouseup", function(this){moveEditFarmBox(this)},0);
Button.addEventListener('click', createRemoveFarmCallback(index), 0); //adding clicking event
tableCol = dom.cn("td");
tableCol.appendChild(Button);
tableRow.appendChild(tableCol);
//Farm
tableCol = dom.cn("td");
var xy = arr[0].split(",");
var fvillageId = xy2id(parseInt(xy[0]), parseInt(xy[1]));
//alert(fvillageId);
//alert(arr[3]);
if(arr[6]!="$") {
tableCol.innerHTML = "<div style='text-align:left;'>[" + index
+ "] "
/*+"<a href='spieler.php?uid="+arr[4]+"'>"+E2C(arr[3])+"</a> "*/
+ "<a href='/karte.php?d=" + fvillageId + "&c=" + arr[6]
+ "' title='" + E2C(arr[3]) + " : " + E2C(arr[5]) + "'>("
+ xy[0] + "|" + xy[1] + ")</a>" + "</div>";
} else {tableCol.innerHTML = "<div style='text-align:left;'>[" + index
+ "] "
+ "<a href='/karte.php?z=" + fvillageId + "' title='" + E2C(arr[3]) + " : " + E2C(arr[5]) + "'>("
+ xy[0] + "|" + xy[1] + ")</a>" + "</div>";
}
tableRow.appendChild(tableCol);
troops += " ";
troops = troops.split(',');
FM_log(3,"rp_createFarmRow: troops Get splited by comma");
for (i = 0; i <= 10; i++) {
tableCol = dom.cn("td");
tableCol.innerHTML = troops[i];
if (arr[7] == 'true') { //only count active troops
totalTroops[i] += parseInt(troops[i]);
}
tableRow.appendChild(tableCol);
}
FM_log(3,"rp_createFarmRow: Returing the row");
return tableRow;
} else {
if (confirm(index + " " + T('INVALID_FARM'))) {
farmRemove(index);
}
return null;
}
}
function createLinkButton(text, title, jsFunction) {
var button = dom.cn("a");
button.href = "javascript:void(0)";
button.innerHTML = text;
button.title = title;
if (jsFunction != null) {
button.addEventListener('click', jsFunction, false);
}
return button;
}
function createInputButton(type, value, jsFunction) {
var inputButton = dom.cn("input");
inputButton.type = type; // type bepalen
inputButton.value = value;
if (jsFunction != null) {
inputButton.addEventListener('click', jsFunction, false);
}
return inputButton;
}
function villageCheckBox(event) {
FM_log(3,"villageCheckBox() called");
//alert(event.currentTarget.id);
var cb = event.currentTarget;
var vList = GM_getValue("FarmerVillages_" + suffixGlobal, "");
var i;
var vid = cb.id.split("_")[1];
var newList = "";
if (cb.checked) { //selected
if (vList != "" && vList != null) {
vList = vList.split(",");
for (i = 0; i < vList.length; i++) {
if (vList[i] == vid)
return;
newList += vList[i] + ",";
}
}
newList += vid;
} else {//deselect
if (vList == "" || vList == null)
return;
vList = vList.split(",");
for (i = 0; i < vList.length; i++) {
if (vList[i] != vid) {
if (newList != "")
newList += ",";
newList += vList[i];
}
}
}
GM_setValue("FarmerVillages_" + suffixGlobal, newList);
}
//utility functions
/*
function FM_log(level, text) {
if(false) {
alert(text);
}
}
*/
function FM_log(level, msg){
if (level <= logLevel) {
var ld = new Date();
GM_log(msg);
}
};
function getNumber(tekst) {
//alert(tekst.indexOf("'")+1+" "+tekst.lastIndexOf("'"));
if ((tekst.indexOf("=") + 1) == 0 && tekst.lastIndexOf(";") == -1) {
return 0;
} else {
return tekst.substring(tekst.indexOf("=") + 1, tekst.indexOf(";"));
}
}
function Random(minimum, maximum) {
if (minimum == null || maximum == null) {
minimum = minWait;
maximum = maxWait;
}
/*var rand=Math.round(Math.random()*maximum);
rand = rand<minimum ? minimum : rand;
rand = rand>maximum ? maximum : rand;
return rand;*/
var range = maximum - minimum + 1;
return (Math.floor(Math.random() * Math.pow(10, ("" + range).length)) % range) + parseInt(minimum);
}
function createEditFarmCallback(itemToEdit) {
FM_log(3,"createEditFarmCallback("+itemToEdit+") called");
return function(event) {
editFarm(itemToEdit, event);
}
}
function createRemoveFarmCallback(sequence) {
return function() {
farmRemove(sequence);
}
}
function regxRemoveAll(str, regx, newVal) {
if (newVal == null)
newVal = "";
while (regx.test(str)) {
str = str.replace(regx, newVal);
}
return str;
}
function globeDistance(a, b) { //calculate globe distance
var dist1 = (a > b) ? Math.abs(a - b) : Math.abs(b - a);
var dist2 = (a > b) ? (Math.abs(400 - a) + Math.abs(-400 - b)) : (Math
.abs(400 - b) + Math.abs(-400 - a));
var distFinal = (dist1 < dist2) ? dist1 : dist2;
return distFinal;
}
function coordDistXYtoXY(x1, y1, x2, y2) { //calculate distance between two villages
var distX = globeDistance(x1, x2);
var distY = globeDistance(y1, y2);
var dist = Math.sqrt((distX * distX) + (distY * distY));
return dist;
}
function trim(str, chars) {
return trimL(trimR(str, chars), chars);
}
function trimL(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
function trimR(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
function C2E(str) { //encode characters to HTML safe code (by Alberto Biamino)
str = str.replace(/&/g, '&');
str = str.replace(/'/g, ''');
str = str.replace(/"/g, '"');
str = str.replace(/\\/g, '\');
var acc = '';
for (var i = 0; i < str.length; i++) {
if ((str.charCodeAt(i) > 31 && str.charCodeAt(i) < 127)
&& str.charAt(i) != '|')
acc += str.charAt(i)
else
acc += '&#' + str.charCodeAt(i) + ';';
}
return acc;
}
function E2C(str) { //decode HTML safe code to characters (by Alberto Biamino)
/*str = str.split(";");
for(var i=0; i<str.length; i++){
if(str[i].charAt(0)=='&' && str[i].charAt[1]=='#'){
str[i] = str[i].replace(/&#([0-9]+);/g, '$1');
str[i] = String.fromCharCode(str[i]);
}
}
return str.join('');*/
str = str.replace(/(&#[0-9]+;)/g, '\n$1\n');
str = str.replace(/\n\n/g, '\n');
spl = str.split('\n');
for (var i = 0; i < spl.length; i++) {
if (spl[i].charAt(0) == '&') {
spl[i] = spl[i].replace(/&#([0-9]+);/g, '$1');
spl[i] = String.fromCharCode(spl[i]);
}
}
str = spl.join('');
return str;
}
//DOM functions
function DOMUtils(doc, ctxt, html) { // from FranMod
this.cn = function(tag, html) {
var elem = this.document.createElement(tag);
if (html)
elem.innerHTML = html;
return elem;
}
this.ct = function(text) {
return this.document.createTextNode(text);
}
this.id = function(id) {
return this.document.getElementById(id);
}
this.tag = function(tag) {
return this.document.getElementsByTagName(tag);
}
this.xs = function(xpath) {
var res = this.document.evaluate(xpath, this.context, null,
XPathResult.FIRST_ORDERED_NODE_TYPE, null);
return res.singleNodeValue;
}
this.xa = function(xpath) {
var arr = [];
var xpr = this.document.evaluate(xpath, this.context, null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; item = xpr.snapshotItem(i); i++)
arr.push(item);
return arr.length == 0 ? null : arr;
}
this.xo = function(xpath) {
var ret = this.document.evaluate(xpath, this.context, null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
return ret; //no snapshot
}
this.find = function(xpath, xpres, doc) {
if (!doc)
doc = document;
else if (typeof doc == 'string')
doc = cn('div', doc);
var ret = document.evaluate(xpath, doc, null, xpres, null);
return xpres == XPFirst ? ret.singleNodeValue : ret;
}
this.get = function(id, doc) {
if (!doc)
doc = document;
return doc.getElementById(id);
}
if (!doc)
doc = document;
if (!ctxt)
ctxt = doc;
if (html) {
this.document = doc.implementation.createDocument('', '', null);
this.context = doc.createElement('div');
this.context.innerHTML = html;
ansDoc.appendChild(this.context);
} else {
this.document = doc;
this.context = ctxt;
}
}
function find(xpath,xpres){
var ret=document.evaluate(xpath,document,null,xpres,null);
return xpres==XPFirst ? ret.singleNodeValue : ret;
}
//language functions
function T(str) { //String Translation
var name = str.toUpperCase();
if (lang[name] != undefined) {
return lang[name];
} else {
str = str.toLowerCase();
return "^" + str.substr(0, 1).toUpperCase() + str.substr(1);
}
}
function setLanguage() { //define language elements
FM_log(3,"setLanguage() called");
var ext = server.substring(server.lastIndexOf('.') + 1);
//default English
lang = {
'UPDATE_M' : "Güncelle",
'UPDATE_M1' : "UserScripts.org adresi bulunamadi.",
'UPDATE_UNKNOWN' : "Versiyon numarasi görüntelenemiyor :",
'UPDATE_LAST' : "en ynei versiyon sahibisinizt",
'UPDATE_BETA' : "yeni bir beta sürüm var",
'UPDATE_NEW' : "yeni güncelleme mevcut",
'UPDATE_NOW' : "simdi güncellemek istermisini?",
'CONFIRM' : "eminmisiniz",
'REMOVING' : "iptal",
'SWITCH_V' : "diger köye gec",
'AFTER' : "sonraki",
'SEC' : "ikinci",
'NO_VILLAGE' : "köye gönderilemiyor!",
'WAITING' : "bekleniyor",
'BEFORE_RE' : "önce kontrol.",
'ADD_FARM' : "hedef köye git",
'TROOP_CONFIG' : "asker ayarlari",
'ATTACK' : "saldiri",
'REINFORCE' : "destek",
'RAID' : "yagma",
'ACTIVE_FARM' : "eklenmis yagma köyü",
'CANCEL' : "vazgec",
'SAVE' : "kaydet",
'ADD_TO' : "eklenen :",
'ADD_AS' : "yagmaya eklenen",
'GLOBAL_IM_EX_PROMPT' : "tüm bilgileri yedekle / yükle",
'GLOBAL_IM_EX_M' : "tüm bilgileri raw olarak yedekle / yükle",
'LOCAL_IM_EX_PROMPT' : "kopyala / yapistir",
'LOCAL_IM_EX_M' : "genel köylerin bilgileriniy edekle / yapistir",
'OPTIMIZE_DONE' : "Mesafeye göre siralandi",
'OPTIMIZE_M' : "secilen köyden itibaren mesafe sirlandirilsin.",
'OPTIMIZE_SM' : "mesafe siralamasi icin git",
'INVALID_FARM' : "yagma gönderiemiyor. silinmis olabilir?",
'DELETE_FARM' : "listeden sil.",
'EDIT_FARM' : "yeniden düzenle",
'NO_FARM_YET' : "yagma gönderilecek köyleri sec",
'FARM' : "yagma",
'SORT_FARM' : "mesafeye göre sirala",
'DELETE_M' : " X isareti ile silebilirsin",
'EDIT_M' : "edit sembolu ile düzenleme",
'END_M' : "noktayi tasidiginiz yerden asagisi listeden silinsin",
'START_M' : "yagmayi baslatacagin baslangic noktasi",
'START_FARMING' : "BASLAT",
'MINIMIZE' : "Köy listesini kapa",
'MAXIMIZE' : "Köy listesini ac",
'FARM_INACTIVE' : "gönderilmeyecek sekidle kaydet",
'ERROR' : "HATA",
'NOT_ENOUGH' : "Yetersiz asker",
'AVAILABLE' : "mevcut",
'NEEDED' : "gereken",
'TROOPS_GONE' : "Gönderildi",
'NEXT_FARM' : "Siradaki köy",
'SUCCESS_COUNT' : "TOPLAM GÖNDERILEN YAGMA SAYISI",
'HALT_FARMING' : "DURDUR",
'MACHINE_RUNNING' : "Ben yagma atiyom sen git TV izle ..:)",
'CHANGE_VILLAGE' : "Tekrar deneniyor",
'NO_FARM' : "yetersiz asker...bekleniyor",
'NOT_FARMER' : "bu köy artik yok",
'USED_TROOPS' : "Giden asker miktari:",
'GOING_TO' : "gönderi sekli..",
'INSTALL_M1' : "Köy üzerinden yagma listesine ekle",
'INSTALL_M2' : "Bol Yagmalar",
'TRIBE_SELECT1' : "IRK",
'TRIBE_SELECT2' : "Irkinizi secin.",
'TRIBE_SELECT3' : "hatali sectiniz standart olarak biz ayarladik.",
'ROMAN' : "ROMALI",
'TEUTON' : "CERMEN",
'GAUL' : "Galya",
//Settings
'SETRANDOMIZE' : "Rastgele sirali yolla",
'SETREADREP' : "Raporlari incele , öncelikli yolla",
'SETDELTLIST' : "otomatik hafiza silimi",
'DELTEMPLIST' : "elle sil",
'UPDATE_SETTINGS' : "Güncelleme ayarlari",
'SETVILSKIP' : "Köy atlama etkinleştirin",
'FARMMARKING' : "Eklenen köyleri haritada renklendir",
'DYNAMICTROOPCOUNT' : "bos dönen köylerden asker azalt"
}
//for other language
if (ext == "cz") { //Language:Czech, Translator : Rypi
lang = {
'UPDATE_M' : "Aktualizovat",
'UPDATE_M1' : "UserScripts.org nenalezeno.",
'UPDATE_UNKNOWN' : "Verze se neshodují :",
'UPDATE_LAST' : "Používáš poslední verzi",
'UPDATE_BETA' : "Je dostupná nová BETA verze",
'UPDATE_NEW' : "Je dostupná nová verze",
'UPDATE_NOW' : "Chceš aktualizovat teď",
'CONFIRM' : "Jsi si jistý",
'REMOVING' : "Odebírání",
'SWITCH_V' : "Prepínám vesnici na",
'AFTER' : "za",
'SEC' : "sekund",
'NO_VILLAGE' : "Žádná další vesnice!",
'WAITING' : "Cekám",
'BEFORE_RE' : "pred kontrolou.",
'ADD_FARM' : "Pridávám farmu",
'TROOP_CONFIG' : "Konfigurace jednotek je",
'ATTACK' : "Útok",
'REINFORCE' : "Podpora",
'RAID' : "Loupež",
'ACTIVE_FARM' : "Aktivní farma",
'CANCEL' : "Storno",
'SAVE' : "Uložit",
'ADD_TO' : "Pridat do",
'ADD_AS' : "Pridat jako farmu",
'GLOBAL_IM_EX_PROMPT' : "Kopírovat / Vložit data všech vesnic",
'GLOBAL_IM_EX_M' : "Importovat, Exportovat data všech vesnic",
'LOCAL_IM_EX_PROMPT' : "Kopírovat / Vložit data",
'LOCAL_IM_EX_M' : "Importovat, Exportovat data této vesnice",
'OPTIMIZE_DONE' : "Úspešne provedena optimalizace vzdálenosti",
'OPTIMIZE_M' : "Optimalizuj farmy ve vybraných vesnicích podle vzdálenosti.",
'OPTIMIZE_SM' : "Budu optimalizovat všechny farmy ve vybraných vesnicích podle vzdálenosti",
'INVALID_FARM' : "Nastavení farmy je neplatné! Odebrat?",
'DELETE_FARM' : "Smazat farmu",
'EDIT_FARM' : "Upravit farmu",
'NO_FARM_YET' : "Nastav si nejakou farmu (prehled cizý vesnice po kliknutí na mapu)",
'FARM' : "Farma",
'SORT_FARM' : "Seradit farmy podle vzdálenosti od soucasné vesnice",
'DELETE_M' : "Klikni na X pro smazání farmy",
'EDIT_M' : "Klikni na EDIT pro úpravu farmy",
'END_M' : "Vyber koncovou pozici, klikne zde pro odebrání konce",
'START_M' : "Vyber zacátecní pozici z tohoto sloupce",
'START_FARMING' : "Zacít farmit od zvolené vesnice",
'MINIMIZE' : "Minimalizovat",
'MAXIMIZE' : "Maximalizovat",
'FARM_INACTIVE' : "Farma nastavena jako neaktivní",
'ERROR' : "Chyba",
'NOT_ENOUGH' : "Málo jednotek pro vyloupení",
'AVAILABLE' : "Dostupné",
'NEEDED' : "Potreba",
'TROOPS_GONE' : "Jednotky na ceste do",
'NEXT_FARM' : "Vyber další farmu",
'SUCCESS_COUNT' : "Celkem úspešne poslaných loupeží",
'HALT_FARMING' : "Zastavit farmení",
'MACHINE_RUNNING' : "Farming Machine je spuštená",
'CHANGE_VILLAGE' : "Zkouším zmenit vesnici",
'NO_FARM' : "Žádná farma není dostupná.",
'NOT_FARMER' : "Tohle není Farmárská vesnice",
'USED_TROOPS' : "Použité jednotky",
'GOING_TO' : "Jdeš do",
'INSTALL_M1' : "Pro pridání farmy ji najdi na mape a klikni na ni",
'INSTALL_M2' : "Veselé farmení",
'TRIBE_SELECT1' : "Jaké jsi národnosti",
'TRIBE_SELECT2' : "Prosím zvol správné císlo.",
'TRIBE_SELECT3' : "Nenastavil jsi správné císlo, Nastavuji si te jako Rímana.",
'ROMAN' : "Roman",
'TEUTON' : "Teuton",
'GAUL' : "Gaul",
//Settings
'SETRANDOMIZE' : "Náhodné farmení",
'SETREADREP' : "Analizovat reporty a udelat prioritní seznam",
'SETDELTLIST' : "Smazat docasný seznam pri vypnutí",
'DELTEMPLIST' : "Smazání docasného seznamu rucne",
'UPDATE_SETTINGS' : "Nastavení",
'SETVILSKIP' : "Preskakovat aktivní vesnici",
'FARMMARKING' : "Ukazovat farmy na mape",
'DYNAMICTROOPCOUNT' : "Vojska Dynamics"
}
} else if (ext == "pt") { //Language:Portuguese, Translator : Fujis & MyDooMJr & Black_Blood
lang = {
'UPDATE_M' : "Actualizar",
'UPDATE_M1' : "UserScripts.org não encontrado.",
'UPDATE_UNKNOWN' : "A versão não coincide :",
'UPDATE_LAST' : "última versão disponível",
'UPDATE_BETA' : "Nova versão BETA disponível",
'UPDATE_NEW' : "Nova versão disponível",
'UPDATE_NOW' : "Actualizar já",
'UPDATE_NOW' : "Actualizar ",
'CONFIRM' : "Tem a certeza",
'REMOVING' : "A Remover",
'SWITCH_V' : "Substituir para a aldeia",
'AFTER' : "Depois de",
'SEC' : "Segundos",
'NO_VILLAGE' : "Nã há aldeias disponiveis!",
'WAITING' : "Em espera",
'BEFORE_RE' : "Antes verificar novamente.",
'ADD_FARM' : "Adicionar Farm",
'TROOP_CONFIG' : "Configuração de tropas",
'ATTACK' : "Ataque",
'REINFORCE' : "Reforço",
'RAID' : "Assalto",
'ACTIVE_FARM' : "Farm activo",
'CANCEL' : "Cancelar",
'SAVE' : "Guardar",
'ADD_TO' : "Adicionar",
'ADD_AS' : "Adicionar como Farm",
'GLOBAL_IM_EX_PROMPT' : "Copiar todos os dados da aldeia ou copiar de copia de segurança",
'GLOBAL_IM_EX_M' : "Importar ou Exportar lista de Farms de todas as aldeias",
'LOCAL_IM_EX_PROMPT' : "Copiar dados / Colar novos dados",
'LOCAL_IM_EX_M' : "Importar ou Exportar lista de Farms desta aldeia",
'OPTIMIZE_DONE' : "Melhoramento de distancias feito com sucesso",
'OPTIMIZE_M' : "Melhorar Farms nas aldeias tendo em conta a distancia.",
'OPTIMIZE_SM' : "Melhorar todos os Farms da aldeia seleccionada por distancias",
'INVALID_FARM' : "Tropas invalidas! Deseja Remover?",
'DELETE_FARM' : "Apagar Farm.",
'EDIT_FARM' : "Editar farm",
'NO_FARM_YET' : "Activar qualquer aldeia da página do perfil da aldeia",
'FARM' : "Farm",
'SORT_FARM' : "Dispor Farms pela distancia a aldeia actual",
'DELETE_M' : "Clicar no icon X para apagar o Farm",
'EDIT_M' : "Clicar no icon Editar para editar o Farm",
'END_M' : "Seleccionar fim do Farming a partir desta coluna, clicar para remover fim",
'START_M' : "Seleccionar inicio do Farming a partir desta coluna",
'START_FARMING' : "Iniciar Farming das aldeias seleccionadas",
'MINIMIZE' : "Minimizar",
'MAXIMIZE' : "Maximizar",
'FARM_INACTIVE' : "Farm Inactivo",
'ERROR' : "Erro Detectado",
'NOT_ENOUGH' : "Tropas insuficientes para efectuar assalto a",
'AVAILABLE' : "Disponivel",
'NEEDED' : "Necessário",
'TROOPS_GONE' : "Tropas a caminho de",
'NEXT_FARM' : "Seleccionar proximo Farm",
'SUCCESS_COUNT' : "Número total de envios com sucesso",
'HALT_FARMING' : "Parar Farming",
'MACHINE_RUNNING' : "Programa de Farms activo",
'CHANGE_VILLAGE' : "A tentar substituir a aldeia",
'NO_FARM' : "Farm não disponivel",
'NOT_FARMER' : "Esta não é a aldeia de um Farm",
'USED_TROOPS' : "Tropas utilizadas",
'GOING_TO' : "Enviadas para",
'INSTALL_M1' : "Adicionar novo Farm 1- Mapa 2- Aldeia do Farm 3- Adicionar",
'INSTALL_M2' : "Happy Farming : Have FUN :D!",
'TRIBE_SELECT1' : "A tua tribo",
'TRIBE_SELECT2' : "Por favor preenche o teu tipo de tribo.",
'TRIBE_SELECT3' : "A Tribo seleccionada é incorrecta, activou Romanos como predefinição.",
'ROMAN' : "Romanos",
'TEUTON' : "Teutões",
'GAUL' : "Gauleses",
//Settings
'SETRANDOMIZE' : "Farming aleatorio ",
'SETREADREP' : "Analisar os relatórios para definir uma lista de prioridades",
'SETDELTLIST' : "Apaga a lista quando parar",
'UPDATE_SETTINGS' : "Actualizar defenições",
'SETVILSKIP' : "Activar passagem à proxima aldeia",
'FARMMARKING' : "Marcar farms no mapa",
'DYNAMICTROOPCOUNT' : "Tropas Dinamicas"
}
} else if (ext == "pl") { //Language:Polish, Translator : Dungaar
lang = {
'UPDATE_M' : "Aktualizuje",
'UPDATE_M1' : "Nie znaleziono UserScripts.org",
'UPDATE_UNKNOWN' : "Niewlasciwa wersja :",
'UPDATE_LAST' : "Uzywasz najnowszej wersji",
'UPDATE_BETA' : "Nowa wersja BETA jest dostepna",
'UPDATE_NEW' : "Jest dostepna NOWA wersja",
'UPDATE_NOW' : "Chcesz zaktualizowac teraz",
'CONFIRM' : "Jestes pewien",
'REMOVING' : "Usuwanie",
'SWITCH_V' : "Zmiana wioski na",
'AFTER' : "za",
'SEC' : "sekund",
'NO_VILLAGE' : "Nie ma zadnej wolnej wioski!",
'WAITING' : "Czekam",
'BEFORE_RE' : "przed ponownym sprawdzeniem.",
'ADD_FARM' : "Zamierzasz dodac farme",
'TROOP_CONFIG' : "Konfiguracja jednostek to",
'ATTACK' : "Atak",
'REINFORCE' : "Posilki",
'RAID' : "Grabiez",
'ACTIVE_FARM' : "Aktywna farma",
'CANCEL' : "Anuluj",
'SAVE' : "Zapisz",
'ADD_TO' : "Dodaj do",
'ADD_AS' : "Dodaj jako farme",
'GLOBAL_IM_EX_PROMPT' : "Skopiuj dane ze wszystkich wiosek lub wklej kopie zapasowa",
'GLOBAL_IM_EX_M' : "Import lub Eksport danych dla wszystkich wiosek",
'LOCAL_IM_EX_PROMPT' : "Skopiuj dane / Wklej nowe dane",
'LOCAL_IM_EX_M' : "Import lub Eksport danych dla tej wioski",
'OPTIMIZE_DONE' : "Zoptymalizowano wedlug odleglosci",
'OPTIMIZE_M' : "Zoptymalizuj farmy wedlug odleglosci.",
'OPTIMIZE_SM' : "Optymalizacja farm wedlug odleglosci",
'INVALID_FARM' : "Nieprawidlowe jednostki w osadzie! Usunac?",
'DELETE_FARM' : "Usun farme",
'EDIT_FARM' : "Edytuj farme",
'NO_FARM_YET' : "Ustaw farmy w profilach wiosek",
'FARM' : "Farma",
'SORT_FARM' : "Sortuj farmy wedlug odleglosci od tej wioski",
'DELETE_M' : "Kliknij X aby usunac farme",
'EDIT_M' : "Kliknij na ikonie edycji aby edytowac farme",
'END_M' : "Wybierz ostatnia atakowana wioske lub kliknij tutaj aby skrypt dzialal bez przerwy",
'START_M' : "Wybierz pierwsza atakowana wioske",
'START_FARMING' : "Rozpocznij farmienie od zaznaczonej wioski",
'MINIMIZE' : "Minimalizuj",
'MAXIMIZE' : "Maksymalizuj",
'FARM_INACTIVE' : "Farma ustawiona jako nieaktywna",
'ERROR' : "Blad",
'NOT_ENOUGH' : "Brakuje jednostek do grabiezy",
'AVAILABLE' : "Dostepne",
'NEEDED' : "Potrzebne",
'TROOPS_GONE' : "Jednostki w drodze do",
'NEXT_FARM' : "Wybieranie kolejnej farmy",
'SUCCESS_COUNT' : "W sumie wyslano",
'HALT_FARMING' : "Zatrzymaj",
'MACHINE_RUNNING' : "Skrypt uruchomiony",
'CHANGE_VILLAGE' : "Pr?buje zmienic na inna wioske",
'NO_FARM' : "Nie ma dostepnych zadnych farm",
'NOT_FARMER' : "To nie jest wioska do atak?w",
'USED_TROOPS' : "Uzyte jednostki",
'GOING_TO' : "Wykonuje",
'INSTALL_M1' : "Dodaj nowe farmy w profilach wiosek",
'INSTALL_M2' : "Milego farmienia :)",
'TRIBE_SELECT1' : "Wybierz nacje",
'TRIBE_SELECT2' : "Prosze wpisac poprawny numer nacji.",
'TRIBE_SELECT3' : "Nie bylo mozliwe wybranie poprawnej nacji, ustawiam domyslnie rzymian.",
'ROMAN' : "Rzymianie",
'TEUTON' : "Germanie",
'GAUL' : "Galowie",
//Settings
'SETRANDOMIZE' : "Randomize Rolnictwa",
'SETREADREP' : "Analizujemy raporty do kolejki priorytetowe",
'SETDELTLIST' : "Usun tymczasowe zatrzymanie, kiedy lista",
'UPDATE_SETTINGS' : "Update Settings",
'SETVILSKIP' : "Wlacz omijajac wies",
'FARMMARKING' : "Mark gospodarstw w map",
'DYNAMICTROOPCOUNT' : "Dynamiczny Troops"
}
} else if (ext == "hr" || ext == "rs" || ext == "ba") { //Language:Hrvatski, Srpski and Bosanski, Translator : Coly
lang = {
'UPDATE_M' : "Ukljuciti",
'UPDATE_M1' : "UserScripts.org nije pronađen.",
'UPDATE_UNKNOWN' : "Broj verzije nije važeći:",
'UPDATE_LAST' : "Vi koristite zadnju verziju",
'UPDATE_BETA' : "Nova beta verzija je dostupna",
'UPDATE_NEW' : "NOVA verzija je dostupna",
'UPDATE_NOW' : "Dali želita instalirati sad",
'CONFIRM' : "Dali ste sigurni",
'REMOVING' : "Uklanjanje",
'SWITCH_V' : "Prebacivanje na slijedece selo",
'AFTER' : "Poslije",
'SEC' : "Sekunde",
'NO_VILLAGE' : "Slijedece selo nije prondeno",
'WAITING' : "Cekanje",
'BEFORE_RE' : "Ponovna provijera prije nego.",
'ADD_FARM' : "Idite dodat farme",
'TROOP_CONFIG' : "Vojska Konfiguracija je ",
'ATTACK' : "Napad",
'REINFORCE' : "Pojacanje",
'RAID' : "Pljacka",
'ACTIVE_FARM' : "Aktivna farma",
'CANCEL' : "Odustani",
'SAVE' : "sacuvaj farmu ",
'ADD_TO' : "Dodaj u ",
'ADD_AS' : "Dodaj kao farmu",
'GLOBAL_IM_EX_PROMPT' : "Kopiraj sve podatke sela ili Zaljepi podatke iz sigurnosne kopije",
'GLOBAL_IM_EX_M' : "ubaci ili izbaci podatke farma za sva sela",
'LOCAL_IM_EX_PROMPT' : "Kopiraj podatke / Zaljepi nove podatke",
'LOCAL_IM_EX_M' : "ubaci ili izbaci podatke farma za ovo selo",
'OPTIMIZE_DONE' : "Uspje?no obaviti udaljenost optimizacija",
'OPTIMIZE_M' : "Poredaj farme iz izabranog sela po udaljenosti",
'OPTIMIZE_SM' : "Odlazak na Optimiziranej Svih farmi u Odabrane Naselja, Svojim Udaljenosti",
'INVALID_FARM' : "Postavljena vojska za farmu nije ispravna! Ukloniti je?",
'DELETE_FARM' : "Ukloni ovu farmu.",
'EDIT_FARM' : "Uredi ovu farmu",
'NO_FARM_YET' : "Postavite bilo koje selo kao svoju farmu iz svog odredenog sela",
'FARM' : "Farma",
'SORT_FARM' : "Sortiraj farme po daljini iz ovog sela",
'DELETE_M' : "Kliknite na (x) da bi uklonili odredenu farmu",
'EDIT_M' : "Kliknite na (Edit) ikonu da bi Uredili farme",
'END_M' : "Izaberite poziciju u ovom stubcu, kliknite ovdje da uklonite (EndIndex)",
'START_M' : "Izaberite pocetnu poziviju u ovom stubcu",
'START_FARMING' : "Pocetak farmanja iz izabranog sela",
'MINIMIZE' : "Minimiziraj",
'MAXIMIZE' : "Maksimiziraj",
'FARM_INACTIVE' : "Postavi farmu kao neaktivnu",
'ERROR' : "Pogre?ka",
'NOT_ENOUGH' : "Nemate dovoljno vojnika za napad na",
'AVAILABLE' : "Dostupno",
'NEEDED' : "Potrebno",
'TROOPS_GONE' : "Vojska je na putu prema",
'NEXT_FARM' : "Preacivanje slijedeca farma",
'SUCCESS_COUNT' : "Ukupno uspje?nih poslanih napada",
'HALT_FARMING' : "Prekini farmanje",
'MACHINE_RUNNING' : "Farming Machine je pokrenut",
'CHANGE_VILLAGE' : "Pokusaj preacivanja na slijedece selo",
'NO_FARM' : "Farma nije raspolo?ljiva",
'NOT_FARMER' : "Ovo nije famersko selo",
'USED_TROOPS' : "Kori?tena vojska",
'GOING_TO' : "Kretanje prema",
'INSTALL_M1' : "Dodaj novu farmu za ovo selo",
'INSTALL_M2' : "Happy Farming.pozdravite paula(coly) xD ",
'TRIBE_SELECT1' : "tvoj narod?",
'TRIBE_SELECT2' : "Molimo da unesete ispravnu Broj NAroda za svoju vrstu.",
'TRIBE_SELECT3' : "Niste mogli postavit ispravno pleme,rimljane namjestite kao zadnje.",
'ROMAN' : "Rimljani",
'TEUTON' : "Teutonci",
'GAUL' : "Gali",
//Settings
'SETRANDOMIZE' : "Slucajni Poljodjelstvo",
'SETREADREP' : "Analize Izvješća napraviti red prioriteta",
'SETDELTLIST' : "Brisanje privremenih popisa kad zaustavljanja",
'DELTEMPLIST' : "Brisanje privremene liste ručno",
'UPDATE_SETTINGS' : "Ažuriranje postavki",
'SETVILSKIP' : "Aktiviraj naselje preskakivanje",
'FARMMARKING' : "Označi farme u karti",
'DYNAMICTROOPCOUNT' : "Dynamic postrojbi"
}
} else if (ext == "it") { //Language:Italian, Translator : Snake
lang = {
'UPDATE_M' : "Aggiorna",
'UPDATE_M1' : "UserScripts.org non trovato.",
'UPDATE_UNKNOWN' : "La Versione non corrisponde :",
'UPDATE_LAST' : "Hai già la Versione più Recente",
'UPDATE_BETA' : "Nuova Versione BETA disponibile",
'UPDATE_NEW' : "Nuova Versione disponibile",
'UPDATE_NOW' : "Vuoi aggiornare ora",
'CONFIRM' : "Conferma",
'REMOVING' : "Sto Rimuovendo",
'SWITCH_V' : "Cambiando villaggio:",
'AFTER' : "dopo",
'SEC' : " secondi",
'NO_VILLAGE' : "Nessun altro Villaggio disponibile!",
'WAITING' : "Aspetto",
'BEFORE_RE' : "prima di ricontrollare.",
'ADD_FARM' : "Stai aggiungendo una Farm",
'TROOP_CONFIG' : "La configurazione delle Truppe ?",
'ATTACK' : "Attacco",
'REINFORCE' : "Rinforzo",
'RAID' : "Raid",
'ACTIVE_FARM' : "Farm Attiva",
'CANCEL' : "Annulla",
'SAVE' : "Salva",
'ADD_TO' : "Aggiungi a",
'ADD_AS' : "Aggiungi come Farm",
'GLOBAL_IM_EX_PROMPT' : "Copia i Dati di Tutti i Villaggi o Incolla i Dati da un Backup",
'GLOBAL_IM_EX_M' : "Importa o Esporta i Dati delle Farm per tutti i Villaggi",
'LOCAL_IM_EX_PROMPT' : "Copy i Dati / Incolla nuovi Dati",
'LOCAL_IM_EX_M' : "Importa o Esporta i Dati delle Farm per questo Villaggio",
'OPTIMIZE_DONE' : "Ottimizzazione della distanza completata con Successo",
'OPTIMIZE_M' : "Ottimizza le Farm per i Villaggi Selezioni per Distanza.",
'OPTIMIZE_SM' : "Sto per Ottimizzare tutte le Farm nei Villaggi Selezionati per Distanza",
'INVALID_FARM' : "Configurazione delle truppe della Farm invalide! Rimuoverla?",
'DELETE_FARM' : "Cancella questa Farm.",
'EDIT_FARM' : "Modifica questa Farm",
'NO_FARM_YET' : "Imposta qualsiasi villaggio come Farm dal Profilo del Villaggio",
'FARM' : "Farm",
'SORT_FARM' : "Organizza Farm per Distanza dal Villaggio Attuale",
'DELETE_M' : "Premi il Bottone X per cancellare una Farm",
'EDIT_M' : "Premi il Bottone Modifica per modificare una Farm",
'END_M' : "Seleziona la posizione Finale da questa colonna, Clicca Qu? per Rimuoverla",
'START_M' : "Seleziona la posizione Iniziale da questa colonna",
'START_FARMING' : "Inizia il Farming dai Villaggi Selezionati",
'MINIMIZE' : "Minimizza",
'MAXIMIZE' : "Ingrandisci",
'FARM_INACTIVE' : "Farm Impostata come Inattiva",
'ERROR' : "Errore",
'NOT_ENOUGH' : "Non ci sono Abbastanza Truppe per il raid a",
'AVAILABLE' : "Disponibili",
'NEEDED' : "Necessarie",
'TROOPS_GONE' : "Le truppe stanno partendo per",
'NEXT_FARM' : "Seleziono la Prossima Farm",
'SUCCESS_COUNT' : "Conteggio Totale degli Invii con Successo",
'HALT_FARMING' : "Pausa Farming",
'MACHINE_RUNNING' : "Farming Machine Running",
'CHANGE_VILLAGE' : "Provo a Cambiare Villaggio",
'NO_FARM' : "Nessuna Farm Disponibile",
'NOT_FARMER' : "Questo non ? un Villaggio Farmer",
'USED_TROOPS' : "Truppe Usate",
'GOING_TO' : "Partendo Per",
'INSTALL_M1' : "Aggiungi nuove Farm dal Profilo del Villaggio",
'INSTALL_M2' : "Felice Farming",
'TRIBE_SELECT1' : "La Tua Trib?",
'TRIBE_SELECT2' : "Perfavore, inserisci il numero corretto per la Tua Trib?.",
'TRIBE_SELECT3' : "Non hai inserito un numero Valido per la tua Trib?, Selezionati i Romani per default.",
'ROMAN' : "Romani",
'TEUTON' : "Teutoni",
'GAUL' : "Galli",
//Settings
'SETRANDOMIZE' : "Randomize Agricoltura",
'SETREADREP' : "Rapporti Analize a fare una coda di priorita",
'SETDELTLIST' : "Elimina elenco temporaneo quando ci si ferma",
'DELTEMPLIST' : "Eliminare manualmente la lista temporanea",
'UPDATE_SETTINGS' : "Update Settings",
'SETVILSKIP' : "Attiva villaggio salto",
'FARMMARKING' : "Mark aziende nella cartina",
'DYNAMICTROOPCOUNT' : "Dynamic Truppe"
}
} else if (ext == "ru") { //Language:Russian Translator : System Failure
lang = {
'UPDATE_M' : "Обновить",
'UPDATE_M1' : "UserScripts.org не найдено.",
'UPDATE_UNKNOWN' : "Номер версии не совпадает :",
'UPDATE_LAST' : "Вы используете последнюю",
'UPDATE_BETA' : "Новая, БЕТА версия доступна",
'UPDATE_NEW' : "Доступна новая версия",
'UPDATE_NOW' : "Хотите обновить сейчас",
'CONFIRM' : "Вы уверены",
'REMOVING' : "Удаляю",
'SWITCH_V' : "Переключаюсь к деревне в",
'AFTER' : "после",
'SEC' : " секунд",
'NO_VILLAGE' : "Нет больше других деревень!",
'WAITING' : "Ожидаю",
'BEFORE_RE' : "до перепроверки.",
'ADD_FARM' : " Вы собираетесь добавить целья для фарма ",
'TROOP_CONFIG' : "Конфигурация войск",
'ATTACK' : "Нападение",
'REINFORCE' : "Подкрепление",
'RAID' : "Набег",
'ACTIVE_FARM' : "Активный фарм ",
'CANCEL' : "Отменить",
'SAVE' : "Сохранить",
'ADD_TO' : "Добавить к",
'ADD_AS' : "Добавить как цель для фарма",
'GLOBAL_IM_EX_PROMPT' : "Скоприровать всю информацию по деревням или вставить информацию из резервной копии",
'GLOBAL_IM_EX_M' : "Импортировать или экспортировать данные строки фарма для всех деревень",
'LOCAL_IM_EX_PROMPT' : "Копировать данные / Вставить новые данные",
'LOCAL_IM_EX_M' : " Импортировать или экспортировать фарм-данные для этой деревни ",
'OPTIMIZE_DONE' : "Оптимизация расстояния успешно проведена",
'OPTIMIZE_M' : " Оптимизировать фарм-цели в выбранных деревнях на основании расстояния.",
'OPTIMIZE_SM' : " Собираюсь оптимизировать все фарм-цели в выбранных деревнях по их расстояниям.",
'INVALID_FARM' : "Неверные настройки фарм-отряда! Удалить настройки?",
'DELETE_FARM' : "Удалить эту фарм-цель.",
'EDIT_FARM' : "Редактировать эту фарм-цель",
'NO_FARM_YET' : " Установите любую деревню в качестве фарм-цели из страницы профиля деревни",
'FARM' : "Фарм",
'SORT_FARM' : "Сортировать фарм-цели по их удалению от текущей деревни.",
'DELETE_M' : "Нажмите на значок Х чтобы удалить фарм-цель ",
'EDIT_M' : "Нажмите на Редактировать, чтобы редактировать фарм-цель",
'END_M' : " Выберите последнюю позицию в этой колонке, нажмите сдесь чтобы удалить EndIndex ",
'START_M' : "Выберите стартовую позицию из этой колонки",
'START_FARMING' : "Начать фарм из выбранных деревень",
'MINIMIZE' : "Скрыть",
'MAXIMIZE' : "Развернуть",
'FARM_INACTIVE' : "Фарм переведен в активный режим",
'ERROR' : "Ошибка",
'NOT_ENOUGH' : "Не достаточно войск для набега на",
'AVAILABLE' : "Доступно",
'NEEDED' : "Необходимо",
'TROOPS_GONE' : "Войска на пути в",
'NEXT_FARM' : "Выбераю следующую цель для фарма",
'SUCCESS_COUNT' : "Итого успешно послано",
'HALT_FARMING' : "Остановить фарм ",
'MACHINE_RUNNING' : "Farming Machine работает",
'CHANGE_VILLAGE' : " Пытаюсь изменить текущую деревню ",
'NO_FARM' : "Нет целей для фарма",
'NOT_FARMER' : "Это не фарм-деревня ",
'USED_TROOPS' : "Использованные войска ",
'GOING_TO' : "Отправляю в ",
'INSTALL_M1' : "Добавьте новые цели для фарма из страницы профиля деревни",
'INSTALL_M2' : "Удачного фарма",
'TRIBE_SELECT1' : "Ваш народ",
'TRIBE_SELECT2' : " Пожалуйста введите корректное число для вашего народа.",
'TRIBE_SELECT3' : "Вы не смогли установить правильный народ, устанавливаю Римляне по умолчанию.",
'ROMAN' : "Римляне",
'TEUTON' : "Германцы",
'GAUL' : "Галлы",
//Settings
'SETRANDOMIZE' : "Рандомизировать цели",
'SETREADREP' : "Проанализировать отчеты, для создания очереди упорядоченной по приоритету",
'SETDELTLIST' : "Удалить временный список при остановке",
'DELTEMPLIST' : "Удаление временных список вручную",
'UPDATE_SETTINGS' : "Параметры обновления",
'SETVILSKIP' : "Включить деревне пропуска",
'FARMMARKING' : "Марк хозяйств на карте",
'DYNAMICTROOPCOUNT' : "Динамические войск"
}
} else if (ext == "net") { //Language:Espanhol, Translator : Royan
lang = {
'UPDATE_M' : "Actualizar",
'UPDATE_M1' : "UserScripts.org no encontrado.",
'UPDATE_UNKNOWN' : "La version no coincide :",
'UPDATE_LAST' : "Ya tienes la ultima versión",
'UPDATE_BETA' : "Nueva versión BETA disponible",
'UPDATE_NEW' : "Nueva versión disponible",
'UPDATE_NOW' : "Quieres actualizar ahora",
'CONFIRM' : "Confirmar",
'REMOVING' : "Borrando",
'SWITCH_V' : "Cambiando ciudad en",
'AFTER' : "despues",
'SEC' : "segundo",
'NO_VILLAGE' : "No hay m?s ciudades disponibles !",
'WAITING' : "Esperando",
'BEFORE_RE' : "Antes revisa.",
'ADD_FARM' : "Vas a a?adir una granja",
'TROOP_CONFIG' : "La configuraci?n de tropas es",
'ATTACK' : "Ataque normal",
'REINFORCE' : "Refuerzo",
'RAID' : "Atraco",
'ACTIVE_FARM' : "Activar granjeo",
'CANCEL' : "Cancelar",
'SAVE' : "Salvar",
'ADD_TO' : "Anadir a",
'ADD_AS' : "A?adir como granja",
'GLOBAL_IM_EX_PROMPT' : "Copia o pega los datos de granjeo de todas las ciudades",
'GLOBAL_IM_EX_M' : "Importar o Exportar raw datos de granjeo de todas las ciudades",
'LOCAL_IM_EX_PROMPT' : "Copia los datos / pega los datos",
'LOCAL_IM_EX_M' : "Importar o Exportar raw datos de granjeo de esta ciudad",
'OPTIMIZE_DONE' : "Realizada optimizaci?n por distancia",
'OPTIMIZE_M' : "Optimizar el granjeo en funci?n de la distancia.",
'OPTIMIZE_SM' : "Optimizando el granjeo de las granjas seleccionadas en funci?n de su distancia",
'INVALID_FARM' : "Configuraci?n de tropas de granjeo erronea! ?eliminar?",
'DELETE_FARM' : "Borrar esta granja.",
'EDIT_FARM' : "Editar esta granja",
'NO_FARM_YET' : "Selecciona alguna ciudad como granja desde el perfil de las ciudades",
'FARM' : "Granja",
'SORT_FARM' : "Ordenar granjas por la distancia a la ciudad actual",
'DELETE_M' : "Dar a la X para borrar la granja",
'EDIT_M' : "Dar al boton de editar para editar la granja",
'END_M' : "Selecciona posici?n final en esta columna, Dar aqui para borrar el marcador de posici?n final",
'START_M' : "Selecciona posici?n inicial en esta columna",
'START_FARMING' : "Empezar granjeo en las ciudades selecionadas",
'MINIMIZE' : "Minimizar",
'MAXIMIZE' : "Maximizar",
'FARM_INACTIVE' : "Granja marcada inactiva",
'ERROR' : "Error",
'NOT_ENOUGH' : "Insuficientes tropas para mandar a",
'AVAILABLE' : "Disponible",
'NEEDED' : "Necesario",
'TROOPS_GONE' : "Tropas en camino a",
'NEXT_FARM' : "Seleccionando siguiente granja",
'SUCCESS_COUNT' : "Contador total de granjeos",
'HALT_FARMING' : "Pausar granjeo",
'MACHINE_RUNNING' : "Farming Machine funcionando",
'CHANGE_VILLAGE' : "Intentando cambiar de ciudad",
'NO_FARM' : "Granjeo no disponible",
'NOT_FARMER' : "Ciudad no granjera",
'USED_TROOPS' : "Tropas usadas",
'GOING_TO' : "Ir a",
'INSTALL_M1' : "A?adir nuevas granjas desde el perfil de las ciudades",
'INSTALL_M2' : "Feliz granjeo",
'TRIBE_SELECT1' : "Tu tribu",
'TRIBE_SELECT2' : "Por favor introduce el n?mero correspondiente a tu tribu.",
'TRIBE_SELECT3' : "Imposible seleccionar tribu, selcionando Romanos por defecto.",
'ROMAN' : "Romanos",
'TEUTON' : "Germanos",
'GAUL' : "Galos",
//Settings
'SETRANDOMIZE' : "Selección aleatoria de la agricultura",
'SETREADREP' : "Analizar los informes para hacer una cola de prioridad",
'SETDELTLIST' : "Eliminar la lista previa a la parada temporal",
'DELTEMPLIST' : "Borrar lista temporal de forma manual",
'UPDATE_SETTINGS' : "Actualización de la configuración",
'SETVILSKIP' : "Activar pueblo sin pasar",
'FARMMARKING' : "Marcos explotaciones en el mapa",
'DYNAMICTROOPCOUNT' : "Dinámica de las tropas"
}
}else if (ext == "ae") { //Language:arabic, Translator : kmmad1
lang = {
'UPDATE_M' : "تحديث",
'UPDATE_M1' : "UserScripts.orgلا يمكن العثور على",
'UPDATE_UNKNOWN' : "رقم الاصدار غير مطابق:",
'UPDATE_LAST' : "بحوذتك احدث اصدار",
'UPDATE_BETA' : "يوجد اصدار جديد و لكن تجريبي.",
'UPDATE_NEW' : "اصدار جديد متاح الان",
'UPDATE_NOW' : "هل تود التحديث الان؟",
'CONFIRM' : "تأكيد",
'REMOVING' : "يتم الحذف",
'SWITCH_V' : "سيتم تغيير القرية في:",
'AFTER' : "بعد",
'SEC' : "ثانية",
'NO_VILLAGE' : "لايوجد قرية بديلة!",
'WAITING' : "انتظار",
'BEFORE_RE' : "قبل اعادة الفحص.",
'ADD_FARM' : "سوف تقوم باضافة مزرعة جديدة",
'TROOP_CONFIG' : "تصنيف القوات هو:",
'ATTACK' : "هجوم كامل",
'REINFORCE' : "مساندة",
'RAID' : "هجوم للنهب",
'ACTIVE_FARM' : "مزرعة عاملة",
'CANCEL' : "الغاء",
'SAVE' : "حفظ",
'ADD_TO' : "اضافة الي",
'ADD_AS' : "اضافة كمزرعة",
'GLOBAL_IM_EX_PROMPT' : "انسخ بيانات جميع قراك أو الصق من ملف",
'GLOBAL_IM_EX_M' : "تصدير او استيراد معلومات المزارع الاصلية لجميع القرى",
'LOCAL_IM_EX_PROMPT' : "نسخ المعلومات / لصق المعلومات",
'LOCAL_IM_EX_M' : "تصدير أو استيراد معلومات المزارع لهذة القرية",
'OPTIMIZE_DONE' : "تم توزيع المزارع حسب المسافة من القرى بنجاح",
'OPTIMIZE_M' : "توزيع المزارع على القرى المختارة حسب المسافة.",
'OPTIMIZE_SM' : "سوف يتم توزيع المزارع على القرى حسب المسافة.",
'INVALID_FARM' : "تصنيف الجيش لهذة المزرعة غير صالح! هل تريد الحذف؟",
'DELETE_FARM' : "احذف هذة المزرعة.",
'EDIT_FARM' : "عدل المزرعة.",
'NO_FARM_YET' : "اضبط أي قرية لتكون مزرعة لك من صفحة هذة القرية.",
'FARM' : "مزرعة",
'SORT_FARM' : "رتب المزارع حسب مسافتها من القرية الحالية.",
'DELETE_M' : "X لحذف المزرعة اضغط على ",
'EDIT_M' : "اضغط على ايقونة تعديل, لتغيير معلومات المزرعة",
'END_M' : "اختار مزرعة التوقف الأخيرة من هنا, أو اضغط هنا لعدم توقف النهب نهائيا",
'START_M' : "اختار مزرعة البداية من هذا العمود",
'START_FARMING' : "ابداء النهب من القرى المختارة",
'MINIMIZE' : "تصغير",
'MAXIMIZE' : "تكبير",
'FARM_INACTIVE' : "المزرعة غير فعالة",
'ERROR' : "خطأ",
'NOT_ENOUGH' : "لايوجد قوات كافية للهجوم على:",
'AVAILABLE' : "متاح",
'NEEDED' : "مطلوب",
'TROOPS_GONE' : "القوات في طريقها الي",
'NEXT_FARM' : "المزرعة التالية",
'SUCCESS_COUNT' : "عدد مرات الارسال بنجاح",
'HALT_FARMING' : "توقف",
'MACHINE_RUNNING' : " تعملFarming Machine ",
'CHANGE_VILLAGE' : "احاول تغيير القرية الحالية",
'NO_FARM' : "لا يوجد مزرعة متاحة",
'NOT_FARMER' : "هذة ليست قرية مزارعة",
'USED_TROOPS' : "القوي المستخدمة",
'GOING_TO' : "ذاهب الى",
'INSTALL_M1' : "اضف مزارع جديدة من صفحات القرى مباشرة",
'INSTALL_M2' : "استمتع بالنهب",
'TRIBE_SELECT1' : "قبيلتك",
'TRIBE_SELECT2' : "برجاء ادخال الرقم الصحيح لقبيلتك.",
'TRIBE_SELECT3' : "لم تستطع ادخال رقم قبيلتك الصحيحة. سوف يتم تعيين قبيلتك الرومان.",
'ROMAN' : "رومان",
'TEUTON' : "جرمان",
'GAUL' : "الاغريق",
//Settings
'SETRANDOMIZE' : "الزراعة بطريقة عشوائية",
'SETREADREP' : "اناليزي تقارير لجعل قائمة انتظار ذات الأولوية",
'SETDELTLIST' : "حذف قائمة مؤقتة عندما وقف",
'DELTEMPLIST' : "قائمة مؤقتة حذف يدويا",
'UPDATE_SETTINGS' : "إعدادات التحديث",
'SETVILSKIP' : "تنشيط قرية تخطي",
'FARMMARKING' : "مزارع مارك في الخريطة",
'DYNAMICTROOPCOUNT' : "دينامية القوات"
}
}else if (ext == "de") { //Language:German, Translator : Tequila/pixelgeek
lang = {
'UPDATE_M' : "Update",
'UPDATE_M1' : "UserScripts.org nicht gefunden.",
'UPDATE_UNKNOWN' : "Versions Nummer stimmt nicht überein :",
'UPDATE_LAST' : "Du hast das Neuste",
'UPDATE_BETA' : "Eine Neue Beta-Version ist verfügbar",
'UPDATE_NEW' : "Eine Neue Version ist verfügbar",
'UPDATE_NOW' : "Wollen Sie updaten?",
'CONFIRM' : "Sind Sie sicher?",
'REMOVING' : "Entfernen",
'SWITCH_V' : "wechsel zu Dorf",
'AFTER' : "später",
'SEC' : "sekunden",
'NO_VILLAGE' : "kein anderes Dorf verfügbar!",
'WAITING' : "warte",
'BEFORE_RE' : "before recheck.",
'ADD_FARM' : "Farm hinzufügen",
'TROOP_CONFIG' : "Truppen Einstellung",
'ATTACK' : "Angriff",
'REINFORCE' : "Unterstützung",
'RAID' : "Raubzug",
'ACTIVE_FARM' : "Aktive Farm",
'CANCEL' : "Abbrechen",
'SAVE' : "Speichern",
'ADD_TO' : "Hinzufügen",
'ADD_AS' : "Als Farm hinzufügen",
'GLOBAL_IM_EX_PROMPT' : "Farmdaten kopieren oder einfügen",
'GLOBAL_IM_EX_M' : "Importieren oder exportieren der roh Farmdaten aus allen Dörfern",
'LOCAL_IM_EX_PROMPT' : "Daten kopieren / Neue Daten einfügen",
'LOCAL_IM_EX_M' : "Importieren oder exportieren der Farmdaten aus diesem Dorf",
'OPTIMIZE_DONE' : "Entfernungsoptimirung erfolgt",
'OPTIMIZE_M' : "Optimiere alle Farmen im ausgewählten Dorf nach Entfernungen.",
'OPTIMIZE_SM' : "Optimiere alle Farmen in den ausgewählten Dörfern nach Entfernungen",
'INVALID_FARM' : "Die Truppeneinstellung ist ungültig! Entfernen?",
'DELETE_FARM' : "Farm entfernen.",
'EDIT_FARM' : "Farm bearbeiten",
'NO_FARM_YET' : "Wähle ein beliebiges Dorf als Farm, in der Dorfansicht",
'FARM' : "Farmen",
'SORT_FARM' : "Sortiert die Farmen nach Enfernung im momentanen Dorf",
'DELETE_M' : "x klicken um Farm zu löschen",
'EDIT_M' : "Auf das Edit Icon klicken um eine Farm zu editieren",
'END_M' : "Ende der Liste festlegen, Hier klicken um den EndIndex zu entfernen",
'START_M' : "Anfang der Liste festlegen",
'START_FARMING' : "Bei ausgewähltem Dorf mit farmen beginnen",
'MINIMIZE' : "Minimieren",
'MAXIMIZE' : "Maximieren",
'FARM_INACTIVE' : "Farm als inaktiv ausgewählt",
'ERROR' : "Fehler",
'NOT_ENOUGH' : "Nicht genügend Truppen vorhanden",
'AVAILABLE' : "Verfügbar",
'NEEDED' : "werden gebraucht",
'TROOPS_GONE' : "Truppen unterwegs",
'NEXT_FARM' : "wähle nächste Farm aus",
'SUCCESS_COUNT' : "Erfolgreich versendete Truppen",
'HALT_FARMING' : "STOP",
'MACHINE_RUNNING' : "Farm Maschine aktiviert",
'CHANGE_VILLAGE' : "Versuche aktuelles Dorf zu wechseln",
'NO_FARM' : "Keine Farm verfügbar",
'NOT_FARMER' : "Dies ist kein Farmdorf",
'USED_TROOPS' : "Benutzte Truppen",
'GOING_TO' : "Wechsel zu",
'INSTALL_M1' : "Neue Farmen vom Dorfprofil hinzufügen",
'INSTALL_M2' : "Happy Farming",
'TRIBE_SELECT1' : "Dein Volk",
'TRIBE_SELECT2' : "Bitte die richtige Zahl für dein Volk eingeben.",
'TRIBE_SELECT3' : "Du konntest nicht das richtige Volk einstellen, Römer wurden als Standart gewählt.",
'ROMAN' : "Römer",
'TEUTON' : "Germane",
'GAUL' : "Gallier",
//Settings
'SETRANDOMIZE' : "Zufallsfarmen aktivieren",
'SETREADREP' : "Berichte für die Erstellung einer Prioritätenliste analysieren",
'SETDELTLIST' : "Temporäre Farmingliste löschen wenn FM gestoppt wird",
'DELTEMPLIST' : "Temporäre Farmingliste manuell löschen",
'UPDATE_SETTINGS' : "Einstellungen ändern",
'SETVILSKIP' : "Dorfwechsel falls zuwenig Truppen vorhanden sind",
'FARMMARKING' : "Farmen in Karte markieren",
'DYNAMICTROOPCOUNT' : "Dynamic Troops"
}
} else if (ext == "cn") { //Language:简体中文,, Translator : congxz6688
lang = {
'UPDATE_M' : "升级",
'UPDATE_M1' : "UserScripts.org 无法连接",
'UPDATE_UNKNOWN' : "版本号不匹配 :",
'UPDATE_LAST' : "你正在使用最新版",
'UPDATE_BETA' : "一个新的Beta版可用",
'UPDATE_NEW' : "一个新版本可用",
'UPDATE_NOW' : "你现在要升级本脚本",
'CONFIRM' : "确定吗",
'REMOVING' : "移除",
'SWITCH_V' : "将切换村庄至",
'AFTER' : "请稍候",
'SEC' : "秒",
'NO_VILLAGE' : "没有其它村庄可切换",
'WAITING' : "正在等待",
'BEFORE_RE' : "在重新检测以前",
'ADD_FARM' : "你正在添加你的羊",
'TROOP_CONFIG' : "军队配置为",
'ATTACK' : "攻击",
'REINFORCE' : "增援",
'RAID' : "掠夺",
'ACTIVE_FARM' : "激活打羊行动",
'CANCEL' : "取消",
'SAVE' : "保存",
'ADD_TO' : "添加到",
'ADD_AS' : "存为肥羊",
'GLOBAL_IM_EX_PROMPT' : "复制所有村庄数据或从备份中粘贴数据",
'GLOBAL_IM_EX_M' : "为所有村子导入或导出肥羊数据",
'LOCAL_IM_EX_PROMPT' : "复制数据或粘贴新数据",
'LOCAL_IM_EX_M' : "导入或导出这个村子的数据",
'OPTIMIZE_DONE' : "成功地进行了距离优化",
'OPTIMIZE_M' : "以距离为基础优化打羊程序.",
'OPTIMIZE_SM' : "将要在选中的村子里进行距离优化",
'INVALID_FARM' : "打羊部队的设定无效,移除它?",
'DELETE_FARM' : "删掉这一记录",
'EDIT_FARM' : "编辑此羊",
'NO_FARM_YET' : "你还没有设定属于自己的肥羊,赶快动手吧",
'FARM' : "肥羊",
'SORT_FARM' : "以当前村为标准,按距离给肥羊排序",
'DELETE_M' : "按X删除羊",
'EDIT_M' : "按编辑图标编辑羊",
'END_M' : "从队列中选择结束点,按这里移除终点",
'START_M' : "在队列中选择起始点",
'START_FARMING' : "从选定的村庄开始打羊行动",
'MINIMIZE' : "最小化",
'MAXIMIZE' : "最大化",
'FARM_INACTIVE' : "肥羊设置失效",
'ERROR' : "计划暂时受阻",
'NOT_ENOUGH' : "没有足够的军队攻击",
'AVAILABLE' : " 可用",
'NEEDED' : "需要",
'TROOPS_GONE' : "正在派遣军队到",
'NEXT_FARM' : "自动选择下一肥羊",
'SUCCESS_COUNT' : "成功发送总计",
'HALT_FARMING' : "中止打羊行动",
'MACHINE_RUNNING' : "打羊机运行中",
'CHANGE_VILLAGE' : "尝试改变当前村子",
'NO_FARM' : "没有可用的羊",
'NOT_FARMER' : "此村未参与打羊",
'USED_TROOPS' : "正在调动军队",
'GOING_TO' : "正在准备 -",
'INSTALL_M1' : "小提示:你可以从敌村描述页把它添加为肥羊",
'INSTALL_M2' : "尽情享受吧",
'TRIBE_SELECT1' : "你的种族",
'TRIBE_SELECT2' : "请输入一个正确的种族代码",
'TRIBE_SELECT3' : "你未能正确设定你的种族,默认为罗马。",
'ROMAN' : "罗马",
'TEUTON' : "日尔曼",
'GAUL' : "高卢",
//Settings
'SETRANDOMIZE' : "随机农业",
'SETREADREP' : "极大的关联性报告,以优先队列",
'SETDELTLIST' : "停车时删除临时名单",
'DELTEMPLIST' : "手动删除临时名单",
'UPDATE_SETTINGS' : "更新设置",
'SETVILSKIP' : "跳过激活乡村",
'FARMMARKING' : "在地图马克农场",
'DYNAMICTROOPCOUNT' : "动态部队"
}
}else if (ext == "id") { //Language:Indonesia, Translator : Abhy Boy
lang = {
'UPDATE_M' : "Update Script",
'UPDATE_M1' : "UserScripts.org tidak ditemukan.",
'UPDATE_UNKNOWN' : "Versi Update tidak sesuai :",
'UPDATE_LAST' : "Script saat ini adalah yang terbaru",
'UPDATE_BETA' : "Versi BETA yang baru sudah tersedia",
'UPDATE_NEW' : "Versi yang baru sudah tersedia",
'UPDATE_NOW' : "Anda ingin Update sekarang",
'CONFIRM' : "Anda Yajin",
'REMOVING' : "Menghapus",
'SWITCH_V' : "Berpindah ke Desa yang lain pada ",
'AFTER' : "setelah",
'SEC' : "detik",
'NO_VILLAGE' : "Tidak ada Desa lain lagi yang akan di serang!",
'WAITING' : "Menunggu",
'BEFORE_RE' : "sebelum cek ulang.",
'ADD_FARM' : "Anda akan menambahkan daftar Serang",
'TROOP_CONFIG' : "Konfigurasi serangan adalah ",
'ATTACK' : "Menyerang Penuh",
'REINFORCE' : "Bantuan",
'RAID' : "Merampas",
'ACTIVE_FARM' : "Aktif Diserang",
'CANCEL' : "batal",
'SAVE' : "Simpan",
'ADD_TO' : "Tambahkan Ke",
'ADD_AS' : "Ditambahkan Serangan",
'GLOBAL_IM_EX_PROMPT' : "Gandakan data atau ganti dengan data yang baru",
'GLOBAL_IM_EX_M' : "Import atau Export data raw untuk semua Desa",
'LOCAL_IM_EX_PROMPT' : "Gandakan Data / Timpakan Data Baru",
'LOCAL_IM_EX_M' : "Import atau Export data raw untuk Desa ini",
'OPTIMIZE_DONE' : "Berhasil melakukan optimalisasi berdasar jarak",
'OPTIMIZE_M' : "Optimalkan Serangan berdasar jarak.",
'OPTIMIZE_SM' : "Mulai melakukan optimalisasi Serangan berdasar jarak",
'INVALID_FARM' : "Seting Tentara tidak benar! hapus ini ?",
'DELETE_FARM' : "Hapus data ini.",
'EDIT_FARM' : "Ubah data ini",
'NO_FARM_YET' : "Ubah sebuah desa menjadi jajahan Anda dari Halaman Profile Desa",
'FARM' : "Jajah",
'SORT_FARM' : "urutkan berdasarkan jarak mulai dari data ini",
'DELETE_M' : "Tekan tanda X untuk menghapus Data Jajahan",
'EDIT_M' : "Tekan tanda X untuk merubah Data Jajahan",
'END_M' : "Pilih Posisi terakhir pada data, Tekan disini untuk membuang tanda",
'START_M' : "Pilih posisi mulai di sini",
'START_FARMING' : "Mulai menjajah dari Desa terpilih",
'MINIMIZE' : "Kecilkan",
'MAXIMIZE' : "Besarkan",
'FARM_INACTIVE' : "jajahan diset tidak aktif",
'ERROR' : "Kesalahan",
'NOT_ENOUGH' : "Tidak cukup tentara untuk menjajah pada",
'AVAILABLE' : "Tersedia",
'NEEDED' : "Diperlukan",
'TROOPS_GONE' : "Tentara sedang menuju ",
'NEXT_FARM' : "Pilih Jajahan Berikutnya",
'SUCCESS_COUNT' : "Jumlah kiriman Pasukan yang berhasil ",
'HALT_FARMING' : "Hentikan Jajahan",
'MACHINE_RUNNING' : "Mesin Jajahan Berjalana",
'CHANGE_VILLAGE' : "Berusaha mengganti Desa yang dijajah",
'NO_FARM' : "Tidak ada Jajahan tersedia",
'NOT_FARMER' : "bukan desa yang bisa Dijajah",
'USED_TROOPS' : "Pasukan digunakan",
'GOING_TO' : "Menuju ke",
'INSTALL_M1' : "Tambah sebuah desa menjadi jajahan Anda dari Halaman Profile Desa",
'INSTALL_M2' : "Selamat bersenang - senang",
'TRIBE_SELECT1' : "Kebangsaan Anda",
'TRIBE_SELECT2' : "Silakan pilih angka yang sesuai dengan kebangsaaan pasukan.",
'TRIBE_SELECT3' : "Anda salah memilih Kebangsaan, Gunakan Romawi sebagai defaultnya.",
'ROMAN' : "Romawi",
'TEUTON' : "Teuton",
'GAUL' : "Gaul",
//Settings
'SETRANDOMIZE' : "Mengacak pertanian",
'SETREADREP' : "Analisis laporan untuk membuat antrian prioritas",
'SETDELTLIST' : "Hapus daftar sementara saat berhenti",
'DELTEMPLIST' : "Hapus daftar sementara secara manual",
'UPDATE_SETTINGS' : "Pengaturan pembaruan",
'SETVILSKIP' : "Aktifkan desa skipping",
'FARMMARKING' : "Mark peternakan di peta",
'DYNAMICTROOPCOUNT' : "Pasukan Dinamis"
}
} else if (ext == "fr") { //Language:français, Translator : Sch@k@
lang = {
'UPDATE_M' : "Mise à jour",
'UPDATE_M1' : "UserScripts.org non trouvé.",
'UPDATE_UNKNOWN' : "Le numéro de version ne correspond pas :",
'UPDATE_LAST' : "Tu utilises le plus récent",
'UPDATE_BETA' : "Une nouvelle version BETA est arrivée",
'UPDATE_NEW' : "Une nouvelle version est arrivée",
'UPDATE_NOW' : "Veux-tu mettre à jour maintenant",
'CONFIRM' : "Es-tu sÜr",
'REMOVEING' : "Effacer",
'SWITCH_V' : "Passe au village à",
'AFTER' : "après",
'SEC' : "secondes",
'NO_VILLAGE' : "Pas d'autre village où aller !",
'WAITING' : "Attendre",
'BEFORE_RE' : "avant de relancer.",
'ADD_FARM' : "Tu vas ajouter une cible ",
'TROOP_CONFIG' : "Ton armée est ",
'ATTACK' : "attaquer",
'REINFORCE' : "soutenir",
'RAID' : "piller",
'ACTIVE_FARM' : "Actif",
'CANCEL' : "Arrêter",
'SAVE' : "Sauver",
'ADD_TO' : "Ajouter à",
'ADD_AS' : "Ajouter en tant que cible",
'GLOBAL_IM_EX_PROMPT' : "Copie les données de tous les villages ou colle les données sauvegardées",
'GLOBAL_IM_EX_M' : "Importe ou exporte les données pour tous les villages",
'LOCAL_IM_EX_PROMPT' : "Copie ou Colle les données de ce village",
'LOCAL_IM_EX_M' : "Importe ou exporte les données de ce village",
'OPTIMIZE_DONE' : "Optimisation des distances réussie",
'OPTIMIZE_M' : "Optimise l'ordre des villages par rapport à l'éloignement du tien",
'OPTIMIZE_SM' : "Optimise l'ordre de tous les villages par rapport à l'eloignement de tes villages sélectionnés",
'INVALID_FARM' : "Réglages des troupes invalides ! Les effacer ?",
'DELETE_FARM' : "Efface ce pillage",
'EDIT_FARM' : "Edite ce pillage",
'NO_FARM_YET' : "Ajoute n'importe quel village dans ta liste en allant sur les informations de celui-ci",
'FARM' : "Pillage",
'SORT_FARM' : "Trie les pillages par distance du village actuel",
'DELETE_M' : "Clique sur X pour effacer un pillage",
'EDIT_M' : "Clique sur l'icone pour éditer un pillage",
'END_M' : "Sélectionne la position de fin, clique ici pour effacer",
'START_M' : "Sélectionne la position de départ",
'START_FARMING' : "Lancement des pillages sur les villages sélectionnés",
'MINIMIZE' : "Minimise",
'MAXIMIZE' : "Maximise",
'FARM_INACTIVE' : "Le pillage est inactif",
'ERROR' : "En attente ...",
'NOT_ENOUGH' : "Pas assez de troupes pour piller",
'AVAILABLE' : "Disponible",
'NEEDED' : "Nécessaire",
'TROOPS_GONE' : "Armée en route pour",
'NEXT_FARM' : "Sélection de la cible suivante",
'SUCCESS_COUNT' : "Total des attaques envoyées",
'HALT_FARMING' : "--> ARRETER <--",
'MACHINE_RUNNING' : "Pillages en cours .",
'CHANGE_VILLAGE' : "Tentative de changement de village :",
'NO_FARM' : "Plus de pillage possible",
'NOT_FARMER' : "Pas de pillages sur ce village",
'USED_TROOPS' : "Armée utilisée",
'GOING_TO' : "Préparation pour ",
'INSTALL_M1' : "Ajoute une nouvelle cible à partir de la carte",
'INSTALL_M2' : "Joyeux pillages",
'TRIBE_SELECT1' : "Ta tribu",
'TRIBE_SELECT2' : "Entre un nombre correct pour ta tribu.",
'TRIBE_SELECT3' : "Tu n as pas mis la bonne tribu.",
'ROMAN' : "Romains",
'TEUTON' : "Germains",
'GAUL' : "Gaulois",
//Settings
'SETRANDOMIZE' : "Lance les pillages aléatoirement",
'SETREADREP' : "Analyse les rapports afin d'optimiser les pillages",
'SETDELTLIST' : "Efface la liste temporaire une fois arrêté",
'DELTEMPLIST' : "Supprimer la liste temporaire manuellement",
'UPDATE_SETTINGS' : "Mise à jour des paramètres",
'SETVILSKIP' : "Activer village à sauter",
'FARMMARKING' : "Mark fermes sur la carte",
'DYNAMICTROOPCOUNT' : "Dynamic troupes"
}
} else if (ext == "no") { //Language:norwegian, Translator : Koffirola
lang = {
'UPDATE_M' : "Oppdater",
'UPDATE_M1' : "UserScripts.org ble ikke funnet.",
'UPDATE_UNKNOWN' : "Du har ikke versjon :",
'UPDATE_LAST' : "Du bruker den siste versjonen",
'UPDATE_BETA' : "En ny BETA versjon er tilgjengelig!",
'UPDATE_NEW' : "En ny versjon er tilgjengelig!",
'UPDATE_NOW' : "Vil du oppdatere nå",
'CONFIRM' : "Er du sikker",
'REMOVING' : "Fjerner",
'SWITCH_V' : "Bytter til byen med",
'AFTER' : "etter",
'SEC' : "andre",
'NO_VILLAGE' : "Ingen andre byer å gå til!",
'WAITING' : "Venter",
'BEFORE_RE' : "før ny sjekk.",
'ADD_FARM' : "Du kommer til å legge til farm",
'TROOP_CONFIG' : "Troppeinstillingene er",
'ATTACK' : "Angrip",
'REINFORCE' : "Forsterk",
'RAID' : "Plyndring",
'ACTIVE_FARM' : "Aktiv farm",
'CANCEL' : "Avbryt",
'SAVE' : "Lagre",
'ADD_TO' : "Legg til",
'ADD_AS' : "Legg til som farm",
'GLOBAL_IM_EX_PROMPT' : "Kopier alle byenes data, eller legg til ny data",
'GLOBAL_IM_EX_M' : "Importer eller eksporter rå farm-data fra alle byer",
'LOCAL_IM_EX_PROMPT' : "Kopier / Lim inn farm data",
'LOCAL_IM_EX_M' : "Importer eller Eksporter farm data for denne byen",
'OPTIMIZE_DONE' : "Distansekalkulasjon er ferdig",
'OPTIMIZE_M' : "Sorter farmene dine i denne byen etter distanse.",
'OPTIMIZE_SM' : "Sorterer farmene dine etter distanse",
'INVALID_FARM' : "Farmens troppeinstillinger er feil! Slette den?",
'DELETE_FARM' : "Slett denne farmen",
'EDIT_FARM' : "Endre denne farmen",
'NO_FARM_YET' : "Sett en by som Farm fra Byens Profilside.Set any village as your farm from Village Profile Page",
'FARM' : "Farm",
'SORT_FARM' : "Sorter farmene fine etter Distanse fra denn byen",
'DELETE_M' : "Trykk på 'X' ikonet for å slette en farm.",
'EDIT_M' : "Trykk på 'Endre' ikonet for å endre en farm",
'END_M' : "Velg sluttpunk for farming i denne kolonnen. Trykk her for å slette EndIndex",
'START_M' : "Velg startposisjon fra denne kolonnen",
'START_FARMING' : "Start å farme fra de valgte byene",
'MINIMIZE' : "Minimer",
'MAXIMIZE' : "Maksimer",
'FARM_INACTIVE' : "Farmen er satt som Inaktiv",
'ERROR' : "En Feil oppstod",
'NOT_ENOUGH' : "Det er ikke nok tropper for raidet mot",
'AVAILABLE' : "Tilgjengelig",
'NEEDED' : "Trengs",
'TROOPS_GONE' : "Tropper er på vei til",
'NEXT_FARM' : "Velger neste farm",
'SUCCESS_COUNT' : "Totalt Gjennomførte Troppe-Sendinger",
'HALT_FARMING' : "Stopp Farming",
'MACHINE_RUNNING' : "Farming Maskinen Kjører",
'CHANGE_VILLAGE' : "Prøver å Bytte Gjeldende By",
'NO_FARM' : "Ingen Tilgjengelige Farmer",
'NOT_FARMER' : "Dette er Ikke en Farmeby",
'USED_TROOPS' : "Brukte Tropper",
'GOING_TO' : "Går Til",
'INSTALL_M1' : "Legg til en ny Farm fra Byens Profilside",
'INSTALL_M2' : "Lykke til med Farmingen!",
'TRIBE_SELECT1' : "Din Stamme",
'TRIBE_SELECT2' : "Vennligst skriv inn riktig nummer for din stamme.",
'TRIBE_SELECT3' : "Du Valgte ikke Riktig Stamme, Romer blir satt som Standard.",
'ROMAN' : "Romer",
'TEUTON' : "Germaner",
'GAUL' : "Galler",
//Settings
'SETRANDOMIZE' : "Tilfeldig Farming",
'SETREADREP' : "Analyser Rapporter for å lage en Prioritetskø",
'SETDELTLIST' : "Slett Midlertidig Liste når Farmingen er Ferdig",
'DELTEMPLIST' : "Slett midlertidige liste",
'UPDATE_SETTINGS' : "Oppdater innstillinger",
'SETVILSKIP' : "Aktiver landsbyen hopper",
'FARMMARKING' : "Mark gårder i kart",
'DYNAMICTROOPCOUNT' : "Dynamisk Tropper"
}
} else if (ext == "asia") { //Language:thai, Translator : XPeter
lang = {
'UPDATE_M' : "อัพเดท",
'UPDATE_M1' : "ไม่พบเวปไซด์ UserScripts.org .",
'UPDATE_UNKNOWN' : "ไม่พบเลขเวอร์ชั่น :",
'UPDATE_LAST' : "คุณกำลังใช้เวอร์ชั่นล่าสุด",
'UPDATE_BETA' : "พบเวอร์ชั่น BETA ใหม่",
'UPDATE_NEW' : "พบเวอร์ชั่นใหม่",
'UPDATE_NOW' : "คุณต้องการอัพเดทเดี๋ยวนี้",
'CONFIRM' : "คุณแน่ใจหรือไม่",
'REMOVEING' : "กำลังลบ",
'SWITCH_V' : "เปลี่ยนไปยังหมู่บ้านที่",
'AFTER' : "หลังจาก",
'SEC' : "วินาที",
'NO_VILLAGE' : "ไม่มีฟาร์มอื่นแล้ว",
'WAITING' : "กำลังรอ",
'BEFORE_RE' : "ก่อนจะเช็คอีกครั้ง",
'ADD_FARM' : "คุณกำลังจะเพิ่มฟาร์ม",
'TROOP_CONFIG' : "จำนวนกองทัพทั้งหมดคือ",
'ATTACK' : "โจมตี",
'REINFORCE' : "ส่งกำลังเสริม",
'RAID' : "ปล้น",
'ACTIVE_FARM' : "ใช้ฟาร์มนี้",
'CANCEL' : "ยกเลิก",
'SAVE' : "บันทึก",
'ADD_TO' : "เพิ่มลง",
'ADD_AS' : "เพิ่มเป็นฟาร์ม",
'GLOBAL_IM_EX_PROMPT' : "Copy ข้อมูล All Village Data หรือ Paste Data จาก backup",
'GLOBAL_IM_EX_M' : "Import หรือ Export ข้อมูล raw farm data สำหรับทุกหมู่บ้าน",
'LOCAL_IM_EX_PROMPT' : "Copy ข้อมูล / Paste ข้อมูลใหม่",
'LOCAL_IM_EX_M' : "Import หรือ Export ข้อมูลฟาร์มของหมู่บ้าน",
'OPTIMIZE_DONE' : "เรียงลำดับฟาร์มใหม่อัตโนมัติเรียบร้อยแล้ว",
'OPTIMIZE_M' : "เรียงลำดับฟาร์มใหม่อัตโนมัติตามระยะทาง",
'OPTIMIZE_SM' : "กำลังเรียงลำดับฟาร์มใหม่อัตโนมัติตามระยะทาง",
'INVALID_FARM' : "เลือกข้อมูลกองทัพของฟาร์มผิดพลาด ต้องการลบ?",
'DELETE_FARM' : "ลบฟาร์มนี้",
'EDIT_FARM' : "แก้ไขฟาร์มนี้",
'NO_FARM_YET' : "เลือกหมู่บ้านเป็นฟาร์มได้จากหน้าหลักของหมู่บ้านนั้น",
'FARM' : "ฟาร์ม",
'SORT_FARM' : "เรียงลำดับฟาร์มตามระยะทางจากหมู่บ้านนี้",
'DELETE_M' : "คลิ๊กที่ปุ่ม X เพื่อลบฟาร์ม",
'EDIT_M' : "คลิ๊กปุ่ม Edit เพื่อแก้ไขรายละเอียดของฟาร์ม",
'END_M' : "เลือกจุดสิ้นสุดจากแถวนี้, คลิ๊กที่นี่เพื่อยกเลิกจุดสิ้นสุด",
'START_M' : "เลือกจุดเริ่มต้นจากแถวนี้",
'START_FARMING' : "เริ่มต้นฟาร์มจากหมู่บ้านที่เลือกไว้",
'MINIMIZE' : "ย่อส่วน",
'MAXIMIZE' : "ขยายส่วน",
'FARM_INACTIVE' : "ฟาร์มถูกยกเลิก",
'ERROR' : "เกิดความขัดข้อง",
'NOT_ENOUGH' : "กองทัพมีจำนวนไม่พอกับการปล้นที่",
'AVAILABLE' : "ว่าง",
'NEEDED' : "ต้องการ",
'TROOPS_GONE' : "กองทัพอยู่ระหว่างทางไป",
'NEXT_FARM' : "กำลังเลือกฟาร์มต่อไป",
'SUCCESS_COUNT' : "ส่งกองทัพสำเร็จทั้งหมด",
'HALT_FARMING' : "ยกเลิกการฟาร์ม",
'MACHINE_RUNNING' : "Farming Machine กำลังทำงาน",
'CHANGE_VILLAGE' : "กำลังเปลี่ยนไปยังหมู่บ้านถัดไป",
'NO_FARM' : "ไม่มีฟาร์มเหลืออยู่",
'NOT_FARMER' : "นี่ไม่ใช่ฟาร์ม",
'USED_TROOPS' : "กองทัพที่ใช้",
'GOING_TO' : "กำลังจะ",
'INSTALL_M1' : "คุณสามารถเพิ่มฟาร์มได้จากหน้าจุดระดมพล",
'INSTALL_M2' : "ขอให้สนุกกับการทำฟาร์ม",
'TRIBE_SELECT1' : "กองทัพของคุณ",
'TRIBE_SELECT2' : "กรุณาเลือกจำนวนของกองทัพให้ถูกต้อง",
'TRIBE_SELECT3' : "คุณเลือกชนิดกองทัพไม่ถูกต้อง, ระบบเลือกให้อัดโนมัติ",
'ROMAN' : "โรมัน",
'TEUTON' : "ทูทันส์",
'GAUL' : "กอลส์",
//Settings
'SETRANDOMIZE' : "เกษตร Randomize",
'SETREADREP' : "Analize รายงานให้คิวลำดับความสำคัญ",
'SETDELTLIST' : "ลบรายการชั่วคราวเมื่อหยุด",
'DELTEMPLIST' : "รายการชั่วคราวลบด้วยตนเอง",
'UPDATE_SETTINGS' : "การตั้งค่า Update",
'SETVILSKIP' : "หมู่บ้านเปิดข้าม",
'FARMMARKING' : "ฟาร์ม Mark ในแผนที่",
'DYNAMICTROOPCOUNT' : "ยก Dynamic"
}
} else if (ext == "fi") { //Language:finnish, Translator : gotler
lang = {
'UPDATE_M' : "Päivitä",
'UPDATE_M1' : "Osoitetta UserScripts.org ei löydy.",
'UPDATE_UNKNOWN' : "Versionumero ei täsmää :",
'UPDATE_LAST' : "Käytät viimeisintä versiota",
'UPDATE_BETA' : "Uusi BETA versio saatavilla",
'UPDATE_NEW' : "UUSI versio saatavilla",
'UPDATE_NOW' : "Haluatko päivittää nyt",
'CONFIRM' : "Oletko varma",
'REMOVING' : "Poistetaan",
'SWITCH_V' : "Vaihdetaan kylään koordinaateissa",
'AFTER' : "jälkeen",
'SEC' : "sekuntia",
'NO_VILLAGE' : "Ei farmattavia kyliä jäljellä!",
'WAITING' : "Odotetaan",
'BEFORE_RE' : "ennen uudelleentarkistusta.",
'ADD_FARM' : "Olet lisäämässä farmia",
'TROOP_CONFIG' : "Joukkomääritys on",
'ATTACK' : "Hyökkäys",
'REINFORCE' : "Vahvistus",
'RAID' : "Ryöstö",
'ACTIVE_FARM' : "Aktiivinen Farmi",
'CANCEL' : "Peruuta",
'SAVE' : "Tallenna",
'ADD_TO' : "Lisää",
'ADD_AS' : "Lisää farmiksi",
'GLOBAL_IM_EX_PROMPT' : "Copy All Village Data Or Paste Data from backup",
'GLOBAL_IM_EX_M' : "Import or Export raw farm data For all village",
'LOCAL_IM_EX_PROMPT' : "Copy the Data / Paste new Data",
'LOCAL_IM_EX_M' : "Import or Export farm data of this village",
'OPTIMIZE_DONE' : "Etäisyyksien optimointi onnistui",
'OPTIMIZE_M' : "Optimoi farmit valituissa kylissä etäisyyksien perusteella.",
'OPTIMIZE_SM' : "Going to Optimize All Farms In Selected Villages By their Distance",
'INVALID_FARM' : "Farm's Troops setting is invalid! Remove it?",
'DELETE_FARM' : "Poista farmi",
'EDIT_FARM' : "Muokkaa farmia",
'NO_FARM_YET' : "Set any village as your farm from Village Profile Page",
'FARM' : "Farmi",
'SORT_FARM' : "Järjestä farmit etäisyyden valittuun kylään perusteella",
'DELETE_M' : "Paina X kuvaketta poistaaksesi farmin",
'EDIT_M' : "Paina Muokkaa kuvaketta muokataksesi farmia",
'END_M' : "Valitse lopetuskohta. Paina tässä poistaaksesi valinnan",
'START_M' : "Valitse aloituskohta",
'START_FARMING' : "Aloita valittujen kylien farmaaminen",
'MINIMIZE' : "Minimoi",
'MAXIMIZE' : "Maksimoi",
'FARM_INACTIVE' : "Farmi ei ole aktiivinen",
'ERROR' : "Virhe",
'NOT_ENOUGH' : "Ei tarpeeksi joukkoja ryöstöön kylään",
'AVAILABLE' : "Saatavilla",
'NEEDED' : "Tarvitaan",
'TROOPS_GONE' : "Joukot ovat matkalla kylään",
'NEXT_FARM' : "Valitaan seuraava farmi",
'SUCCESS_COUNT' : "Onnistuneesti lähetettyjen lukumäärä",
'HALT_FARMING' : "Pysäytä farmaus",
'MACHINE_RUNNING' : "Farmikone käynnissä",
'CHANGE_VILLAGE' : "Yritetään vaihtaa nykyinen kylä",
'NO_FARM' : "Ei farmeja saatavilla",
'NOT_FARMER' : "Tämä ei ole farmaava kylä",
'USED_TROOPS' : "Käytetyt joukot",
'GOING_TO' : "Lähetetään",
'INSTALL_M1' : "Add New Farms from Village Profile Page",
'INSTALL_M2' : "Farmaamisen iloa",
'TRIBE_SELECT1' : "Heimosi",
'TRIBE_SELECT2' : "Anna heimon tyyppiä vastaava numero.",
'TRIBE_SELECT3' : "Et asettanut oikeaa heimoa, käytetään Roomalaisia oletuksena.",
'ROMAN' : "Roomalainen",
'TEUTON' : "Teutoni",
'GAUL' : "Gallialainen",
//Settings
'SETRANDOMIZE' : "Satunnainen farmaus",
'SETREADREP' : "Analysoi raportit muodostaaksesi prioriteettijonon",
'SETDELTLIST' : "Poista väliaikainen lista lopettaessa",
'DELTEMPLIST' : "Poista väliaikainen luettelo käsin",
'UPDATE_SETTINGS' : "Päivitä asetukset",
'SETVILSKIP' : "Ota kylä heitto",
'FARMMARKING' : "Mark tilojen kartta",
'DYNAMICTROOPCOUNT' : "Dynaaminen Joukot"
}
} else if (ext == "nl") { //Language:dutch, Translator : Inqt_vis
lang = {
'UPDATE_M' : "Update",
'UPDATE_M1' : "UserScripts.org niet gevonden.",
'UPDATE_UNKNOWN' : "Versie nummer komt niet overeen :",
'UPDATE_LAST' : "Je gebruikt de laatste versie.",
'UPDATE_BETA' : "Een nieuwe versie is beschikbaar, het is wel de BETA versie.",
'UPDATE_NEW' : "Een nieuw versie is beschikbaar.",
'UPDATE_NOW' : "Wil je nu updaten.",
'CONFIRM' : "Weet je het zeker?",
'REMOVING' : "Verwijderen",
'SWITCH_V' : "Wissel van dorp",
'AFTER' : "na",
'SEC' : "seconde",
'NO_VILLAGE' : "Geen ander dorp om naar toe te gaan!",
'WAITING' : "Wachten..",
'BEFORE_RE' : "voor recheck.",
'ADD_FARM' : "Je bent bezig met een nieuw farm toe te voegen",
'TROOP_CONFIG' : "Troepeninstellingen zijn",
'ATTACK' : "Aanval",
'REINFORCE' : "Versterking",
'RAID' : "Overval",
'ACTIVE_FARM' : "Actieve farm",
'CANCEL' : "Annuleer",
'SAVE' : "Opslaan",
'ADD_TO' : "Voeg toe aan",
'ADD_AS' : "Voeg toe aan Autofarm",
'GLOBAL_IM_EX_PROMPT' : "Kopieer alle dorpen data of plak alle data van een backup.",
'GLOBAL_IM_EX_M' : "Importeer of Exporteer Raw Farm Data van alle dorpen.",
'LOCAL_IM_EX_PROMPT' : "Kopieer de data / Plak nieuwe data",
'LOCAL_IM_EX_M' : "Importeer of exporteer Raw Farm Data van dit dorp.",
'OPTIMIZE_DONE' : "Sorteren op afstand gelukt!",
'OPTIMIZE_M' : "Sorteer farms in geselecteerde dorpen op hun afstand.",
'OPTIMIZE_SM' : "Sorteer farms in geselecteerde dorpen op hun afstand.",
'INVALID_FARM' : "Farm troepen instellingen is incorrect, verwijderen?",
'DELETE_FARM' : "Verwijder deze farm",
'EDIT_FARM' : "Wijzig deze farm",
'NO_FARM_YET' : "Zet een dorp als farmdorp op je dorpsprofiel pagina.",
'FARM' : "Farm",
'SORT_FARM' : "Sorteer farms op afstand van dit dorp",
'DELETE_M' : "Klik op het kruisje (X) om een farm te verwijderen",
'EDIT_M' : "Klik op de wijzig icoon om een farm te wijzigen",
'END_M' : "Selecteer eindpositie van deze rij, Klik hier om EndIndex te verwijderen",
'START_M' : "Selecteer startpositie van deze rij.",
'START_FARMING' : "Start Farming van geselecteerde dorpen",
'MINIMIZE' : "Minimaliseer",
'MAXIMIZE' : "Maximaliseer",
'FARM_INACTIVE' : "Farm ingesteld als inactive",
'ERROR' : "Error",
'NOT_ENOUGH' : "Niet genoeg troepen om te farmen",
'AVAILABLE' : "Beschikbaar",
'NEEDED' : "Nodig",
'TROOPS_GONE' : "Troepen op weg naar",
'NEXT_FARM' : "Bezig met volgende farm selecteren",
'SUCCESS_COUNT' : "Aantal succesvol verzonden",
'HALT_FARMING' : "Halt Farming",
'MACHINE_RUNNING' : "Farming Machine bezig",
'CHANGE_VILLAGE' : "Bezig met veranderen van dorp",
'NO_FARM' : "Geen farm beschikbaar.",
'NOT_FARMER' : "Dit is geen farmersdorp.",
'USED_TROOPS' : "Gebruikte troepen",
'GOING_TO' : "Gaan naar",
'INSTALL_M1' : "Voeg nieuwe farms toe van Dorpsprofiel pagina.",
'INSTALL_M2' : "Succes met farmen.",
'TRIBE_SELECT1' : "Je volk",
'TRIBE_SELECT2' : "Gebruik een correct getal voor je volk instellingen..",
'TRIBE_SELECT3' : "Het is niet gelukt om je volk in te stellen, Romein standaard ingesteld.",
'ROMAN' : "Romein",
'TEUTON' : "Germaan",
'GAUL' : "Gallier",
//Settings
'SETRANDOMIZE' : "Willekeurig farmen",
'SETREADREP' : "Bekijk reports om een prioriteitslijst te maken",
'SETDELTLIST' : "Verwijder tijdelijke lijst wanneer je stopt",
'DELTEMPLIST' : "Verwijderen tijdelijke lijst handmatig",
'UPDATE_SETTINGS' : "Update instellingen",
'SETVILSKIP' : "Activeer dorp overslaan",
'FARMMARKING' : "Mark boerderijen in de kaart",
'DYNAMICTROOPCOUNT' : "Dynamische Troepen"
}
} else if (ext == "ir") { //Language:persian, Translator : Reza_NA
lang = {
'UPDATE_M' : "بروز رسانی",
'UPDATE_M1' : "UserScripts.org پیدا نشد.",
'UPDATE_UNKNOWN' : "شماره نسخه مطابقت نمی کند :",
'UPDATE_LAST' : "شما از جدیدترین استفاده می کنید",
'UPDATE_BETA' : "نسخه جدید در دسترس است اما به صورت آزمایشی.",
'UPDATE_NEW' : "نسخه جدید در دسترس است",
'UPDATE_NOW' : "می خواهید بروز رسانی کنید",
'CONFIRM' : "آیا مطمئن هستید",
'REMOVEING' : "پاک کردن",
'SWITCH_V' : "تعویض به دهکده جدید در",
'AFTER' : "بعد از",
'SEC' : "ثانیه",
'NO_VILLAGE' : "دهکده دیگری برای حرکت نیست!",
'WAITING' : "صبر کنید",
'BEFORE_RE' : "قبل از بررسی مجدد.",
'ADD_FARM' : "شما در حال اضافه کردن مستعمره هستید",
'TROOP_CONFIG' : "آرایش لشکریان هست",
'ATTACK' : "حمله",
'REINFORCE' : "پشتیبانی",
'RAID' : "غارت",
'ACTIVE_FARM' : "مستعمره فعال",
'CANCEL' : "لغو",
'SAVE' : "ذخیره",
'ADD_TO' : "اضافه کردن به",
'ADD_AS' : "اضافه کرده به عنوان مستعمره",
'GLOBAL_IM_EX_PROMPT' : ".داده های تمام دهکده ها را رونوشت بگیرید یا داده های پشتیبانی را درج کنید",
'GLOBAL_IM_EX_M' : "وارد کردن یا خارج کردن ردیف داده های مستعمرات برای تمامی دهکده ها",
'LOCAL_IM_EX_PROMPT' : "از داده ها رونوشت بگیرید / داده های جدید را درج کنید",
'LOCAL_IM_EX_M' : "وارد کردن یا خارج کردن داده های همین مستعمره",
'OPTIMIZE_DONE' : "بهینه سازی مسافت با موفقیت انجام شد",
'OPTIMIZE_M' : "بهینه سازی مستعمرات در دهکده اصلی انتخاب شده برا اساس فاصله.",
'OPTIMIZE_SM' : "اقدام برای بهینه سازی تمامی مستعمرات در دهکده اصلی انتخاب شده برا اساس فاصله",
'INVALID_FARM' : "تنظیمات لشکریان برای مستعمره نامعتبر می باشد! پاک شود?",
'DELETE_FARM' : "حذف این مستعمره.",
'EDIT_FARM' : "ویرایش اطلاعات این مستعمره",
'NO_FARM_YET' : "انتخاب تمامی دهکده های به عنوان مستعمره از صفحه مشخصات دهکده",
'FARM' : "مستعمره",
'SORT_FARM' : "مرتب سازی بر اساس فاصله ی مستعمره از دهکده فعلی",
'DELETE_M' : "برای پاک کردن یک مستعمره روی تصوری ضربدر کلیک کنید",
'EDIT_M' : "برای اصلاح اطلاعات یک مستعمره بر روی تصویر ویرایش کلیک کنید",
'END_M' : "انتخاب نقطه پایان از این ستون، برای حذف آخرین اندیس اینجا کلیک کنید",
'START_M' : "انتخاب نقطه شروع از این ستون",
'START_FARMING' : "شروع غارت از دهکده های انتخاب شده",
'MINIMIZE' : "کوچک سازی",
'MAXIMIZE' : "حداکثر سازی",
'FARM_INACTIVE' : "تنظیم مستعمره بعنوان غیر فعال",
'ERROR' : "خطا",
'NOT_ENOUGH' : "برای حمله غارت سرباز کافی وجود دارد در",
'AVAILABLE' : "موجود",
'NEEDED' : "مورد نیاز",
'TROOPS_GONE' : "لشکریان در راه ",
'NEXT_FARM' : "انتخاب مستعمره بعدی",
'SUCCESS_COUNT' : "تمام لشکریان ارسال شده به صورت موفقیت آمیز",
'HALT_FARMING' : "متوقف ساختن غارت",
'MACHINE_RUNNING' : "دستگاه غارتگر در حال پردازش است",
'CHANGE_VILLAGE' : "تلاش برای تعویض دهکده فعلی",
'NO_FARM' : "هیچ مستعمره ای موجود نیست",
'NOT_FARMER' : "این دهکده مستعمره ای ندارد",
'USED_TROOPS' : "لشکریان استفاده شده",
'GOING_TO' : "حرکت برای",
'INSTALL_M1' : "اضافه کردن مستعمرات جدید از صفحه ی مشخصات دهکده ها",
'INSTALL_M2' : "غارت سودمند",
'TRIBE_SELECT1' : "نژاد شما",
'TRIBE_SELECT2' : "لطفا برای نژاد خود عدد مناسب وارد کنید.",
'TRIBE_SELECT3' : "شما نمی توانید نژاد فعلی خود را تعریف کنید، تنظیم رومی به عنوان پیشفرض.",
'ROMAN' : "رومی",
'TEUTON' : "توتن",
'GAUL' : "گول",
//Settings
'SETRANDOMIZE' : "کشاورزی تصادفی",
'SETREADREP' : "تحلیل گزارشات برای ایجاد صف اولویت بندی شده",
'SETDELTLIST' : "لیست حذف موقت هنگام توقف",
'DELTEMPLIST' : "پاک کردن لیست موقت دستی",
'UPDATE_SETTINGS' : "تنظیمات بروز رسانی",
'SETVILSKIP' : "دهکده فعال پرش",
'FARMMARKING' : "مزارع علامت گذاری در نقشه",
'DYNAMICTROOPCOUNT' : "نیروهای دینامیکی"
}
} else if (ext == "tw") { //Language:繁體中文, Translator : Mike Chuang
lang = {
'UPDATE_M' : "升級",
'UPDATE_M1' : "UserScripts.org 無法連線",
'UPDATE_UNKNOWN' : "未知版號 :",
'UPDATE_LAST' : "您使用的是最新版本",
'UPDATE_BETA' : "有新的Beta版可用",
'UPDATE_NEW' : "有新版可用",
'UPDATE_NOW' : "您現在要升級嗎",
'CONFIRM' : "確定嗎",
'REMOVING' : "移除",
'SWITCH_V' : "將切換村莊至",
'AFTER' : "請稍候",
'SEC' : "秒",
'NO_VILLAGE' : "沒有其他村莊可切換",
'WAITING' : "等待中",
'BEFORE_RE' : "在重新檢測以前",
'ADD_FARM' : "您正在增加您的羊",
'TROOP_CONFIG' : "軍隊配置為",
'ATTACK' : "攻擊:正常",
'REINFORCE' : "增援",
'RAID' : "攻擊:搶奪 ",
'ACTIVE_FARM' : "啟動打羊任務",
'CANCEL' : "取消",
'SAVE' : "保存",
'ADD_TO' : "增加到",
'ADD_AS' : "存為肥羊",
'GLOBAL_IM_EX_PROMPT' : "複製所有村莊資料或從備份中拷貝資料",
'GLOBAL_IM_EX_M' : "為所有村莊匯入或匯出肥羊資料",
'LOCAL_IM_EX_PROMPT' : "複製資料或拷貝新資料",
'LOCAL_IM_EX_M' : "匯入或匯出本村莊的資料",
'OPTIMIZE_DONE' : "距離優化完成",
'OPTIMIZE_M' : "以距離優化打羊程序.",
'OPTIMIZE_SM' : "將要在選擇中的村莊裡進行距離優化",
'INVALID_FARM' : "攻擊部隊的設定無效,移除它?",
'DELETE_FARM' : "刪除本任務",
'EDIT_FARM' : "編輯本任務",
'NO_FARM_YET' : "您還沒設定始於自己的肥羊,趕快行動吧",
'FARM' : "肥羊",
'SORT_FARM' : "以目前村莊為標準,按距離給肥羊排序",
'DELETE_M' : "按X刪除羊",
'EDIT_M' : "按編輯圖示編輯羊",
'END_M' : "從對列中選擇結束點,按這裡移除終點",
'START_M' : "在對列中選擇起始點",
'START_FARMING' : "從選擇的村莊開始打羊行動",
'MINIMIZE' : "最小化",
'MAXIMIZE' : "最大化",
'FARM_INACTIVE' : "肥羊設定失效",
'ERROR' : "計畫暫時受阻",
'NOT_ENOUGH' : "沒有足夠的軍隊攻擊",
'AVAILABLE' : " 可用",
'NEEDED' : "需要",
'TROOPS_GONE' : "正在派遣軍隊到",
'NEXT_FARM' : "自動選擇下一肥羊",
'SUCCESS_COUNT' : "攻擊成功發動總計",
'HALT_FARMING' : "終止打羊行動",
'MACHINE_RUNNING' : "攻擊機運行中",
'CHANGE_VILLAGE' : "嘗試改變當前村莊",
'NO_FARM' : "沒有可用的羊",
'NOT_FARMER' : "此村未參予打羊",
'USED_TROOPS' : "正在調動軍隊",
'GOING_TO' : "正在準備 -",
'INSTALL_M1' : "小提示:您可以從敵村村莊概述頁把它加入攻擊名單中",
'INSTALL_M2' : "盡情享受吧",
'TRIBE_SELECT1' : "您的種族",
'TRIBE_SELECT2' : "請輸入一個正確的種族代碼",
'TRIBE_SELECT3' : "您未能正確設定種族,內定為羅馬。",
'ROMAN' : "羅馬",
'TEUTON' : "日耳曼",
'GAUL' : "高盧",
//Settings
'SETRANDOMIZE' : "Randomize farming",
'SETREADREP' : "Analize reports to make a priority queue",
'SETDELTLIST' : "Delete temporary list when stopping",
'DELTEMPLIST' : "Delete temporary list manually",
'UPDATE_SETTINGS' : "Update settings",
'SETVILSKIP' : "Activate village skipping",
'FARMMARKING' : "Mark farms in map",
'DYNAMICTROOPCOUNT' : "Dynamic Troops"
}
} else if (ext == "lt") { //Language:Lithuanian Translator : m0ng00se
lang = {
'UPDATE_M' : "Atnaujinti",
'UPDATE_M1' : "UserScripts.org nerastas.",
'UPDATE_UNKNOWN' : "Nesutampa versijos numeris :",
'UPDATE_LAST' : "Jūs naudojatės vėliausia",
'UPDATE_BETA' : "Atsirado nauja BETA versija",
'UPDATE_NEW' : "Atsirado NAUJA versija",
'UPDATE_NOW' : "Ar norite atnaujinti",
'CONFIRM' : "Jūs įsitikinę",
'REMOVING' : "Šalinama",
'SWITCH_V' : "Jungiamasi į kaimą",
'AFTER' : "po",
'SEC' : "sek.",
'NO_VILLAGE' : "Neturite daugiau kaimų!",
'WAITING' : "Laukiama",
'BEFORE_RE' : "prieš patikrinimą.",
'ADD_FARM' : "Ketinate pridėti fermą",
'TROOP_CONFIG' : "Karių konfigūracija yra",
'ATTACK' : "Ataka",
'REINFORCE' : "Pastiprinimas",
'RAID' : "Reidas",
'ACTIVE_FARM' : "Aktyvi ferma",
'CANCEL' : "Atšaukti",
'SAVE' : "Išsaugoti",
'ADD_TO' : "Pridėti",
'ADD_AS' : "Pridėti fermą",
'GLOBAL_IM_EX_PROMPT' : "Kopijuoti kaimų duomenis arba įkelti informaciją iš kopijos",
'GLOBAL_IM_EX_M' : "Importuoti / Eksportuoti visų kaimų fermų duomenis",
'LOCAL_IM_EX_PROMPT' : "Kopijuoti duomenis / Įkelti duomenis",
'LOCAL_IM_EX_M' : "Importuoti / Eksportuoti šio kaimo fermų duomenis",
'OPTIMIZE_DONE' : "Atstumų optimizavimas sėkmingai atliktas",
'OPTIMIZE_M' : "Optimizuoti pasirinkto kaimo fermas pagal atstumą.",
'OPTIMIZE_SM' : "Ketinate optimizuoti pasirinkto kaimo fermas pagal atstumą",
'INVALID_FARM' : "Neteisingai nustatyti kariai ferminimui! Pašalinti?",
'DELETE_FARM' : "Pašalinti šią fermą.",
'EDIT_FARM' : "Redaguoti šią fermą",
'NO_FARM_YET' : "Pasirinkite kaimą, kurį ferminsite iš šiuo metu aktyvaus savo kaimo",
'FARM' : "Ferma",
'SORT_FARM' : "Rūšiuoti fermas pagal atstumą nuo jūsų kaimo",
'DELETE_M' : "Norėdami pašalinti fermą, paspauskite X",
'EDIT_M' : "Norėdami keisti fermos nustatymus, paspauskite Edit",
'END_M' : "Pasirinkite paskutinę poziciją nuo šio stulpelio, paspauskite čia, norėdami pašalinti EndIndex",
'START_M' : "Pasirinkite pradinę poziciją nuo šio stulpelio",
'START_FARMING' : "Pradėti pasirinktų kaimų ferminimą",
'MINIMIZE' : "Minimizuoti",
'MAXIMIZE' : "Maksimizuoti",
'FARM_INACTIVE' : "Ferma statusas pakeistas į neaktyvią",
'ERROR' : "Klaida",
'NOT_ENOUGH' : "Nepakanka karių reidinimui",
'AVAILABLE' : "Prieinama",
'NEEDED' : "Reikalinga",
'TROOPS_GONE' : "Kariai keliauja į",
'NEXT_FARM' : "Pasirinkti kitą fermą",
'SUCCESS_COUNT' : "Sėkmingų išsiuntimų skaičius",
'HALT_FARMING' : "Nustoti ferminti",
'MACHINE_RUNNING' : "Farming Machine dirba",
'CHANGE_VILLAGE' : "Bandoma pakeisti aktyvų kaimą",
'NO_FARM' : "Nėra fermų",
'NOT_FARMER' : "Čia ne ferminimo kaimas",
'USED_TROOPS' : "Naudoti kariai",
'GOING_TO' : "Keliaujama į",
'INSTALL_M1' : "Naujas fermas pridėkite iš kaimo aprašymo puslapio",
'INSTALL_M2' : "Sėkmės ferminant",
'TRIBE_SELECT1' : "Jūsų gentis",
'TRIBE_SELECT2' : "Įveskite teisingą jūsų genties kodą.",
'TRIBE_SELECT3' : "Jums nepavyko sėkmingai įvesti genties kodo, automatiškai nustatoma: Romėnai.",
'ROMAN' : "Romėnai",
'TEUTON' : "Germanai",
'GAUL' : "Galai",
//Settings
'SETRANDOMIZE' : "Ferminimas atsitiktine tvarka",
'SETREADREP' : "Analizuoti ataskaitas, ferminimo prioritetams nustatyti",
'SETDELTLIST' : "Išvalyti laikinąjį sąrašą, kai stabdoma",
'DELTEMPLIST' : "Išvalyti laikinąjį sąrašą rankiniu būdu",
'UPDATE_SETTINGS' : "Pakeisti nustatymus",
'SETVILSKIP' : "Įjungti kaimų praleidimą",
'FARMMARKING' : "Rodyti fermas žemėlapyje",
'DYNAMICTROOPCOUNT' : "Dinaminis karių parinkimas"
}
} else if (ext == "il") { //Language:Hebrew, Translator : Tzachi
lang = {
'UPDATE_M' : "עדכן",
'UPDATE_M1' : " לא נמצאUserScripts.org .",
'UPDATE_UNKNOWN' : "מספר הגירסה אינו תואם :",
'UPDATE_LAST' : "הגירסה מעודכנת",
'UPDATE_BETA' : "גירסת בטא חדשה זמינה",
'UPDATE_NEW' : "גירסה חדשה זמינה",
'UPDATE_NOW' : "אתה רוצה לעדכן עכשיו",
'CONFIRM' : "האם אתה בטוח",
'REMOVING' : "מסיר",
'SWITCH_V' : "מחליף לכפר ב",
'AFTER' : "בעוד",
'SEC' : "שניות",
'NO_VILLAGE' : "אין כפר נוסף לביצוע!",
'WAITING' : "ממתין",
'BEFORE_RE' : "לפני בדיקה מחדש.",
'ADD_FARM' : "הוספת חווה",
'TROOP_CONFIG' : "הגדרת החיילים היא",
'ATTACK' : "התקפה רגילה",
'REINFORCE' : "תגבור",
'RAID' : "בזיזה",
'ACTIVE_FARM' : "חווה פעילה",
'CANCEL' : "ביטול",
'SAVE' : "שמור",
'ADD_TO' : "הוסף ל",
'ADD_AS' : "הוסף כחווה",
'GLOBAL_IM_EX_PROMPT' : "העתק את כל נתוני החוות או הדבק נתונים מגיבוי",
'GLOBAL_IM_EX_M' : "ייבא או ייצא נתוני חווה לכל הכפרים",
'LOCAL_IM_EX_PROMPT' : "העתק נתונים / הדבק נתונים",
'LOCAL_IM_EX_M' : " ייבא או ייצא נתוני חווות של כפר זה ",
'OPTIMIZE_DONE' : "אופטימיזציה על פי מרחק בוצע בהצלחה",
'OPTIMIZE_M' : "בצע אופטימיזציה של החוות בכפר זה על פי מרחק.",
'OPTIMIZE_SM' : "מבצע אופטימיזציה לכל החוות בכפר הנבחר על פי מרחק",
'INVALID_FARM' : "הגדרת החיילים של החווה אינה תקינה, האם להסיר אותה?",
'DELETE_FARM' : "מחק חווה זו.",
'EDIT_FARM' : "ערוך חווה זו",
'NO_FARM_YET' : "קבע כפרים כחוות מדף הפרופיל שלהם",
'FARM' : "חווה",
'SORT_FARM' : "סדר חוות על פי מרחק מהכפר הנוכחי",
'DELETE_M' : "x כדי למחוק חווה לחץ על ה ",
'EDIT_M' : "לחץ על לחצן העריכה כדי לערוך את נתוני החווה",
'END_M' : "בחר בעמדת הסיום בעמודה זו, לחץ כאן כדי להסיר את עמדת הסיום",
'START_M' : "בחר עמדת התחלה מעמודה זו",
'START_FARMING' : "התחל בזיזה מהכפר הנבחר",
'MINIMIZE' : "מזער",
'MAXIMIZE' : "הגדל",
'FARM_INACTIVE' : "חווה מוגדרת כלא פעילה",
'ERROR' : "Error",
'NOT_ENOUGH' : "אין מספיק חיילים בשביל הבזיזה של",
'AVAILABLE' : "זמין",
'NEEDED' : "צריך",
'TROOPS_GONE' : "חיילים בדרך ל",
'NEXT_FARM' : "בוחר בחווה הבאה",
'SUCCESS_COUNT' : "מספר הבזיזות שנשלחו עד כה בהצלחה",
'HALT_FARMING' : "עצור בזיזות",
'MACHINE_RUNNING' : "מכונת הבזיזות פועלת",
'CHANGE_VILLAGE' : "מנסה להחליף כפר",
'NO_FARM' : "אין חווה זמינה",
'NOT_FARMER' : "כפר זה אינו כפר בוזז",
'USED_TROOPS' : "חיילים בשימוש",
'GOING_TO' : "עובר ל",
'INSTALL_M1' : "הוסף חוות חדשות מדף הפרופיל של הכפרים",
'INSTALL_M2' : "בהצלחה בבזיזות",
'TRIBE_SELECT1' : "השבט שלך",
'TRIBE_SELECT2' : "אנא הכנס את המספר עבור השבט שלך.",
'TRIBE_SELECT3' : "לא קבעת את השבט הנכון שלך, קובע רומאים כברירת מחדל.",
'ROMAN' : "רומאים",
'TEUTON' : "טאוטונים",
'GAUL' : "גאלים",
// Settings
'SETRANDOMIZE' : "בזוז בסדר רנדומלי",
'SETREADREP' : "נתח דוחות כדי ליצור סדר מועדף של חוות",
'SETDELTLIST' : "מחק רשימה זמנית בעצירה",
'DELTEMPLIST' : "מחק רשימה זמנית באופן ידני",
'UPDATE_SETTINGS' : "עדכן הגדרות",
'SETVILSKIP' : "הפעל דילוג כפרים",
'FARMMARKING' : "סמן חוות במפה",
'DYNAMICTROOPCOUNT' : "חיילים דינמיים"
}
}
lang['SCRIPT_NAME'] = "Otomatik yagma";
}
//image & style
function loadImage() {
FM_log(3,"loadImage() called");
image['DELETE'] = "data:image/gif;base64,"
+ "R0lGODlhDAAMAMQQAMwzM88/P/zy8tllZfXZ2fnl5fLMzOyystJMTO+/v+mlpdVZWdxycuWZ"
+ "meKMjN9/f////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+ "ACH5BAEAABAALAAAAAAMAAwAQAVJIAQViiCKx0CICQAciLuYJ+MCwSoWw60UMtqp5zKcBAHA"
+ "ICFyABC6Q3KAilFFDVegFxCKkC7GaZxN4oSEJAJiuAEKiYdxbKCFAAA7";
image['EDIT'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAABGdBTUEAAK/INwWK6QAAABl0"
+ "RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAASsSURBVHjaYmzvn8bw798fBmYW"
+ "dgZmBiaGX39+M7AxszD8/fePgYmVmYGd4RNDjFQXgxDHSwaGPwwM/ySsck591i4T/bhrljLn"
+ "4y6gwl8MUAAQQEwMeAATwz+Gj79FGM68d2T49xdo1l8GRgap1BiRB79kn92Raf7LyK6LrB4g"
+ "gFgYCABWpt8MVz+bMIj/2MQgJKXgIv3pj4nczWUMAoycl5j/fr8ONJ4B6CUGBg4GBoAAYiJk"
+ "2N+/Pxk+/uRjOPdcmeGveFg+0/O9zN9YfjMwyP9c/e03w7f//xgY7j1hYGiaw8AAEEAsuA35"
+ "y/D3/z9BJXm5fF5+MavnN4KOi0qqOzGcmsjwU4jl7bPfPxdwA4Px8gMGhoqFDAx3njMwAAQQ"
+ "hmH/gAH/8+8vBn5+3ggTY706fW1Nzd9//zPcF2d15fw2A+il9wxP/zDsvPeG4cnTdwwMbasY"
+ "GF59hOgFCCC4Yf///2f49fsXAycHp4Outmqpga62Fz8fH8OPn78ZXr16ySDO84KB6cMWhq9A"
+ "+06/U1n24OV/hulr7zF8/Pof7hCAAGKCGPIbZJi2rrb6yogQ3z02luZeLCxsDG/ff2R4/+kL"
+ "w5cv7xkEuY4xMPx8wfDsnwUjj+XMpKesXnxQg4SAWB2I+QACiIWFhVlOTkYxw0BfL0NOWkrw"
+ "1+8/DO8+fGL4DaT//vvP8P37TwYent8M7Nx3GX6/ZWB4wuTBKCkuGiQjLSrCxy/Q9+njhw9A"
+ "gwSBmB8ggBgPHz991FBP1+rbjx8M33/8Yvj95w8DyMC/f/8xsLIAI/s/I8OVi7sZxFk2MDy/"
+ "9YHhDW8cAycXJzA42Bnu3Ln7furUyW3Pnz45CTTsJ0AAMb3/8PE3KK18Bbrg89dvDF+/gQz9"
+ "CY4IJiZGBh5uDoY9e88xtM34xfCSL5mBg5ODgRkozs7GxuDr7SW4YsWqhtDIOG0VFf0zAAHE"
+ "rKVnsP/bj5+6UpLiSr9+/QUa+J2BBegiNlZQSvzP8Afo0ju37zCYmtsx6GirM/Dz8TCoqaoy"
+ "aGtrMcjJyzIoyMuyWVjaODGxC6wACCAWoKMeXr58Pfj9+49zzU2Ng/n5uBl+fP8BjMWfDMyM"
+ "QBcAvSMlJc/w+9M9BilRAwZRKV0GDjYWoMtYwTF4+8FzhhNnLzIwsvxmAggATQCy/wQBAQEA"
+ "BQUE8ePj5Fv09/ffJCQmdB4aFgD6+voABgUEAAQDAwBDQkAAAvndAPfo1AD+ExoABwwSAOHm"
+ "6wDL0dcA3dzdqgkFAZEDAQPbAgiezoDR+vPL18+lJ8+c+fRTT7/JQEsFGAl/wIaxcrAxMHAr"
+ "MfDxijB8//aF4fztpwwXLl6+9vXz+zomhr9r2biEGH7++sMAEEAoOYCJiZmBhfFX883rN77/"
+ "+vmzydJYl5MTaBAHMLB//WFhuHP/I8Ola+eev/vwceGPb597WJiZ3v7/h8jeAAGElp3+MzAD"
+ "yzIudraea1du3Pz87fsyV1tznhdvPjKcuXTt7+NHD+eyMTG2C/BzP/jxHVRcMKLoBgggHBmd"
+ "Eeg9ps1PH93zX7ftSy8wm736/uVjH9BLO1lYuDAMgQGAAGIEZSdqAYAAAwBv6sTarY5ZRgAA"
+ "AABJRU5ErkJggg==";
image['OPTIMIZE'] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf"
+ "8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFk"
+ "eXHJZTwAAALtSURBVDjLbVPtS1NxFD73Nid6R7o13XxpY8WgJWTIPhQskMj%2BAKFvQpB%2B"
+ "HtYHIUd9EJQC8R8YftoQhNk%2FkGStNV%2Ba1cSyMXQ5tcbm1DX3du%2F93ds5FxQlL5wxfr"
+ "%2FzPOd5nnMvp6oqXPTEYrFBWZYHGGMgSVKwt7d3%2BqI%2B7izB2tqaCwF7WMcIzthstha6"
+ "X1payjU2NlrxzIBkHf39%2FRsnGP4M2I%2FAdWxKYJMFi9VqNaDS6%2FWMzkRRTGCtB4NB%2"
+ "FzmCeDzuEwRhyG6380ajkSYlsSzVahUqlQooikKESby3ohXebDYPTU5O%2Bgirox9k5TOZDH"
+ "nhaKLFYhF4nifv2hSXy0XnAt1tb29DOBxWkZw%2Fl0E0Gh1vamoapakUXKFQgHQ6DXV1deBw"
+ "OECn02mE5XKZ7E6MjIxoCjgMaBXltmIJVqvVWCqV4PDwkAgX8f%2FL%2Bvp6QFtjbrf7Lg1D"
+ "q7CwsHCIZCXEZLlIJMKcTiefz%2BehWCxqEzc2NiCVSvX5fL55muL3%2Bx%2F8aJx5W5IK8K"
+ "jjNRgMBrIJU1NTCk%2ByyBuyadJpCjWgndP1Uk9VFqHT7ILpLS9lBqSU7HCBQGB1f3%2B%2F"
+ "FWUK3d3dRkod1waBxFNMX2SiIoMkM77d5ORudXpg5dc7iO8sw5WV3l0kzp6GODc3N97W1jZK"
+ "Siiwma1n0Nf1GJiqAFMYKKBCprALRqEVFrfmYTX9QUZVem2NoVDoBbI9b25uhqOjI00BSSbw"
+ "dj4JEqqQFQkkJsHfWhFuX70Hx1JZt5yKVDUCzEDBDXANDQ30UsHm5mapaq0KMpPBctmGYKaR"
+ "%2FSmkwWSwwpedT7Cc%2BJwrA9hPLYyNjfkPDg6eYDhZk8nUk3SEftcwLFERoYJqrptvwp1r"
+ "DyGWjkJ4%2FeNBia%2B0%2F55Qa%2Bc%2BpuHhYRda2UMrx7j%2FjMfjaaG0Z2dnc99uzHBu"
+ "231z%2BOf77%2Fiq9SBY%2FO9rPPt4vd7BXC43QCvmOC74tevNK6ZcMlcUVpedUOWTvn%2FP"
+ "Q%2BbC95cxOwAAAABJRU5ErkJggg%3D%3D";
image['GIM_EXPORT'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6"
+ "QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKUSURBVDjLhVNdSJ"
+ "NRGH6%2B%2BenSTc3Rl9Y0KzRcoSHShURERRldlLGLMsqrCO2iLuwuL7qKLr0MoQvDHJi"
+ "gJkEbG5mGdzKU1PnvN7I2Fgu33Or7W%2B858YkrpRee8x7ec97n%2FTtHyGQyCAQCVtJX"
+ "CS2GYdSQribQ1vhEeon0C0KgublZx18i%2BP3%2B43TJI0lSXVlZGWw2GwoKCsCINzY2k"
+ "EwmEQ6HEYvFPpLtptvtXs9i8Pl872VZZuEyu4mqqplgMJh57O1Ya%2Fe25jByExZaTpSW"
+ "luJ%2F4nQ6kdZSTlXRAtvtIkXmTNPT07Db7RwlJSVYSS7infwGa8llaJoOTdXhLCwX7Zr"
+ "97C3PdW9fy2BTFoHD4WB1IhKJIJH3HZPKBA4UOXHh4GXoGR0GQTd0vk%2Bl0peuPW9aGm"
+ "7zVolmLSyyKIoUTUMgPoN9uRIk635MRYNY%2BbYMVVFRXlTBz0PhBf%2FIfd9FloHFzIA"
+ "dULM4FhMh7jiyMIREfBOte9vwtLEL65%2B%2FanNyaFz5qTSdf3Y6P6sEXdc5CcO9Qw85"
+ "UTQaRfJHktvYnTzFqpPzOV%2FHmEG%2B6awMzOgmyRahquHtlyF%2Bp0FoTJCz%2Fs8UG"
+ "ExHk1DRflHjDAxHBpBSNrldURQ0djaMUT%2FO0DgZuSyySPF4HPQS%2BQTS6fQfZksuBu"
+ "Q%2B5BXlQFDzceflDWqkJh2tOCydqq%2FH7Pw8xsYnvILH47lC7P0ul8tWWVkJq9UKQRB"
+ "w99VtFBcW4%2BSx2q3xmeNcWl2F3z86qWv6I4Gl29vbe4RIOglui8VSzP4CK2dQfo09ks"
+ "gf0kxoDhpPm%2FVG%2F0DOT1Z7wqOcYLt0d3cXknMVwaCmhjzRHi%2Bl7pjqmq3b8Y1v%"
+ "2Fxg7ofZBTY6rvbp%2Ft%2FPfI0AjgZ0qo%2BwAAAAASUVORK5CYII%3D";
image['IM_EXPORT'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6"
+ "QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK4SURBVDjLjZPrT1"
+ "JhHMfPq%2FNH%2BK6ty2bhJcswzUa2hTMaEmCsZmWuUU0HQuAVEWHMgCnLy2yOhiOKIs0"
+ "L08ByXgab1TTRNlO7ULwylTOZ9iL9djiVrdLmi%2B%2BbZ7%2FP5znP93kOAYDYKt1F%2"
+ "B0k6cR4ZK86jSCS3m9sW7pGxwh5FwlqfOmnNW34w7NUcInck6Ck%2BQNJgZNjExYTzOl6"
+ "7iuG%2FnQuf7kjEp2eT%2FxV45AlknyopMmLJweRDGR05Jt1KBDvLMdoiRp8uLeKpTiO3"
+ "FHiUiWR%2FWTI12sBD8JEC%2FkYBvLXpeGrIwHCTGOPuKgxYRXCXsan7ilTyD0G%2FOpn"
+ "0lqdQfisfwccq%2BJuEGKjjYHpqkklvLQc%2BiwiBe2p06%2FmwSVOo5kvJjISgCyLpgi"
+ "j%2FbQGCHWX0p4rgNZ7AyxdjWFxcxPLyMuZmZ%2BBUHUOHlodnd26g%2FeYpmIQsSn86n"
+ "iR81akBf9PZn%2BfMo%2BEsTIy%2FwtLSEgP%2FyuzbGbQUsnFXdhJd5gtoLMxAOWdvgK"
+ "Cb5Xr1aevDzXno0WZufHg3t7nz3%2Fn08T1qclhouHgUZZl71ulwfxRYncZ9omGPWOstG"
+ "6urq8ywUqmESqWCWq1GaWkpsxaNRmEx3YKaEz8Vg%2F%2B5RpPJtEJRFDMcA1tbW9HW1o"
+ "bKyspNQUwqkUj2bfkODAbDSiQSYYYrKipgs9lgt9tRU1OzKZDL5RAKhb8FRc8vJxR0nTs"
+ "vtvMGxBb%2BN8dQO2ISjUYDh8MBp9MJWsysPXhjR0GnBGIbbzrbytGmaw%2FzCRr%2BLO"
+ "u9iqrBEhT1FqDAmo9wOAydTgeXywW32426ujqEQiFoBlSoH9NDO6REvkOERFl8lKB3HqR"
+ "tIdoWOC5Lp3jXchakUum80WhkQLoXmM1mCASC%2BdySMwvZtVlf0zWpYzT8ZfeVXYPEdr"
+ "%2FpTvMdjX2sh%2B52%2FVQAAAAASUVORK5CYII%3D";
image['MINIMIZE'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAABGdBTUEAAK/INwWK6QAAAB"
+ "l0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGASURBVHjaYlyyYMVMdnb2"
+ "NFYWFgYWIGZkYmKgBfj/7x/Dnz9/GH4D8c+fP2cBBBALDzd3Mhc3NwMHOwcDCysrAzONLP"
+ "4Lsvj3b4YfP38wfPv6NRkggFiAljLz8PAycHFyMrCxsjEwA31NE4uBPv31+xcDy3dWEJcZ"
+ "IIBYQD4FWcrFBfE1MzMTAyMjI3WD+f9/hr9//4F9CwIgnwMEEAsoeEE+BVnKzsHOwMJMGx"
+ "//+fsHYSnQToAAYgHFKSh4QT4FWcpCo6AGW8r8G2IX0E6AAIKnJGoHLzaAbAdAADExDBAA"
+ "CKABsxgggPBG6OUrlxjOnjtDsqG6OnoMxkYmeNUABBBei/fs3cXQ0FJHssWF+SUELQYIIL"
+ "wW6+rqMyTEJZFssbGhCUE1AAHEgpzJ0YGLkysYU7MggQGAAGIBlaGg4gxUssAyOa0KEJAd"
+ "YLuAdgIEEAuwJPkLLEOZ4cUZMJPTssgEldcgOwECiAXIWQYsuGNhxRmtK4lv37+DHLAMIM"
+ "AAhwiVy91Y0KAAAAAASUVORK5CYII=";
image['MAXIMIZE'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAABGdBTUEAAK/INwWK6QAAABl"
+ "0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF1SURBVHjaYlyyYMVMdnb2NF"
+ "YWFgYWIGZkYmKgBfj/7x/Dnz9/GH4D8c+fP2cBBBALDzd3Mhc3NwMHOwcDCysrAzONLP4Ls"
+ "vj3b4YfP38wfPv6NRkggFiAljLz8PAycHFyMrCxsjEwA31NE4uBPv31+xcDy3dWEJcZIIBY"
+ "QD4FWcrFBfE1MzMTAyMjI3WD+f9/hr9//4F9CwIgnwMEEAsoeEE+BVnKzsHOwMKM8LGwJB9"
+ "FFr59/gnO/vP3D8JSoJ0AAcQCilNQ8IJ8CrKUBUtQz5kxnyQLUzISwTS6WX+Yf0PsAtoJEE"
+ "BwGXzBGxocTpbF6ADZDoAAok0SJgIABNCAWQwQQANmMUAADZjFAAFEVGmxeu1KqlsMEEAsy"
+ "Jmc1FRKTkECAwABxAIqQ0HFGahkgWVybAUAOQBUKSAXICA7wHYB7QQIIBZgSfIXWIYyw4sz"
+ "YCanZZEJKq9BdgIEEAuQswxYcMfCijNaVxLfvn8HOWAZQIABACNVl3Dbv9rRAAAAAElFTkS"
+ "uQmCC";
image['LOADING'] = "data:image/gif;base64,"
+ "R0lGODlhEAAQAPfgAP////39/erq6uvr6+jo6Pn5+dPT0/v7+/X19efn5/Pz8/j4+Pf39/r6+vz8"
+ "/MzMzO/v7/b29svLy/7+/unp6e7u7kJCQtnZ2fHx8a+vr4mJid7e3s/PzyYmJrOzs/Dw8NLS0vT0"
+ "9Le3t9ra2tvb25CQkKOjo2tra9DQ0KysrM3Nza2traurq729vezs7M7OzuHh4fLy8rq6und3d6Cg"
+ "oIGBgYCAgGRkZGJiYsPDw8fHx4eHh+Dg4J+fn6KiooiIiG9vb6enp9fX18DAwOXl5d3d3e3t7WBg"
+ "YJmZmZOTk9/f30VFRebm5jQ0NBUVFQQEBNjY2ISEhOTk5K6urtzc3D8/P2dnZ8LCwpubm8jIyLm5"
+ "uZqamiEhIcTExC0tLbCwsIyMjNXV1dHR0VxcXOPj40lJSTw8PGxsbExMTCwsLF9fXxAQEMnJyRYW"
+ "FpSUlCIiIhsbGwgICAsLC11dXVhYWJGRkba2try8vMbGxr+/v7i4uDs7O76+vmFhYYaGho2NjbW1"
+ "tZeXl4qKiiQkJKmpqYODg0ZGRk9PT3Z2dgkJCTo6OkFBQY+Pjx8fH3l5eRMTEw8PDyoqKrGxsWho"
+ "aHNzcwcHB7KysqGhoYKCgkpKSmVlZXFxcaioqE1NTeLi4p2dnaampqSkpJ6ensXFxVNTU7S0tFZW"
+ "VjExMVlZWaWlpVRUVDAwMCgoKFBQUKqqqg0NDUNDQxkZGT09PUdHR3p6ehISEgICAsHBwURERDU1"
+ "NZKSkm1tbTk5OWlpaRwcHFJSUtTU1DMzMyAgIH5+fiMjI3JycnR0dA4ODkhISMrKynx8fJiYmAYG"
+ "BnV1dU5OTgMDA4WFhR4eHgoKCpycnC8vL1paWmNjYzc3N7u7u4uLiycnJ3t7e15eXhoaGjY2NkBA"
+ "QP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEA"
+ "AAAh+QQFAADgACwAAAAAEAAQAAAIpQDBCRxIsGDBF1FwOQEQwEEAg+B6XJMT5wmAAwwiFCjo480j"
+ "TVOYAJhQAEMFBgPFLOomyCADAQI2gqvDBQhEcBVgVBA4p4OImyFIeBIoy4uAmwcMhBFoocmAmw0k"
+ "cBB4Yk+emwJyGBDYw8KPmyhkbBB4wUonTgYNTBnyYaCeMaiQqMCg4EILGimKFLzj6MYZRDY0JGFx"
+ "AaISD0lqaEil4+jNxwIDAgAh+QQFAADgACwBAAEADgAOAAAImwDBCTRQx1SkDmj8qBDIkIUzbVzg"
+ "OFkj59QWhhmqrJohggKBLzgqrQEADsocRRcZCqwBIMAEHxaiqFQZoMCBGWWuzGQYAAGDOa0q7BQ4"
+ "4cOHG3QgDAUXQMCAHUckLEVAZoClSTSWJqBSAcYOY3d2EhFThAE4HTVsWBqBIAKTMKNeuGD4AAkY"
+ "N5+CfNGSjMDMBDokgVqRY0QMhgEBACH5BAUAAOAALAEAAQAOAA4AAAiZAMEJHOEDCDILOJKAEMhQ"
+ "xpkyFvY08dLBkAmGfPqo+nPFxQAtlBp1oAGOhzI1KRgy/NOG1wtAk6apVGnlGDQ3QDjMZJgh0RJM"
+ "M2LsFJjgSRsNNhQMBQegaaofUJYGOOAATwkZSxdEOECBExYUOxFUUBAAnBBQQSQkKNAAgwAiAxYw"
+ "JCHDg4wcEgyQYIJgJoQRKrJwKOJCrsCAACH5BAUAAOAALAEAAQAOAA4AAAiZAMEJhOFBg5UjtExA"
+ "Ecgwy48TN8aoQrNETQaGDwrNMKECQoUufsx8YwEuwZYafBgyxHLqkAEdYDyoVDmjQ50MSUbMZChC"
+ "mCkTWBDsFEghFitCJiIMBUfg0aA8LKQszfAqkxAPKJYeiRPlw6gWPHZOsOXlATgieLLwwOAgQIMC"
+ "DQIsY0ghDIgLPBIYUbAgwEwEAqSQoYChL8OAACH5BAUAAOAALAEAAQAOAA4AAAiZAMEJFMDGFSMN"
+ "SPTAEMjwwopAJX7YmAGkxhCGRVJcykNCgQIQlzRZuQPuQ4sUBhgyzIAKCAkqdl6oVFkCTSgOLQjM"
+ "ZJhjySY2XQrsFOjCTBkOEhoMBTegiQUqIDAs1ZKmz4ALOoduGqRrARkYMXYKggMLBLgQCQSEODAB"
+ "wAprtd74YMjgA4YIBwA8SeStx0wHBQrktVBIBcOAACH5BAUAAOAALAEAAQAOAA4AAAibAMEJjEFF"
+ "R6kVIh5QEMiQwIMWdjIE6RHIBwqGLl7gEUKAQQQl2MCAeQCOAQkURBgyzGGjBBkjF1KqZEiIkggC"
+ "GxTMZIjixJ8EUhzsFPgBx4kBAgIMBQeBzo0YEBos7XJo24IQBZb6MRQqQIECE3Zu2aMGCrgAAQBw"
+ "m5KAAKBm1KpkYAggDTNpkJz4ItaJxcwHhWZx6UCqhAGGAQEAIfkEBQAA4AAsAQABAA4ADgAACJkA"
+ "wQksYAQGMA4GlGAQyBABgQ0XQEjo0uKKEoYLBjBxoeBAgwEGPEgiAc5BDCMIGDIUEuTLgAYhIqhU"
+ "eQWLhAYMHMxkWCQJCwcHAOwUGEJDCQBIh4JTYEPDoicplIpBhARTHBxKRZ0RoSIYpB87UxwZxgOc"
+ "qEZtdtkRMGBItl99+DCkUSXaoDRNzCzpJWOmmBJjzFg4QWMEw4AAIfkEBQAA4AAsAQABAA4ADgAA"
+ "CJkAwQmc0AABhAEDICwQyHCCAwYhIAiQsmFDBYZIAAQ44GBCgAgUwhgQAO6Bl2cAGDIkIIGDgiiV"
+ "jqhUOWLIhjJypsxkSEFLljdrEuwUuOALoA5OCAwFFyHIClJwSi3d8EkEIy7FlupxIwFEpkiBdg7Z"
+ "0UMpIUW5atwyAuGBCUc7XjBcUa2KoUN0cJwQxGamEBqIxtzY4cETw4AAOw==";
image['SETTINGS'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0"
+ "RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH0SURBVDjLlZPLbxJRGMX5X%2FxbjB"
+ "pjjCtXLl2L0YWkaZrhNQwdIA4FZxygC22wltYYSltG1HGGl8nopCMPX9AUKQjacdW4GNPTOywak7"
+ "ZAF%2FeRe%2FM73%2FnOzXUAcEwaqVTKmUgkGqIoWoIgWP%2FfTYSTyaSTgAfdbhemaSIej%2BNc"
+ "AgRudDod9Pt95PN5RKPR8wnwPG%2FZ1XVdB8dxin0WDofBsiyCwaA1UYBY%2FtdqtVAqlRCJRN6F"
+ "QiE1k8mg2WyCpunxArFY7DKxfFir1VCtVlEoFCBJEhRFQbFYhM%2Fna5wKzq%2F%2B4ALprzqxbF"
+ "UqFWiaBnstl8tQVRWyLMPr9R643W7nCZhZ3uUS%2BT74jR7Y5c8wDAO5XA4MwxzalklVy%2BPxNC"
+ "iKcp4IkbbhzR4K%2Bh9IH02wax3MiAYCgcBfv99%2F4TS3xxtfepcTCPyKgGl5gCevfyJb%2FQ3q"
+ "6Q5uMcb7s3IaTZ6lHY5f70H6YGLp7QDx9T0kSRtr5V9wLbZxw1N%2FfqbAHIEXsj1saQR%2BM8BC"
+ "dg8icbJaHOJBqo3r1KfMuJdyuBZb2NT2R5a5l108JuFl1CHuJ9q4NjceHgncefSN9LoPcYskT9pY"
+ "IfA9Al%2BZ3X4xzUdz3H74RbODWlGGeCYPcVf4jksz08HHId6k63USFK7ObuOia3rYHkdyavlR%2"
+ "B267GwAAAABJRU5ErkJggg%3D%3D";
image['DELTEMPLIST'] = "data:image/png;base64,"
+ "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAABl0"
+ "RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAK9SURBVBgZBcFLiFVlAADg7%2F%2FP"
+ "uXdmGp3xMeIokk1USG8jKmlRYJJU1K6NRILQopXVImoVFBGBpLteu2gVLYyiUALFRSVk0aKC0nyE"
+ "5uA43pm598495%2Fzn7%2FtCzhns%2F%2FLSQzh867rxXYO6NahbddsaNm0Py7iGhEUs4DMcKwHa"
+ "pnn4vtk1u157bBMA6Fft9KBqpxdX07aqZnmUnL%2B24tuz%2FT04WAK0TbN5qhvApRtJJwRloCgZ"
+ "60Q3j0VFjDoFO7dN2Do9ueGT05cPRYBU11OTJU3LchX0am6M6K3SW2VhyPxKAm98ftGuuUl3z3Q2"
+ "lQCprjes7Ub9Ef3VJMagRFEQCwpBEWgR0pIfzy06c7F3uQRIVbV5eqLQGzYGoyzGrIjEFBSRQlYU"
+ "yIWrSyNHjv%2B9hP0lQFNV2zdPdfRWswYyRQpiRqKQlTlqM6mTNFUzd%2FSVR69HgFSNts9Oj%2B"
+ "lXWYgUIYiICICQyZlmNJKqUYIS9r793URZxO5YJ6pSEmVkGUkAATFSp2SlP2iwBCU0o2rT5OS4GG"
+ "ghEwJRkDMh4ORHhic%2F9MO%2Ff3lpfF1YU11%2Fnea9ElI1uqmc7CojRQxSG8hZixBw4mNTf37h"
+ "jucPGJu7y%2FC3Y8Xvp46%2Fc%2FyJTr%2F4%2FsbtM21Kh3Y%2FuOPOua0zfjnfSG2WBUXMioLR"
+ "py%2B6%2F9kXTJw9IZz6QGd4XnfDlnjl3IUdZaqq3Xj65z%2F%2BsTgsrYyyOmWjOqiaVpNaB65e"
+ "MD47x1OvAijf2qJowy1lqusHnnv83ok39z0CAFKmTlnVcOanrQa%2FfmPyq5eNhv8ZYHmpkAqXi9"
+ "l79t62fnrymYXl2sX5vvmlVUuDWt1kRYy6naAbWv%2BcOip2grro6y1k567ElBrvh537Ds%2FgIL"
+ "ZjIzZiPdZjerzb6YyPd%2BxJp%2B248rW1%2FQVVGeeL3Bx58ljz7v%2FpCEpK8wRGcAAAAABJRU"
+ "5ErkJggg%3D%3D";
}
function loadStyle() {
FM_log(3,"loadStyle() called");
var styleText = "tr.inactive{font-style:italic; color:gray;}";
styleText += "div.isfarm{background-image:url("+farmImage+") !important}";
//defining style new, so it won't conflict with TBeyond
styleText += "table.FMtbg {width: 90%; margin:auto;}";
styleText += "table.FMtbg td {border: 1px solid silver; font-size:13px; padding: 1px; text-align:center;}";
styleText += ".FMtbg {background-color: #C0C0C0; width:100%; text-align:center;}";
styleText += "table.FMtbg tr {background-color: #FFFFFF;}";
styleText += "table.FMtbg tr.cbg1 td, td.cbg1 {background-color:#F5F5F5;}";
styleText += "table.FMtbg td.cbg2 {background-color:#71D000;}";
styleText += "p#FMtitle {width: 90%; margin: 10px auto;}";
GM_addStyle(styleText);
}
/*define unit properties > needed to analyse battle reports
* [0], [1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9]
* att, def1, def2, lumber, clay, iron, crop, food, speed, load
*/
romans=new Array();
romans[0] = new Array(40,35,50,120,100,180,40,1,6,40); // Legionnaire
romans[1] = new Array(30,65,35,100,130,160,70,1,5,20); // Praetorian
romans[2] = new Array(70,40,25,150,160,210,80,1,7,50); // Imperian
romans[3] = new Array(0,20,10,140,160,20,40,2,16,0); // Equites Legati
romans[4] = new Array(120,65,50,550,440,320,100,3,14,100); // Equites Imperatoris
romans[5] = new Array(180,80,105,550,640,800,180,4,10,70); // Equites Caesaris
romans[6] = new Array(60,30,75,900,360,500,70,3,4,0); // Battering Ram
romans[7] = new Array(75,60,10,950,1350,600,90,6,3,0); // Fire catapult
romans[8] = new Array(50,40,30,30750,27200,45000,37500,4,4,0); // Senator
romans[9] = new Array(0,80,80,5800,5300,7200,5500,1,5,1600); // Settler
romans[10] = new Array(0,0,0,0,0,0,0,6,0,0); // Hero
romans[11] = new Array(1,1,1,0,0,0,1,1,1,1,0)
romans[12] = new Array(0,0,0,1,1,1,0,0,0,0,0)
teutons=new Array();
teutons[0] = new Array(40,20,5,95,75,40,40,1,7,60); // Clubswinger
teutons[1] = new Array(10,35,60,145,70,85,40,1,7,40); // Spearfighter
teutons[2] = new Array(60,30,30,130,120,170,70,1,6,50); // Axefighter
teutons[3] = new Array(0,10,5,160,100,50,50,1,9,0); // Scout
teutons[4] = new Array(55,100,40,370,270,290,75,2,10,110); // Paladin
teutons[5] = new Array(150,50,75,450,515,480,80,3,9,80); // Teuton Knight
teutons[6] = new Array(65,30,80,1000,300,350,70,3,4,0); // Ram
teutons[7] = new Array(50,60,10,900,1200,600,60,6,3,0); // Catapult
teutons[8] = new Array(40,60,40,35500,26600,25000,27200,4,4,0); // Chief
teutons[9] = new Array(10,80,80,7200,5500,5800,6500,1,5,1600); // Settler
teutons[10] = new Array(0,0,0,0,0,0,0,6,0,0); // Hero
teutons[11] = new Array(1,1,1,0,0,0,1,1,1,1,0)
teutons[12] = new Array(0,0,0,1,1,1,0,0,0,0,0)
gauls = new Array(10);
gauls[0] = new Array(15,40,50,100,130,55,30,1,7,30); // Phalange
gauls[1] = new Array(65,35,20,140,150,185,60,1,6,45); // Swordfighter
gauls[2] = new Array(0,20,10,170,150,20,40,2,17,0); // Pathfinder
gauls[3] = new Array(90,25,40,350,450,230,60,2,19,75); // Theutates Thunder
gauls[4] = new Array(45,115,55,360,330,280,120,2,16,35); // Druidrider
gauls[5] = new Array(140,50,165,500,620,675,170,3,13,65); // Haeduan
gauls[6] = new Array(50,30,105,950,555,330,75,3,4,0); // Ram
gauls[7] = new Array(70,45,10,960,1450,630,90,6,3,0); // Trebuchet
gauls[8] = new Array(40,50,50,30750,45400,31000,37500,4,5,0); // Chieftain
gauls[9] = new Array(0,80,80,5500,7000,5300,4900,1,5,1600); // Settler
gauls[10] = new Array(0,0,0,0,0,0,0,6,0,0); // Hero
gauls[11] = new Array(1,1,1,0,0,0,1,1,1,1,0)
gauls[12] = new Array(0,0,1,1,1,1,0,0,0,0,0)
nature = new Array(10)
nature[0] = new Array(10,25,10,0,0,0,0,1,20,0); // Rat
nature[1] = new Array(20,35,40,0,0,0,0,1,20,0); // Spider
nature[2] = new Array(60,40,60,0,0,0,0,1,20,0); // Serpent
nature[3] = new Array(80,66,50,0,0,0,0,1,20,0); // Bat
nature[4] = new Array(50,70,33,0,0,0,0,2,20,0); // Wild boar
nature[5] = new Array(100,80,70,0,0,0,0,2,20,0); // Wolf
nature[6] = new Array(250,140,200,0,0,0,0,3,20,0); // Bear
nature[7] = new Array(450,380,240,0,0,0,0,3,20,0); // Crocodile
nature[8] = new Array(200,170,250,0,0,0,0,3,20,0); // Tiger
nature[9] = new Array(600,440,520,0,0,0,0,5,20,0); // Elephant
// let's get rollin'
if (document.body) {
//suffixGlobal = server + '_' + getPlayerId();
FM_log(3,"suffixGlobal="+suffixGlobal);
if (GM_getValue("Active_" + suffixGlobal, -1) > -1 && GM_getValue("ReadRep_" + suffixGlobal, 0)==1)
{
FM_log(3,"going to check reports");
checkreports();
}
//checkreports();
var url1 = document.location.href;
if (url1.indexOf("a2b.php") > -1){
if (document.getElementById('troops') != null){
var xf = "<td class=\"column-last\"><img class=\"unit uhero\" src=\"img/x.gif\" title=\"Hero\" alt=\"Hero\" /> <input type=\"text\" class= \"text disabled\" name=\"t11\" value=\"\" maxlength=\"6\" /><span class=\"none\"> (0)</span></td>";
var tb1 = document.getElementById('troops')
if (tb1.rows[2].cells[3].innerHTML == ""){
tb1.rows[2].cells[3].innerHTML = xf;
}
}
}
main();
}