Greasy Fork

AttackRange Helper

Shows your attack range for the new Grepolis Casual World's

目前为 2018-12-25 提交的版本。查看 最新版本

// ==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){}
}