Tabelka na dzienną farmę dla plemienia

  • Rozpoczynający wątek DeletedUser194696
  • Data rozpoczęcia

DeletedUser194696

Guest
Siemka, posiada ktoś może skrypt dzięki któremu utworzymy tabelkę dziennej farmy każdej osoby w plemieniu na jego forum?
 

DANIU 997

Zwiadowca
Wynik reakcji
124
Ja robiłem to ręcznie nie polecam nikomu nie warto, część się ucieszy a część obrazi bo się wstydzi swoich wyników


Ale skrypt by się przydał
 

DeletedUser195491

Guest
Podbijam, jest ktoś w stanie ogarnąć taki skrypt? Tu tylko chodzi o wyciąganie z dziennych osób danego plemienia i stawiania ich w tabeli.
 

DeletedUser198119

Guest
łap

Kod:
// ==UserScript==
// @name         Ranking Rabusia
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://*.plemiona.pl/*screen=info_member*
// @grant        none
// ==/UserScript==


if(game_data.screen!='info_member'){
    UI.InfoMessage('Przejdz do listy graczy', 3000, true);
    end();
}

function logData(a, b) {
    console.log("p ", b), $(".row_a, .row_b, .row_c")
        .find('a:contains("' + b + '")')
        .parent()
        .siblings()
        .filter(".f")
        .text($(a)
            .find("#in_a_day_ranking_table tr td")
            .eq(3)
            .text()), $(".row_a, .row_b")
        .find('a:contains("' + b + '")')
        .parent()
        .siblings()
        .filter(".d")
        .text($(a)
            .find("#in_a_day_ranking_table tr td")
            .eq(0)
            .text()), "" == $(".row_a, .row_b")
        .find('a:contains("' + b + '")')
        .parent()
        .siblings()
        .filter(".l")
            .text($(a)
            .find("#in_a_day_ranking_table tr td")
            .eq(2)
            .text()), "" == $(".row_a, .row_b")
        .find('a:contains("' + b + '")')
        .parent()
        .siblings()
            .filter(".i")
        .text($(a)
            .find("#in_a_day_ranking_table tr td")
            .eq(4)
            .text()), "" == $(".row_a, .row_b")
        .find('a:contains("' + b + '")')
        .parent()
        .siblings()
        .filter(".d")
        .text() && logError(b, !0)
}

function logError(a, b) {
    $(".row_a, .row_b, .row_c, .row_t")
        .find('a:contains("' + a + '")')
        .parent()
        .siblings()
        .filter(".d, .f, .l, .i")
        .html('<span style="color:' + (b ? "black" : "red") + ';">' + (b ? "N%C3%A3o h%C3%A1 dados" : "Erro no carregamento de dados") + "</span>")
}
"undefined" == typeof window.$.twAjax && (window.$.twAjax = function () {
        var a = function (a, b) {
                this.options = a, this.promise = b
            }
            , b = function () {
                var a = []
                    , b = !1
                    , c = function () {
                        var b = a[0];
                        $.ajax(b.options)
                            .done(function () {
                                b.promise.resolve.apply(null, arguments), a.splice(b, 1), d()
                            })
                            .fail(function () {
                                b.promise.reject.apply(null, arguments), d()
                            })
                    }
                    , d = function () {
                        a.length ? (b = !0, c()) : b = !1
                    }
                    , e = function (c) {
                        a.push(c), b || d()
                    };
                return {
                    push: e
                }
            }();
        return function (c) {
            var d = $.Deferred();
            return b.push(new a(c, d)), d
        }
    }()), $("#content_value table.vis tr")
    .eq(0)
    .append("<th>Rabuś</th><th>Ranking</th><th>Plemię</th><th>Data</th>"), $("tr.row_a, tr.row_b, tr.row_c, tr.row_t")
    .each(function () {
        var a = $(this)
            .find("a:first")
            .text()
            .trim();
        console.log(a);
        var b = game_data.link_base_pure + "ranking&mode=in_a_day&type=loot_res&name=" + a;
        $(this)
            .append('<td class="f"></td><td class="d"></td><td class="l"></td><td class="i"></td>'), $.twAjax({
                url: b
            })
            .fail(function () {
                logError(a, !1)
            })
            .done(function (b) {
                logData(b, a)
            })

    });
 

DeletedUser197485

Guest
Podbijam o wyjaśnienie ogólne zasad działania skrytpu czy trzeba jakoś wypełniać itp
 

SIWY-PB

Pikinier
Wynik reakcji
49
Poprawiona wersja skryptu wstawionego przez Turgsmen. Skrypt nie znajduje się w skryptotece plemion, więc używacie go na własną odpowiedzialność!
Kod:
javascript:
// ==UserScript==
// @name         Dodatkowe rankingi w liście plemienia
// @version      2.0.7
// @author       Filip Klich
// @match        *://*.plemiona.pl/game.php?*&screen=ally&mode=members*
// @match        *://*.plemiona.pl/game.php?*&screen=info_member*
// ==/UserScript==
//LICENCJA       FREE SOFTWARE - drogi Supporcie <3 wyrażam zgodę na użytkowanie i publikowanie tego skryptu przez każdą osobę

//CONFIG - ustaw domyślne wartości - 1 to zaznacz; 0 to nie zaznaczaj
var farmaC      =     1;
var agresorC      =   0;
var obroncaC      =   0;
var wsparcieC      =  0;

var rank            = 0;//ranking obok wartosci
///////ODZNACZENIA
var rabusC      =     0;
var grabiezcaC      = 0;
var hetmanC         = 0;
var taranyC         = 0;
var katapultyC      = 0;
var pewnydowodcaC   = 0;
var smiercbohateraC = 0;
var pogszlachtaC    = 0;
var pogzwiadC       = 0;
var przywodcaC      = 0;
var rzeznikC        = 0;
var towarzyszC      = 0;
var rynekC          = 0;
var rekruC          = 0;
var krezusC         = 0;
var lataC =           0;

var lvlAward =        1; //odznaczenia w formie cyfry zamiast medalu (brąz, srebro, złoto)
//CONFIG

var awards = [];
var awardsB = [];

addAwards();
addCheckboxs();
setChecked();

var t;
var my_tribal;
function main() {
    var farma =    Number(document.getElementById("farma").checked);
    var agresor =  Number(document.getElementById("agresor").checked);
    var obronca =  Number(document.getElementById("obronca").checked);
    var wsparcie = Number(document.getElementById("wsparcie").checked);
    for(var i=0;i<awards.length;i++){
        awardsB[awardsB[awards[i]]] = Number(document.getElementById(awards[i]).checked);
    }

    var url=[];
    if(location.href.match('mode=members')&&location.href.match('screen=ally')) my_tribal=2;
    else my_tribal = 0;

    console.log(my_tribal);
    t=document.getElementsByClassName("vis")[my_tribal].getElementsByTagName("tbody")[0].getElementsByTagName("tr");

    if (farma) addColumn('Rekord \nfarmy',t.length);
    if (agresor) addColumn('Punkty \nagresora',t.length);
    if (obronca) addColumn('Punkty \nobrońcy',t.length);
    if (wsparcie) addColumn('Punkty \nwsparcia',t.length);
    for(i=0;i<awards.length;i++){
        if (awardsB[awardsB[awards[i]]]) addColumn('Odznaczenie \n'+awardsB[awards[i]],t.length);
    }
    var j = farma+agresor+obronca+wsparcie;
    for(i=0;i<awards.length;i++){
        j+= awardsB[awardsB[awards[i]]];
    }
//console.log(j);
    const length = setLength();

    url[0]='game.php?screen=ranking&mode=in_a_day&type=loot_res&name=';
    url[1]='game.php?screen=ranking&mode=kill_player&type=att&name=';
    url[2]='game.php?screen=ranking&mode=kill_player&type=def&name=';
    url[3]='game.php?screen=ranking&mode=kill_player&type=support&name=';
    var l=1;

    if (farma) setPoints(takeNick(1),1,t.length+1,url[0],l++,length-j);
    if (agresor) setPoints(takeNick(1),1,t.length+1,url[1],l++,length-j);
    if (obronca) setPoints(takeNick(1),1,t.length+1,url[2],l++,length-j);
    if (wsparcie) setPoints(takeNick(1),1,t.length+1,url[3],l++,length-j);
    for(i=0;i<awards.length;i++){
        if (awardsB[awardsB[awards[i]]]) setAwards(takeId(1),1,t.length+1,awardsB[awards[i]],l++,length-j);
    }
}

function setLength(){
    return $(".row_a")[0].getElementsByTagName("td").length;
}

function addColumn(text,players){
    players -= my_tribal-2;
    var th=[];
    th[0] = document.createElement('th');
    th[0].innerHTML = text;
    t[0].appendChild(th[0]);
    for (var i=1;i<players;i++){
        th[i] = document.createElement('td');
        th[i].innerHTML = '';
        t[i].appendChild(th[i]);
    }
}

function setPoints(nick,k,players,url,possition,length){
    var x=0;
    $.ajax({
        async: true,
        url: url+nick,
        type: 'GET',
        success: function(test) {
            var l = $(test).find('.lit-item');
            if (l[3]!=undefined){
                var t = l[3].innerHTML;
                var m = l[0].innerHTML;
                console.log(t);
                t=t.split(`<span class="grey">.</span>`);
                x=t[0];
                for (var i=1;i<t.length;i++) {x+=","; x+=t[i];}
                x=x.replace(".",",");
                if (rank) x=x+" ("+m+".)";
            }

            addValue(x,k,possition,length);
            setPoints(takeNick(k+1),k+1,players,url,possition,length);
        },
        error: function (error){
            setTimeout(function() {
                setPoints(nick,k,players,url,possition,length);
            }, 150);
        }
    });
}

function setAwards(id,k,players,award,possition,length){
    var x;
    var y;
    $.ajax({
        async: true,
        url: "game.php?screen=info_player&id="+id,
        type: 'GET',
        success: function(test) {
            var a = $(test).find(".main")[3].getElementsByClassName("award-desc");
           // console.log(a);
            for(var i=0;i<a.length;i++){
                y=a[i].getElementsByTagName("strong")[0].innerText.split(" - ");
                if(y[0].split(" (")[0]===award){
                    if(lvlAward === 0) x = y[0].split(" (")[1];
                    else  x= y[1].split(")")[0];
                    x="<b><center>"+x;
                    if(y[0].split(" (")[1]==="Brąz") x="<font color=#815f3a>"+x;
                    else if(y[0].split(" (")[1]==="Drewno") x="<font color=#492414>"+x;
                    else if(y[0].split(" (")[1]==="Srebro") x="<font color=#9ea7b3>"+x;
                    else if(y[0].split(" (")[1]==="Złoto") x="<font color=#d79f30>"+x;
                }

            }

            if(x===undefined){x="<center>Brak danych";}
            addValue(x,k,possition,length);
            setAwards(takeId(k+1),k+1,players,award,possition,length);
        },
        error: function (error){
            setTimeout(function() {
                setAwards(id,k,players,award,possition,length);
            }, 150);
        }
    });
}

function takeId(i){
    return document.getElementsByClassName("vis")[my_tribal].getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i].getElementsByTagName("td")[0].innerHTML.split("id=")[1].split("\"")[0];
}
function takeNick(i){
    var g=document.getElementsByClassName("vis")[my_tribal].getElementsByTagName("tbody")[0].getElementsByTagName("tr")[i];
    var d=g.getElementsByTagName("td")[0].getElementsByTagName("a")[0].innerHTML;
    return d;
}
function addValue(loot,i,possition,length){
   //console.log(possition+length-1);
   // console.log(i);
    t[i].getElementsByTagName('td')[possition+length-1].innerHTML=loot;
}
function addCheckboxs(){
    var div = document.createElement('div');
    div.className = " topbar";
    div.innerHTML = '<label> <input type="checkbox" id="farma"/> Farma</label> \
<label> <input type="checkbox" id="agresor"/> Agresor</label> \
<label> <input type="checkbox" id="obronca" /> Obrońca</label> \
<label> <input type="checkbox" id="wsparcie" > Wsparcie</label><br>'
    for(var i=0;i<awards.length;i++){
        div.innerHTML+='<label> <input type="checkbox" id="'+awards[i]+'" /> '+awardsB[awards[i]]+'</label> '
        if(i===5) div.innerHTML+="<br>"
        if(i===10) div.innerHTML+="<br>"
    }
    div.innerHTML+='<br><input type="button" id="clickMe" value="Minecraft" class="btn " onclick="main()">';
    $("#content_value").find('h2')[0].innerHTML="<br>"+$("#content_value").find('h2')[0].innerHTML;
    document.getElementById('content_value').prepend(div);
    document.getElementById("clickMe").onclick = main;
}

function setChecked(){
    if(farmaC===1) {document.getElementById("farma").checked=true;}
    if(agresorC===1) {document.getElementById("agresor").checked=true;}
    if(obroncaC===1) {document.getElementById("obronca").checked=true;}
    if(wsparcieC===1) {document.getElementById("wsparcie").checked=true;}

    for(var i=0;i<awards.length;i++){
        if(eval(awards[i]+"C")===1) {document.getElementById(awards[i]).checked=true;}
    }
}

function addAwards(){
    var j=0;

    awards[j]="rabus";
    awardsB[awards[j++]]="Rabuś";
    awards[j]="grabiezca";
    awardsB[awards[j++]]="Grabieżca";
    awards[j]="hetman";
    awardsB[awards[j++]]="Hetman";
    awards[j]="tarany";
    awardsB[awards[j++]]="Nisczyciel murów";
    awards[j]="katapulty";
    awardsB[awards[j++]]="Człowiek demolka";
    awards[j]="pewnydowodca";
    awardsB[awards[j++]]="Pewny dowódca";
    awards[j]="smiercbohatera";
    awardsB[awards[j++]]="Śmierć bohatera";
    awards[j]="pogszlachta";
    awardsB[awards[j++]]="Pogromca szlachty";
    awards[j]="pogzwiad";
    awardsB[awards[j++]]="Pogromca zwiadowców";
    awards[j]="przywodca";
    awardsB[awards[j++]]="Przywódca";
    awards[j]="rzeznik";
    awardsB[awards[j++]]="Rzeźnik";
    awards[j]="towarzysz";
    awardsB[awards[j++]]="Towarzysz broni";
    awards[j]="rynek";
    awardsB[awards[j++]]="Człowiek interesu";
    awards[j]="rekru";
    awardsB[awards[j++]]="Mistrz rekrutacji";
    awards[j]="krezus";
    awardsB[awards[j++]]="Krezus";
    awards[j]="lata";
    awardsB[awards[j++]]="Lata gry";
}
 

SIWY-PB

Pikinier
Wynik reakcji
49
W skryptotece znajduje się podobnie działający skrypt Rozszerzony podgląd plemienia (LINK).
Kod:
javascript:
class UrlBuilder
{
constructor(template)
{
this.template = template;
}

build(args)
{
let result = this.template;
let keys = Object.keys(args);

keys.forEach((e) => {
result = result.replace("{{" + e + "}}", args[e]);
});

return result;
}
}

class App
{
constructor(config)
{
this.config = config;
}

load()
{
// Set local members
this.iterator = 0;
this.members = $('#content_value table').eq(3).find('tr').splice(1);
this.interval = setInterval($.proxy(this.update, this), 600);

// Add headers
let header = $('#content_value table').eq(3).find('tr').eq(0);
header.find('th:last').after('<th class="nowrap"><a href="#">Rekord farmy</a></th> <th class="nowrap"><a href="#">Rekord zbieractwa</a></th> <th class="nowrap"><a href="#">Odznaczenia</a></th>');
}

unload()
{
if (this.interval != undefined && this.interval != null)
{
clearInterval(this.interval);
}
}

update()
{
if (this.iterator >= this.members.length)
{
this.unload();
return;
}

this.getData(this.members[this.iterator++]);
}

getData(input)
{
let player = $(input).find('td:first').text().trim().split('(')[0].trim();
let url = new UrlBuilder('https://{{world}}.plemiona.pl/game.php?screen=ranking&mode=in_a_day&type={{type}}&name={{name}}');

// Ask server for data
// Looted resources
this.askServer(url.build({ world: game_data.world, type: 'loot_res', name: player }), function (response) {
response = $(response);

let score = response.find('#in_a_day_ranking_table tr').eq(1).find('td').eq(3).text();
$(input).find('td:last').after('<td class="lit-item"><b>' + (score.length <= 0 ? "-" : score) + '</b></td>');

// Scavenge
app.askServer(url.build({ world: game_data.world, type: 'scavenge', name: player }), function (response) {
response = $(response);

let score = response.find('#in_a_day_ranking_table tr').eq(1).find('td').eq(3).text();
$(input).find('td:last').after('<td class="lit-item"><b>' + (score.length <= 0 ? "-" : score) + '</b></td>');

// Awards
url = new UrlBuilder('https://{{world}}.plemiona.pl/game.php?screen=ranking&mode=awards&name={{name}}')
app.askServer(url.build({ world: game_data.world, name: player }), function (response) {
response = $(response);

let result = response.find('#award_ranking_table tr.lit');
if (result.size() > 0)
{
$(input).find('td:last').after('<td class="lit-item">' + result.eq(0).find('td:last').html().trim() + '</td>');
return;
}

$(input).find('td:last').after('<td class="lit-item"><i>Ukryto odznaczenia</i></td>');
});
});
});
}

askServer(url, callback)
{
$.ajax({
url: url,
dataType: 'html',
success: function (d) {
callback(d);
}
});
}
}

let app = new App({});
app.load();
 
Do góry