AutoGrepolis

Grepolis automation

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name           AutoGrepolis
// @namespace      Dummbroesel.Grepolis
// @include        *grepolis.com/game/*
// @author         Dummbroesel
// @description    Grepolis automation
// @version        0.4
// @grant          none
// ==/UserScript==

document.__c = false;
document.__C = false;
document.__r = false;
document.__R = false;

document.claimInterval;
document.claimAllInterval;
document.raidInterval;
document.raidAllInterval;

//document.startedIslandName;
//document.startedTownId;
document.islandCount = 0;
//for later extension use of claim/raid at all isles&/towns
//document.islandCoords = {};
//document.islandTownList = {};
//document.islandList = [];

//document.claimIslandList = [];
//document.raidIslandList = [];

document.claimAll5MinutesInAllTowns = function() {
  console.log("Start claim in all towns!");
  $('a[name=farm_town_overview]').click();
  setTimeout("document.gatherInAllTowns(false)", 2000);
}

document.raidAll5MinutesInAllTowns = function() {
  console.log("Start raid in all towns!");
  $('a[name=farm_town_overview]').click();
  setTimeout("document.gatherInAllTowns(true)", 2000);
}

document.claimAll5Minutes = function() {
  console.log("Start claim farm!");
  $('a[name=farm_town_overview]').click();
  setTimeout("document.claimClick()" , 2000);
  setTimeout("document.closeFarmClick()" , 4000);
}

document.raidAll5Minutes = function() {
  console.log("Start raid Farms!");
  $('a[name=farm_town_overview]').click();
  setTimeout("document.raidClick()" , 1750);
  setTimeout("document.claimClick()" , 3000);
  setTimeout("document.closeFarmClick()" , 4000);
}

document.gatherInAllTowns = function(isRaid) {
  $('.ui-dialog-titlebar').each(function() {
    if($(this).text().indexOf("Bauerndörfer") >= 0)
    {
      var currentIslandList = [];
      var currentTownList = [];
      var currentIsland = {};
      var currentTown = {};
      
      var islandsAndTowns = $('#fto_town_list');
      islandsAndTowns.find('li').each(function () {
        var tEntry = $(this);
        if(!tEntry.hasClass('fto_town')) {
          if(currentIsland.Name && currentIsland.Name != tEntry.text()) {
            //currentIslandList.push(currentIsland);
            currentIsland = {};
            currentTownList = [];
          }
          currentIsland.Name = tEntry.text();
        } else {
          var coords = {x: tEntry.attr("data-island_x"), y: tEntry.attr("data-island_y")};
          //if(currentIsland.Coords && currentIsland.Coords == coords) {
          //  currentTownList.push(currentTown);
          //  currentTown = {};
          //}
          //else 
          currentIsland.Coords = coords;
          
          if(currentTown.Id && currentIsland.Id != tEntry.attr("data-town_id")) 
            currentTown = {};
          
          currentTown.Id = tEntry.attr("data-town_id");
          currentTown.Name = $(tEntry.find('.gp_town_link')[0]).text();
          currentTown.Clickable = tEntry;
          currentTownList.push(currentTown);
          
          currentIsland.TownList = currentTownList;
          currentIslandList.push(currentIsland);
        }
      });
     
      document.islandList = currentIslandList;
     
      var lCount=0;
      if(isRaid) {
        currentIslandList.forEach(function(lIsland) {
          setTimeout("document.switchAndRaidTown()", 4000*lCount);
          lCount=lCount+1;
        });
      } else {
        currentIslandList.forEach(function(lIsland) {
          setTimeout("document.switchAndClaimTown()", 4000*lCount);
          lCount=lCount+1;
        });
      }
      
      setTimeout("document.closeFarmClick()", 4000 * lCount + 2000);
    }
  })
}

document.switchAndClaimTown = function() {
  console.log(new Date() + document.islandCount.toString());
  document.islandList[document.islandCount].TownList[0].Clickable.click();
  setTimeout("document.claimClick()" , 2000);
  document.islandCount = (document.islandCount+1 == document.islandList.length) ? 0 : document.islandCount+1;
}

document.switchAndRaidTown = function() {
  console.log(new Date() + document.islandCount.toString());
  document.islandList[document.islandCount].TownList[0].Clickable.click();
  setTimeout("document.raidClick()" , 1650);
  setTimeout("document.claimClick()" , 3000);
  document.islandCount = (document.islandCount+1 == document.islandList.length) ? 0 : document.islandCount+1;
}


document.raidClick = function() {
  $('.ui-dialog-titlebar').each(function() {
    if($(this).text().indexOf("Bauerndörfer") >= 0)
      $(this).find('#fto_pillage').click();
  });
}

document.claimClick = function() {
  $('#fto_claim_button').click();
}

document.closeFarmClick = function() {
  $('.ui-dialog-titlebar').each(function() {
    if($(this).text().indexOf("Bauerndörfer") >= 0)
      $(this).find('.ui-dialog-titlebar-close').click();
  });
  console.log("End raid/claim farms!");
}

document.onkeypress = function(event) {
  if($('input[type=text], input.tagsinput-writebox, textarea').is(":focus")) return;
  var keyCode = (event.keyCode == 0)? event.charCode : event.keyCode;
  console.log(keyCode);
  if(keyCode == 99) { //c
    if (document.__c)  {
      clearInterval(document.claimInterval);
      document.__c = false;
      console.log("Claim deactivated!");
    } else {
      document.claimAll5Minutes();
      document.claimInterval = setInterval("document.claimAll5Minutes()",5*60*1010);
      document.__c = true;
      console.log("Claim activated!");
    }
  } else if (keyCode == 114) { // r
    if (document.__r)  {
      clearInterval(document.raidInterval);
      document.__r = false;
      console.log("Raid deactivated!");
    } else {
      document.raidAll5Minutes();
      document.raidInterval = setInterval("document.raidAll5Minutes()",5*60*1010);
      document.__r = true;
      console.log("Raid activated!");
    }
  } else if (keyCode == 67) { //C
    if(document.__F) {
      clearInterval(document.claimAllInterval);
      document.__F = false;
      console.log("Claim all towns deactivated!");
    } else {
      document.claimAll5MinutesInAllTowns();
      document.claimAllInterval = setInterval("document.claimAll5MinutesInAllTowns()",5*60*1010);
      document.__F = true;
      console.log("Claim all towns activated!");
    }
  } else if (keyCode == 82) { //R
    if(document.__R) {
      clearInterval(document.raidAllInterval);
      document.__R = false;
      console.log("Raid all towns deactivated!");
    } else {
      document.raidAll5MinutesInAllTowns();
      document.raidAllInterval = setInterval("document.raidAll5MinutesInAllTowns()",5*60*1010);
      document.__R = true;
      console.log("Raid all towns activated!");
    }
  }
}