// ==UserScript==
// @name AttackRange Helper
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Shows your attack range for the new Grepolis Casual World's
// @author Marvins13
// @include http://de99.grepolis.com/game/*
// @include https://de99.grepolis.com/game/*
// @grant GM_addStyle
// ==/UserScript==
var pPoints = Game.player_points;
var rankingButton;
var infoButton;
load_menu_button();
load_info_button();
towns_refresh();
/*
$.get("/data/players.txt", function(Playerdata)
{
var playerList = Playerdata;
//var a = playerList.indexOf("1046261");
var sub = playerList.split(/\r\n|\n/);
console.log(sub);
var player = sub.find(function(element) {
return element.includes("9238672");
});
var playerArr = player.split(/,/);
console.log(playerArr[3]);
});
$.get("/data/towns.txt", function(Towndata)
{
var townList = Towndata;
//console.log(townList);
});*/
GM_addStyle ( `
.r_city_shield_blessing {
background: url(https://i.ibb.co/W05MsxT/dr-city-shield-blessing-a1471e5.png) no-repeat 0 0 !important;
width: 120px !important;
height: 72px !important;
pointer-events: none !important;
}
.o_city_shield_blessing {
background: url(https://i.ibb.co/X8cn1fK/r-city-shield-blessing-a1471e5.png) no-repeat 0 0 !important;
width: 120px !important;
height: 72px !important;
pointer-events: none !important;
}
.b_city_shield_blessing {
background: url(https://i.ibb.co/9crM5x6/b-city-shield-blessing-a1471e5.png) no-repeat 0 0 !important;
width: 120px !important;
height: 72px !important;
pointer-events: none !important;
}
.g_city_shield_blessing {
background: url(https://i.ibb.co/6YmdJVk/g-city-shield-blessing-a1471e5.png) no-repeat 0 0 !important;
width: 120px !important;
height: 72px !important;
pointer-events: none !important;
}
` );
function towns_refresh(){
//setTimeout(function(){town_coloring();}, 3000);
//setTimeout(function(){town_coloring();}, 5000);
setInterval(() => town_coloring(), 3000);
}
function town_to_playerArray(){
}
function removeElementsByClass(className){
var elements = document.getElementsByClassName(className);
while(elements.length > 0){
elements[0].parentNode.removeChild(elements[0]);
}
}
function town_coloring(){
$.get("/data/players.txt", function(Playerdata){
var playerList = Playerdata;
var sub2 = playerList.split(/\r\n|\n/);
$.get("/data/towns.txt", function(Townsdata){
var townList = Townsdata;
var sub = townList.split(/\r\n|\n/);
var towns = document.getElementsByClassName('flag town');
for(var town of towns){
if((town.nextSibling.nextSibling.classList.contains("city_shield_blessing"))||(town.nextSibling.nextSibling.classList.contains("r_city_shield_blessing"))||(town.nextSibling.nextSibling.classList.contains("b_city_shield_blessing"))){
var nextelement = town.nextSibling;
var content = nextelement.getAttribute("href");
var base64 = window.atob(content.substring(1));
var ix = base64.substring(base64.indexOf(",\"ix")+6, base64.indexOf(",\"iy"));
var iy = base64.substring(base64.indexOf(",\"iy")+6, base64.indexOf(",\"tp"));
var pos = base64.substring(base64.indexOf("island")+8, base64.indexOf("}"));
var search = ix+","+iy+","+pos;
var player_of_town = sub.find(function(element) {
return element.includes(search);
});
var playerArr = player_of_town.split(/,/);
var pl_id = playerArr[1];
var player = sub2.find(function(element) {
return element.includes(pl_id);
});
var playerArray = player.split(/,/);
if ((playerArray[3] < (pPoints * 0.83333333333) || playerArray[3] > (pPoints * 1.2))) {
town.nextSibling.nextSibling.classList.remove("city_shield_blessing");
town.nextSibling.nextSibling.classList.add("r_city_shield_blessing");
} else {
town.nextSibling.nextSibling.classList.remove("city_shield_blessing");
town.nextSibling.nextSibling.classList.add("b_city_shield_blessing");
}
}else{
var n_nextelement = town.nextSibling;
var n_content = n_nextelement.getAttribute("href");
var n_base64 = window.atob(n_content.substring(1));
var n_ix = n_base64.substring(n_base64.indexOf(",\"ix")+6, n_base64.indexOf(",\"iy"));
var n_iy = n_base64.substring(n_base64.indexOf(",\"iy")+6, n_base64.indexOf(",\"tp"));
var n_pos = n_base64.substring(n_base64.indexOf("island")+8, n_base64.indexOf("}"));
var n_search = n_ix+","+n_iy+","+n_pos;
var n_player_of_town = sub.find(function(element) {
return element.includes(n_search);
});
var n_playerArr = n_player_of_town.split(/,/);
var n_pl_id = n_playerArr[1];
var n_player = sub2.find(function(element) {
return element.includes(n_pl_id);
});
var n_playerArray = n_player.split(/,/);
console.log(n_playerArray);
var style = town.nextSibling.getAttribute("style");
var classEle = town.nextSibling.getAttribute("class");
var town_id = town.getAttribute("id");
var classIn = classEle.substring(5, 12);
var l = style.substring(style.indexOf("left")+6,style.indexOf("top")-4);
var t = style.substring(style.indexOf("top")+5, style.length-3);
var fixedStyle = "left: " + (l-25) + "px; top: " + (t-20) + "px;";
console.log(classIn);
console.log(town.parentElement);
if ((n_playerArray[3] < (pPoints * 0.83333333333) || n_playerArray[3] > (pPoints * 1.2))) {
var div = document.createElement("div");
div.setAttribute("class","o_city_shield_blessing " + classIn);
div.setAttribute("style",fixedStyle + " position: absolute;");
div.setAttribute("id","blessing_"+town_id);
console.log(div);
if(document.getElementById("blessing_"+town_id) == null){
town.parentElement.appendChild(div);
}
} else {
var div2 = document.createElement("div");
div2.setAttribute("class","g_city_shield_blessing " + classIn);
div2.setAttribute("style",fixedStyle + " position: absolute;");
div2.setAttribute("id","blessing_"+town_id);
console.log(div2);
if(document.getElementById("blessing_"+town_id) == null){
town.parentElement.appendChild(div2);
}
}
console.log("-------------------------------------------------------");
}
//<div class="o_city_shield_blessingse lvl3" style="left: 68779px; top: 70685px; position: absolute;"></div>
//<div class="city_shield_blessing se lvl1" style="left: 69552px; top: 70251px; position: absolute;"></div>
}
});
});
}
function load_menu_button() {
var rankingButtons = document.getElementsByClassName('ranking main_menu_item');
if (rankingButtons.length === 0) {
setTimeout(() => load_menu_button(), 500);
} else {
rankingButton = rankingButtons[0];
rankingButton.addEventListener('click', () => {
setInterval(() => att_range_ranking(), 1000);
});
}
}
function load_info_button(){
infoButton = document.getElementById('info');
if (infoButton == null) {
setTimeout(() => load_info_button(), 100);
} else {
infoButton.addEventListener('click', () => {
setInterval(() => att_range_info(), 1000);
});
}
}
function load_popup(){
var popups = document.getElementsByClassName('popup_table_inside town_tooltip_table');
if (popups.length === 0) {
setTimeout(() => load_popup(), 500);
} else {
console.log('hi');
}
}
function att_range_ranking() {
var points = document.getElementsByClassName('r_points');
var names = document.getElementsByClassName('r_name');
//Coloring for the world ranking
try{
if (document.getElementById('ranking-index').className=="submenu_link active"){
for(var point of points) {
if (point.innerHTML > 0) {
if (point.innerHTML < (pPoints * 0.83333333333) || point.innerHTML > (pPoints * 1.2)) {
point.style.color = 'red';
} else {
point.style.color = 'green';
}
}
}
}
}catch(err){}
//Coloring for the sea ranking
try{
if (document.getElementById('ranking-sea_player').className=="submenu_link active"){
$.get("/data/players.txt", function(Playerdata){
var playerList = Playerdata;
var sub = playerList.split(/\r\n|\n/);
for(var i = 0; i < names.length; i++){
var name = names[i];
var content = name.innerHTML;
var base64 = window.atob(content.substring(content.indexOf("href")+7, content.indexOf("class")-2));
var id = base64.substring(base64.indexOf("id\"")+4,base64.indexOf("}"));
var player = sub.find(function(element) {
return element.includes(id);
});
try{
var playerArr = player.split(/,/);
if (playerArr[3] < (pPoints * 0.83333333333) || playerArr[3] > (pPoints * 1.2)) {
points[i].style.color = 'red';
} else {
points[i].style.color = 'green';
}
}catch(err){}
}
});
}
}catch(err){}
}
function att_range_info(){
try{
if (document.getElementById('town_info-info').className=="submenu_link active"){
var line = document.getElementsByClassName('list_item_left');
var line_str = (document.getElementsByClassName('list_item_left')[0]).innerHTML;
var a = line_str.indexOf("(");
var b = line_str.indexOf(")");
var player_points_line = line_str.substring(a+1,b-7);
if (player_points_line < (pPoints * 0.83333333333) || player_points_line > (pPoints * 1.2)) {
line[0].style.color = 'red';
} else {
line[0].style.color = 'green';
}
}
}catch(err){}
}