// ==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();
}
Donate for the site OpenUserJS
Are you sure you want to go to an external site to donate a monetary value?
WARNING: Some countries laws may supersede the payment processors policy such as the GDPR and PayPal. While it is highly appreciated to donate, please check with your countries privacy and identity laws regarding privacy of information first. Use at your utmost discretion.