Advertisement
Guest User

OGame Retro Better Timers

a guest
Sep 28th, 2016
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name       OGame Retro Better Timers
  3. // @include    *ogame1304.de/game/index.php?page=b_building*
  4. // @include    *ogame1304.de/game/index.php?page=overview*
  5. // @version    0.1
  6. // ==/UserScript==
  7.  
  8. (function() {
  9.     'use strict';
  10.  
  11.     // Introduced by one call to the t and tt functions.
  12.     const SKEW = 1;
  13.  
  14.     var disableOriginalTimers = function() {
  15.         unsafeWindow.t = function() {};
  16.         unsafeWindow.tt = function() {};
  17.     };
  18.  
  19.     var msToPrettyTime = function(ms) {
  20.         var seconds = Math.floor(ms / 1000);
  21.         var days = Math.floor(seconds / (24 * 60 * 60));
  22.         seconds %= 24 * 60 * 60;
  23.         var hours = Math.floor(seconds / (60 * 60));
  24.         seconds %= 60 * 60;
  25.         var minutes = Math.floor(seconds / 60);
  26.         seconds %= 60;
  27.         var s = '';
  28.         if (days > 0) {
  29.             s += days + ' d ';
  30.         }
  31.         s += hours;
  32.         s += ':';
  33.         s += minutes < 10 ? '0' + minutes : minutes;
  34.         s += ':';
  35.         s += seconds < 10 ? '0' + seconds : seconds;
  36.         return s;
  37.     };
  38.  
  39.     var prettyDate = function(date) {
  40.         var now = new Date();
  41.         var s = '';
  42.         s += date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
  43.         s += ':';
  44.         s += date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
  45.         s += ':';
  46.         s += date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
  47.         if (now.getDate() != date.getDate() ||
  48.             now.getMonth() != date.getMonth() ||
  49.             now.getFullYear() != date.getFullYear()) {
  50.             s += ' ' + date.getDate() + '.' + (date.getMonth() + 1) + '.' + date.getFullYear();
  51.         }
  52.         return s;
  53.     };
  54.  
  55.     var overview = function() {
  56.         var now = Date.now();
  57.         // Collect all elements.
  58.         var elements = [];
  59.         for (var i = 1; ; ++i) {
  60.             var bxx = document.getElementById('bxx' + i);
  61.             if (bxx === null) {
  62.                 break;
  63.             }
  64.             elements.push(bxx);
  65.         }
  66.         var bxy = document.getElementById('bxy');
  67.         if (bxy !== null) {
  68.             elements.push(bxy);
  69.         }
  70.         // Calculate end dates and inject them into the titles.
  71.         var ends = [];
  72.         for (var i = 0; i < elements.length; ++i) {
  73.             var element = elements[i];
  74.             var remaining = parseInt(element.title);
  75.             var end = new Date(now);
  76.             end.setSeconds(end.getSeconds() + remaining + SKEW);
  77.             ends.push(end);
  78.             element.title = prettyDate(end);
  79.         }
  80.         // Update counters.
  81.         var update = function() {
  82.             var now = new Date();
  83.             for (var i = 0; i < elements.length; ++i) {
  84.                 var remaining = ends[i] - now;
  85.                 var element = elements[i];
  86.                 if (remaining < 0) {
  87.                     element.innerHTML = '-';
  88.                 } else {
  89.                     element.innerHTML = msToPrettyTime(remaining);
  90.                 }
  91.             }
  92.         };
  93.         if (elements.length > 0)
  94.             setInterval(update, 1000);
  95.     };
  96.  
  97.     var buildings = function() {
  98.         if (typeof pp === 'undefined') {
  99.             return;
  100.         }
  101.         var end = new Date();
  102.         end.setSeconds(end.getSeconds() + pp + SKEW);
  103.         var bxx = document.getElementById('bxx');
  104.         var update = function() {
  105.             var remaining = end - new Date();
  106.             var s = '';
  107.             if (remaining < 0) {
  108.                 s += 'Finished';
  109.                 s += '<br>';
  110.                 s += '<a href="index.php?page=b_building&session=' + ps + '&cp=' + pl + '">Continue</a>';
  111.             } else {
  112.                 s += '<span title="' + prettyDate(end) + '">' + msToPrettyTime(remaining) + '</span>';
  113.                 s += '<br>';
  114.                 s += '<a href="index.php?page=b_building&session=' + ps + '&unbau=' + pk + '&cp=' + pl + '">Cancel</a>';
  115.             }
  116.             bxx.innerHTML = s;
  117.         };
  118.         setInterval(update, 1000);
  119.     };
  120.  
  121.     disableOriginalTimers();
  122.     if (window.location.href.indexOf('overview') > 0) {
  123.         overview();
  124.     } else if (window.location.href.indexOf('b_building') > 0) {
  125.         buildings();
  126.     }
  127. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement