NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name OGame Redesign: Auction Timer
// @namespace Jimmy341
// @version 2.0
// @date 2015-07-31
// @description Displays a countdown timer for the Auction in OGame 4.*
// @include *.ogame*gameforge.com/game/index.php?page=*
// Originaly developed by Vesselin Bug Fix's by jimmy341
// ==/UserScript==
(function ()
{
// The following "if" is not really necessary but with it this script will work for Opera too
if (document.location.href.indexOf ("/game/index.php?") < 0)
return;
var myFunc1 = (function ()
{
function myIo ()
{
if (typeof (io) == "undefined")
{
setTimeout (myIo, 500);
return;
}
var oldMins = -1;
var first = false;
var overflowAuctionTimer = null;
var newMins, mins, secs, auctionTimer, auctionEndTime, currentTime;
var uni = document.location.href.replace (/^http:\/\/([^\/]+).+/, "$1");
function changeTimeLeft (timer, timeLeft)
{
if (typeof (timer) != "object")
return;
var time = new Date ();
if (typeof (timer.countdown) == "object")
{
timer.countdown.startTime = time.getTime ();
timer.countdown.startLeftoverTime = timeLeft;
}
else if (typeof (timer.countdownObject) == "object")
{
timer.countdownObject.startTime = time.getTime ();
timer.countdownObject.startLeftoverTime = timeLeft;
}
}
if ($ ("#auctionTimer").length)
return;
$ ("p.auction_info").next ().before ('<span id="auctionTimer" style="font-weight: bold; color: ' + $ ("p.auction_info span").css ("color") + ';"></span>');
if ($ ("#div_traderAuctioneer .left_header h2").text ().indexOf (loca.auctionFinished) < 0)
{
auctionEndTime = localStorage.getItem (uni + "_auctionEndTime");
auctionEndTime = (auctionEndTime) ? parseInt (auctionEndTime) : -1;
currentTime = new Date ().getTime ();
if (auctionEndTime >= currentTime)
{
secs = Math.round ((auctionEndTime - currentTime) / 1000);
oldMins = Math.ceil (secs / 60);
first = false;
}
else
{
oldMins = parseInt ($ ("p.auction_info").text ().match (/\d+/g) [0]);
secs = oldMins * 60;
first = true;
}
mins = oldMins;
auctionTimer = new simpleCountdown ($ ("#auctionTimer").get (0), secs, function () { $ ("#auctionTimer").text (""); });
}
var mySock = new io.connect ("/auctioneer",
{
port: auctioneerPort
});
mySock.on ("timeLeft", function (msg)
{
if ($ ("#div_traderAuctioneer .left_header h2").text ().indexOf (loca.auctionFinished) >= 0)
{
first = true;
localStorage.setItem (uni + "_auctionEndTime", "-1");
return;
}
auctionEndTime = localStorage.getItem (uni + "_auctionEndTime");
auctionEndTime = (auctionEndTime) ? parseInt (auctionEndTime) : -1;
currentTime = new Date ().getTime ();
/<b>\D+(\d+)/.exec (msg);
newMins = parseInt (RegExp.$1);
if (newMins == oldMins)
{
mins--;
if (first)
first = false;
else if (auctionEndTime >= 0)
localStorage.setItem (uni + "_auctionEndTime", currentTime + mins * 60 * 1000);
}
else
{
if ((newMins > oldMins) && (auctionEndTime >= currentTime))
newMins = Math.round ((auctionEndTime - currentTime) / (1000 * 60));
if (first)
first = false;
else if (oldMins >= 0)
localStorage.setItem (uni + "_auctionEndTime", currentTime + newMins * 60 * 1000);
oldMins = newMins;
mins = newMins;
}
if (mins)
changeTimeLeft (auctionTimer, mins * 60);
else
overflowAuctionTimer = new simpleCountdown ($ ("#auctionTimer").get (0), 30, function () { $ ("#auctionTimer").text (""); });
setTimeout (function ()
{
$ ("#auctionTimer").css ("color", $ ("p.auction_info span").css ("color"));
}, 100);
});
mySock.on ("new auction", function (msg)
{
/<b>\D+(\d+)/.exec (msg.info);
mins = parseInt (RegExp.$1);
auctionTimer = new simpleCountdown ($ ("#auctionTimer").get (0), mins * 60, function () { $ ("#auctionTimer").text (""); });
overflowAuctionTimer = null;
first = true;
setTimeout (function ()
{
$ ("#auctionTimer").css ("color", $ ("p.auction_info span").css ("color"));
}, 100);
});
mySock.on ("auction finished", function (msg)
{
changeTimeLeft (auctionTimer, 0);
changeTimeLeft (overflowAuctionTimer, 0);
first = true;
localStorage.setItem (uni + "_auctionEndTime", "-1");
});
}
if (document.getElementById ("div_traderAuctioneer"))
myIo ();
else
{
$ (document).ajaxSuccess (function ()
{
if ($ ("#auctionTimer").length == 0)
myIo ();
});
}
}).toString ();
var myFunc2 = (function ()
{
var uni = document.location.href.replace (/^http:\/\/([^\/]+).+/, "$1");
var auctionEndTime = localStorage.getItem (uni + "_auctionEndTime");
if (auctionEndTime == null)
return;
auctionEndTime = parseInt (auctionEndTime);
var currentTime = new Date ().getTime ();
if (auctionEndTime < currentTime)
return;
var clock = $ ("#OGameClock");
if (clock.length <= 0)
clock = $ (".OGameClock")
if (clock.length <= 0)
return;
clock.parent ().append ('<li id="auctionTimer" style="position: absolute; right: 125px;"></li>');
var auctionTimer = new simpleCountdown ($ ("#auctionTimer").get (0),
Math.round ((auctionEndTime - currentTime) / 1000),
function () { $ ("#auctionTimer").text (""); });
}).toString ();
function injectScript (myFunc)
{
var script = document.createElement ("script");
script.setAttribute ("type", "application/javascript");
script.textContent = "(" + myFunc + ") ();";
document.body.appendChild (script);
}
if (document.location.href.indexOf ("/game/index.php?page=traderOverview") >= 0)
injectScript (myFunc1);
else if (document.getElementById ("bar"))
injectScript (myFunc2);
}) ();