demongr / SNovaTools

// ==UserScript==
// @name        SNovaTools
// @namespace   alpha.supernova.ws
// @description Отправка шпионов, расчет ст атаки i
// @include     http://alpha.supernova.ws/*
// @version     1
// @grant       none
// @grant GM_registerMenuCommand
// @grant GM_getValue
// @grant GM_setValue
// @creator Demongr
// ==/UserScript==

(function() {
    function galaxyread(){ 
        if (window.location.href.indexOf("galaxy.php") < 0) { 
            return;
        }

        // таблица галактики
        // планеты - элементы галактики
        var planet_row = document.getElementsByClassName("uni_planet_row");

        for (var i = 0; i < 17; i++) {
            var user_id = planet_row[i].getAttribute("user_id");
            var planet_pos = planet_row[i].getAttribute("planet_pos");
            var ally_id = planet_row[i].getAttribute("ally_id");

            if (user_id != "") { 
                var planet_type = planet_row[i].getElementsByClassName("uni_show_planet uni_show_planet_new").length //если 2 то есть луна, требуется проверка
                //обломки не смотрим            
                var planet_name = planet_row[i].getElementsByClassName("g_galaxy_row")[0].textContent
                var user_state = planet_row[i].getElementsByClassName("button_pseudo uni_show_user   ")[0].children[0].className
                var user_name = planet_row[i].getElementsByClassName("button_pseudo uni_show_user   ")[0].children[0].innerText
                // запись
                // требуется проверка значений на нул 7
                // требуется разделение по иерархии коорд+атрибут
                 // lf количество флота в полете fl[0]- в полете, fl[0] всего
                var fl = document.getElementById("topnav_fleet_counter_total").innerText.split("/");
                // количество отправленных флотов достигло максимума
                if (fl[0]==fl[1]){
                    alert("количество отправленных флотов достигло максимума.Шпион не отправлен на планету "+planet_pos);
                    return;
                }
                if (user_state.indexOf("inactive")>-1) {
                // если не активна посылаем шпиона
                    console.log(planet_pos+" шпик "+ally_id);
                    // console.log(user_state.getElementsByClassName("button_pseudo uni_show_user  vacation "));
                    // сделать проверка проверка превышения максимально значения флота
                    // сделать вычисление времени ожидания по времени полета шпика
                    // отправка шпика
                    // сделать проверку игроков в отпуске, в классе добавляется "vacation" getElementsByClassName("button_pseudo uni_show_user  vacation ")
                    
                    if (ally_id=="") {
                        planet_row[i].getElementsByClassName("button_pseudo")[1].click();    
                    } else {
                        planet_row[i].getElementsByClassName("button_pseudo")[2].click();    
                    }
                }
            } 
        }
    }


    //отчёты шпионов
    function spy_reports(){
        if (window.location.href.indexOf("mode=show&message_class=0") < 0) { 
            return;
        }
        var spy_tables = document.getElementsByClassName("no_border_image spy_table");
        var i=0;
        while (spy_tables[i]!="undefined"){
            var spy_table_rep=spy_tables[i].getElementsByTagName("tbody")[0];
            var coord=spy_table_rep.children[0].innerText.match(/\[(.*)\]/g)[0].replace(/\[|\]/g, '').split(':'); //0 innerText=Шпионский доклад - [9:105:3] (П) а
            // console.log(coord);
            // console.log(spy_table_rep.childElementCount);
            // заголовки
            // spy_table_rep.getElementsByClassName("c_l bg_subheader"); 
            //Металл	15.979.790
            var metal=parseInt(spy_table_rep.children[6].innerText.replace(/[^\d;]/g, ''));
            var cristal=parseInt(spy_table_rep.children[7].innerText.replace(/[^\d;]/g, ''));
            var deit=parseInt(spy_table_rep.children[8].innerText.replace(/[^\d;]/g, ''));
            var defense=spy_table_rep.children[10].innerText; // Оборона
            var total_res=metal+cristal+deit;
            
            if (total_res>min_res) {
                // добавляем инфу в Ресурсы
                // ***********расчет количества супер транспортов
                var st=total_res*k_t_r / 100000
                var k=0;
                var fl="";
                while (st>(min_res/100000)){
                    st= Math.floor(st / 2);                   
                    var fl= fl + k + ":" + st + " ";
                    k++;
                }
                // ***********конец расчет количества супер транспортов
                // ***********размещаем инфу на странице
                // размещается несколько раз при включенном скрипте, нужна проверка повторного запуска
                var div1 = document.createElement('div');
                div1.innerHTML = fl;
                div1.className = "link notice";
                if ("Оборона"==defense) {
                    div1.className = "link error"; // если есть оборона подсвечиваем красным  
                }                
                document.getElementsByClassName("no_border_image spy_table")[i].getElementsByTagName("tbody")[0].children[5].appendChild(div1);
                // *********** конец размещаем инфу на странице
            }
            i++;
        }
    }


    var min_res = 30000000; //минисмальное количество ресурсов за которым лететь
    var k_t_r=1.1; // коэфицент прироста ресов
    var init=galaxyread();
    var init=spy_reports();
    //var init=navi();
    

    // выдаёт ошибку
    /*
    GM_registerMenuCommand( "Расчет СТ", spy_reports,"t");
    GM_registerMenuCommand( "Отправить шпионов", galaxyread,"s");
    */
})();