NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Find Player Details (by Eleria)
// @namespace -
// @description Find all coordinates and other details from players within the standard ogame search - actuality one week!
// @include http://*.ogame.*/game/index.php?*page=*
// @version 2.4.4.1
// @require https://openuserjs.org/install/Amynka/OGame_VersionCheck.user.js
// @updateURL http://userscripts-mirror.org/scripts/source/136116.user.js
// @downloadURL http://userscripts-mirror.org/scripts/source/136116.user.js
// @include *://*.ogame.*/game/index.php?*page=*
// @include *
// ==/UserScript==
oGameVersionCheck('Find Player Details (by Eleria)','5.7.0.99','http://userscripts-mirror.org/scripts/source/136116.user.js');
(function(){
var unsafe = (typeof unsafeWindow) != "undefined" ? unsafeWindow : window;
var $ = unsafe.jQuery;
if ( !$ ) return;
var ogameUniverse = $('meta[name=ogame-universe]').attr('content'),
ogamePlayerId = $('meta[name=ogame-player-id]').attr('content'),
temp;
ogameUniverse = ((ogameUniverse)?ogameUniverse.toString():'');
ogamePlayerId = ((ogamePlayerId)?ogamePlayerId.toString():'0');
$.get('http://' + ogameUniverse + '/api/universe.xml', function(uniData){
var updateTimestamp = parseInt($(uniData).find('universe').first().attr('timestamp'),10) * 1000;
$(document).ajaxSuccess(function(e,xhr,settings){
// ogame search
if (settings.url.indexOf('http://' + ogameUniverse + '/game/index.php?page=search&ajax=1') != -1 && settings.type == 'POST') {
var method = $('.ajaxContent').parent().find('.ui-tabs-active a').attr('id');
if (method == '2') { // 2 = player, 4 = ally, 3 = planetnames
$('#messagebox').css('overflow','auto');
$('.ajaxContent').width(757).css('overflow','auto').find('tr').slice(1,-2).each(function(){
var $resultRow = $(this).clone();
var playerId = ogamePlayerId;
if ($resultRow.find('td.action').children().size() > 0) {
resultList = /to=(\d+)\&/.exec($resultRow.find('td.action').first().html());
playerId = resultList[1];
}
var url = 'https://' + ogameUniverse + '/api/playerData.xml?id=' + playerId;
$resultRow.find('td.position').css('margin-right','5px').empty();
$resultRow.find('td.home').empty();
$.get(url, function(data){
var updateTimestampPlayer = parseInt($(data).find('playerData').first().attr('timestamp'),10) * 1000;
var xmlTxt = 'OGame-API: ';
var uT = updateTimestamp;
if (updateTimestampPlayer > updateTimestamp) {
uT = updateTimestampPlayer;
xmlTxt += 'playerData.xml';
} else {
xmlTxt += 'universe.xml';
}
xmlTxt += '<br/>';
var update = new Date(uT);
var nowTimestamp = new Date().getTime();
var difference = (nowTimestamp - uT);
$('<span/>').css({'display':'block','text-align':'right','font-style':'italic'}).attr('title',update.getDate() + '.' + (update.getMonth() + 1) + '.' + update.getFullYear() + ' ' + update.getHours() + ':' + update.getMinutes() + ':' + update.getSeconds()).html(xmlTxt + 'update ' + formatTime(difference) + ' ago').appendTo($resultRow.find('td.position'));
var coordsList = new Array();
var planets = new Array();
var xml = uniData;
var selector = 'planet[player="' + playerId + '"]';
if (updateTimestampPlayer > updateTimestamp) {
xml = data;
selector = 'planet';
}
$(xml).find(selector).each(function(i){
var coords = $(this).attr('coords');
var name = $(this).attr('name');
var temp = /(\d+):(\d+):(\d+)/.exec(coords);
var coordsPrepared = getCoordsPrepared(coords);
var link = 'https://' + ogameUniverse + '/game/index.php?page=galaxy&galaxy=' + temp[1] + '&system=' + temp[2] + '&planet=' + temp[3];
var moon = false;
if ($(this).find('moon').size() > 0) moon = true;
var home = false;
if (i == 0) home = true;
coordsList.push(coordsPrepared);
planets[coordsPrepared] = {
coords: coords,
name: name,
url: link,
moon: moon,
home: home
};
});
coordsList.sort();
var $home = $resultRow.find('td.home');
var $coords = $resultRow.find('td.position');
$('<br/>').appendTo($home);
for (var t = 0; t < coordsList.length; t++) {
$('<br/>').appendTo($home);
if (t > 0) $('<br/>').appendTo($coords);
var homeText = $('<span/>').html(planets[coordsList[t]].name).appendTo($home);
if (planets[coordsList[t]].home) homeText.css('font-weight','bold');
var text = '[' + planets[coordsList[t]].coords + ']';
$('<a/>').attr('href',planets[coordsList[t]].url).attr('target','_parent').html(text).appendTo($coords).hover(function(){
$(this).css('text-decoration','underline');
},function(){
$(this).css('text-decoration','none');
});
if (planets[coordsList[t]].moon) {
$('<span/>').css('white-space','nowrap').html(' + M').appendTo($coords);
}
}
var $highscore = $resultRow.find('td.highscore').width(150).css('text-align','left');
var playerAttributes = [
findAttributes($(data),0), // points
findAttributes($(data),1), // economy
findAttributes($(data),2), // research
findAttributes($(data),3), // military points
findAttributes($(data),4), // military lost
findAttributes($(data),5), // military built
findAttributes($(data),6), // military destroyed
findAttributes($(data),7) // honour points
];
// points
if ($highscore.find('a:eq(0)').length > 0) {
temp = 'Points: ' + addThousandSeparator((playerAttributes[0].score)?playerAttributes[0].score.toString():'0') + ' (#' + $highscore.find('a:eq(0)').html().trim() + ')';
$highscore.find('a:eq(0)').css('white-space','nowrap').html(temp);
} else {
(createSpanForHighscore('Points',playerAttributes[0].score,playerAttributes[0].rank)).appendTo($highscore);
}
var elems = [
$('<br/>'),
(createSpanForHighscore('Economy',playerAttributes[1].score,playerAttributes[1].rank)),
$('<br/>'),
(createSpanForHighscore('Research',playerAttributes[2].score,playerAttributes[2].rank)),
$('<br/>'),
$('<span/>').css({'white-space':'nowrap','font-weight':'bold'}).html('Military:'),
$('<br/>'),
(createSpanForHighscore('Points',playerAttributes[3].score,playerAttributes[3].rank)),
$('<br/>'),
$('<span/>').css('white-space','nowrap').html('Ships: ' + addThousandSeparator(playerAttributes[3].ships)),
$('<br/>'),
(createSpanForHighscore('Lost',playerAttributes[4].score,playerAttributes[4].rank)),
$('<br/>'),
(createSpanForHighscore('Built',playerAttributes[5].score,playerAttributes[5].rank)),
$('<br/>'),
(createSpanForHighscore('Destroyed',playerAttributes[6].score,playerAttributes[6].rank)),
$('<br/>'),
(createSpanForHighscore('Honour points',playerAttributes[7].score,playerAttributes[7].rank)),
];
$(elems).each(function(){
$highscore.append($(this));
});
});
// ----------------------
// show/hide details
// ----------------------
var arrowDown = $(Arrow.htmlTag).css({
width: Arrow.width,
height: Arrow.height,
background: Arrow.background,
cursor:'pointer',
backgroundPosition:Arrow.backgroundPosition.down
});
var arrowUp = arrowDown.clone().css({backgroundPosition:Arrow.backgroundPosition.up});
if ($(this).find('td.no').size() > 0) {
arrowDown.appendTo($(this).find('td.no').empty());
arrowUp.appendTo($resultRow.find('td.no').empty());
} else {
var css = {
'float':'left',
'margin-right':'6px'
};
arrowDown.prependTo($(this).find('td.userName')).css(css);
arrowUp.prependTo($resultRow.find('td.userName')).css(css);
}
$resultRow.insertBefore($(this)).hide();
arrowDown.hover(function(){
$(this).css({backgroundPosition:Arrow.backgroundPosition.downHover});
}, function(){
$(this).css({backgroundPosition:Arrow.backgroundPosition.down});
}).click(function(){
$(this).parent().parent().hide().prev().show();
});
arrowUp.hover(function(){
$(this).css({backgroundPosition:Arrow.backgroundPosition.upHover});
}, function(){
$(this).css({backgroundPosition:Arrow.backgroundPosition.up});
}).click(function(){
$(this).parent().parent().hide().next().show();
});
});
}
}
});
});
var Arrow = {
htmlTag: '<div/>',
width: '20px',
height: '18px',
background: 'url("http://gf2.geo.gfsrv.net/cdn71/fc7a8ede3499a0b19ea17613ff0cb1.gif") no-repeat scroll left top transparent',
backgroundPosition: {
down: '0 0',
downHover: '-20px 0',
up: '0 -18px',
upHover: '-20px -18px'
}
};
function findAttributes($data,type) {
var result = {
score: $data.find('position[type=' + type + ']').attr('score'),
rank: $data.find('position[type=' + type + ']').text()
};
if (!isNaN(type) && type == 3) {
result.ships = $data.find('position[type=' + type + ']').attr('ships');
result.ships = ((result.ships)?result.ships.toString():'0');
}
return result;
}
function createSpanForHighscore(label,score,rank) {
var temp = ((label)?label.toString():'') + ': ' + addThousandSeparator((score)?score.toString():'0') + ' (#' + ((rank)?rank.toString():'') + ')';
return $('<span/>').css('white-space','nowrap').html(temp);
}
function addThousandSeparator(value) {
var parts = /([+-]*)([\d]+)([\.,\d]*)/.exec((value) ? value.toString() : '');
value = parts[2].split('').reverse().join('').match(/.{1,3}/g).join('.').split('').reverse().join('');
return parts[1] + value + parts[3];
}
function getCoordsPrepared(coords) {
// parse coordinates into integer (zb.: 1:54:3 --> 001054003)
var temp = /(\d+)\D*(\d*)\D*(\d*)/.exec((coords) ? coords.toString() : '');
return ('000' + temp[1]).slice(-3) + ('000' + temp[2]).slice(-3) + ('000' + temp[3]).slice(-3);
}
function formatTime(value) {
value = (isNaN(value) ? 0 : value);
var days = Math.floor(value / (1000*60*60*24));
var hours = Math.floor((value / (1000*60*60)) - (days*24));
var minutes = Math.floor((value / (1000*60)) - (hours*60 + days*24*60));
var seconds = Math.floor((value / (1000)) - (minutes*60 + hours*60*60 + days*24*60*60));
var newTime = '';
if (days > 0) newTime += days + 'd ';
if (hours > 0 || days > 0) newTime += hours + 'h ';
if (minutes > 0 || hours > 0 || days > 0) newTime += minutes + 'm ';
newTime += seconds + 's ';
return newTime;
}
})();