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

jarq

Killer
Wynik reakcji
36
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ść.


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


Zapraszam do dyskusji.
 
Ostatnio edytowane przez moderatora:

DeletedUser15887

Guest
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);
    });
});
 
Do góry