Greasy Fork

Greasy Fork is available in English.

AttackRange Helper

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

当前为 2018-12-25 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

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