1. Zapisy na Turniej Szybkich Plemion oficjalnie zakończone!
    Zapoznaj się z listą zgłoszonych składów tutaj ->klik<-
    Dismiss Notice

[Przeglądarka] Odległość od aktywnej wioski

Dyskusja w 'Skrypty do przeglądarek' rozpoczęta przez użytkownika jarq, 28. Paź 2014.

Poleć tę stronę

  1. jarq

    jarq Killer Plemiona Team Opiekun Projektu

    Dołączył:
    26. Wrz 2007
    Wiadomości:
    1.855
    Docenione treści:
    3
    Skrypt dopisuje do cordów wioski w bb-code: na forum plemienia, w notatniku (nie dopisuje odległości w notatkach wioski), prywatnych wiadomościach itp. odległość od wioski aktywnej wraz z czasem podróży jednostek.

    Skrypt do pobrania na stronie Skryptoteki.

    plik ZIP
    plik niespakowany




    JAK TO WYGLĄDA W PRAKTYCE?

    1) Instalujemy skrypt w przeglądarce (-Chrome, Opera, Firefox).


    2) Wchodzimy na forum plemienia/w prywatną wiadomość.

    Tak wygląda to na forum plemienia: mamy dany temat, gdzie są zawarte koordynaty wsi. W momencie, kiedy skrypt jest poprawnie zainstalowany, obok kordów w nawiasie pokazuje nam odległość.

    [​IMG]

    3) Po podświetleniu koordynatów, pokazuje się także okno z czasem podróży poszczególnych jednostek wraz z godzinach dotarcia.

    [​IMG]

    Zapraszam do dyskusji.
     
    Last edited by a moderator: 21. Mar 2015
  2. lol2x

    lol2x Miecznik

    Dołączył:
    27. Sie 2007
    Wiadomości:
    56
    Docenione treści:
    0
    Z powodu wymuszenia przez plemiona protokołu https i nowego adresowania linków do wiosek potrzebne były zmiany, nie udało mi się znaleźć kontaktu do autora ale udostępniam nową wersję kodu niech @jarq zdecyduje co z nią zrobić:

    HTML:
    // ==UserScript==
    // @name         Liczenie odleglosci do podlinkowanych wiosek
    // @namespace    [url]http://your.homepage/[/url]
    // @version      0.5
    // @description  Skrypt dopisuje do linków do wiosek odległość do nich z aktywnej wioski
    // @author       Mosze
    // @match        [url]https://*.plemiona.pl/*[/url]
    // @grant        none
    // ==/UserScript==
    
    // Changelog:
    // 0.5: obsługa nowego formatu linków, obsługa protokołu https - autor: lol2x
    // 0.4: po wskazaniu na odległość, skrypt oblicza dodatkowo czas podróży
    //      poszczególnych jednostek oraz ich hipotetyczny czas dotarcia
    // 0.3: obsługa linków dodatkowo w raportach
    // 0.2: obsługa linków w wiadomościach prywatnych, oprócz tych na forum
    //      obsługa wszystkich polskich światów
    // 0.1: pierwsza wersja skryptu
    
    var unit_speed = /* prędkość gry: */ 1.5 * /* prędkość jednostek: */ 0.8;
    $(function() {
        var my_coords = $("#menu_row2 b.nowrap").html().split(/[(|)]/);
        var my_x = my_coords[1]|0;
        var my_y = my_coords[2]|0;
        console.log(my_coords);
        $('a[href*="info_village"]').each(function() {
            var desc = $(this).html();
            console.log(desc);
            var match = desc.match(/\(([0-9]{1,3})\|([0-9]{1,3})\) K[0-9]{1,2} $/);
            if (!match) return;
            
            var o_x = match[1]|0;
            var o_y = match[2]|0;
            
            var dist = Math.sqrt((my_x - o_x)*(my_x - o_x) + (my_y - o_y)*(my_y - o_y));
            var dist_r = Math.round(dist);
            
            var popup;
            
            var span = $("<span> (odl. "+dist_r+")</span>")
              .css("position", "relative")
              .hover(function() {
                  popup = $("<div></div>").css({
                      position: "absolute",
                      top: "1.5em",
                      background: "white",
                      display: "inline-table",
                      "z-index": 100
                  });
                  
                  $.each({
                      9: "<img src='/graphic/unit/unit_spy.png'>",
                      10: "<img src='/graphic/unit/unit_light.png'>"+
                          "<img src='/graphic/unit/unit_marcher.png'>"+
                          "<img src='/graphic/unit/unit_knight.png'>",
                      11: "<img src='/graphic/unit/unit_heavy.png'>",
                      18: "<img src='/graphic/unit/unit_spear.png'>"+
                          "<img src='/graphic/unit/unit_axe.png'>"+
                          "<img src='/graphic/unit/unit_archer.png'>",
                      22: "<img src='/graphic/unit/unit_sword.png'>",
                      30: "<img src='/graphic/unit/unit_ram.png'>"+
                          "<img src='/graphic/unit/unit_catapult.png'>",
                      35: "<img src='/graphic/unit/unit_snob.png'>"
                  }, function(velo, html) {
                      velo = velo|0;
                      
                      var tlen = dist * velo / unit_speed;
                      
                      var zeropad = function(num, count) {
    					  return [Math.pow(10, count - num.toString().length), num].join('').substr(1);
    	              };
                      
                      var dateformat = function(t) {
    		            return zeropad(t.getDate(), 2) + "." + zeropad(t.getMonth() + 1, 2) + "." + t.getFullYear().toString() +
    				      " (" + ["Nie", "Pon", "Wto", "Śro", "Czw", "Pią", "Sob"][t.getDay()]  + ") " +
                          zeropad(t.getHours(), 2) + ":" + zeropad(t.getMinutes(), 2) + ":" + zeropad(t.getSeconds(), 2);
                      };
    
    
                      
                      var tlen_h = zeropad(tlen/60|0,2);
                      var tlen_m = zeropad(tlen%60|0,2);
                      var tlen_s = zeropad(tlen*60%60|0,2);
                      var tlen_f = ""+tlen_h+":"+tlen_m+":"+tlen_s;
                      
                      var time = dateformat(new Date(Date.now() + tlen * 60000));
                      
                      var row = $("<tr></tr>").appendTo(popup);
                      
                      $("<td>"+html+"</td>").appendTo(row);
                      $("<td>"+tlen_f+"</td>").appendTo(row);
                      $("<td>"+time+"</td>").appendTo(row);
                  });
                  
                  popup.appendTo(span);
              }, function() {
                  popup && popup.remove();
              });
            
            $(this).append(span);
        });
    });