// ==UserScript==
// @name OGame RaidsTable
// @description Tableau de raids
// @description:en Raids table
// @namespace Xanatos
// @include http*://*.ogame.gameforge.com/game/index.php?page=messages*
// @exclude http*://*.ogame.gameforge.com/game/index.php?page=messages*messageId*
// @version 1.9.6
// @grant none
// @downloadURL none
// ==/UserScript==
// Compatibility OGame 6.0.8
// images
var more_infos = '
';
// app
(function()
{
Element.prototype.hasClass = function(className) {
return this.className && new RegExp("(^|\\s)" + className + "(\\s|$)").test(this.className);
};
function trim(string)
{return string.replace(/(^\s*)|(\s*$)/g,'');}
function numberWithCommas(x)
{
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
}
function removeElement(node)
{
node.parentNode.removeChild(node);
}
function extractRess(res)
{
if(/:/.test(res.textContent)) {
res =trim(res.textContent.split(':')[1]);
}
else {
res=trim(res.textContent);
}
if(/^[0-9]{1,3}\.[0-9]{3}$/.test(res))
res=res.replace(/\./g,'');
else if (/^[0-9]{1,3}(\.|,)[0-9]{1,3}Md/.test(res))
res=res.replace(/,/g,'.').replace(/Md/g,'')*1000000000;
else if (/^[0-9]{1,3}(\.|,)[0-9]{1,3}M/.test(res))
res=res.replace(/,/g,'.').replace(/M/g,'')*1000000;
return parseInt(res);
}
function raidsTable_init()
{
if(document.querySelector('#chatBar'))
{
var uiid20_ul = document.querySelector("#ui-id-20 .tab_inner:first-child");
}
else
{
var uiid20_ul = document.querySelector("#ui-id-14 .tab_inner:first-child");
}
var raidsTable = document.querySelector("#raidsTable_container");
// on affiche le tableau s'il n'existe pas déjà
if (uiid20_ul && !raidsTable)
{
// on récupère tous les messages
var computed_messages = [];
var total_resources = 0;
var total_pt = 0;
var total_gt = 0;
var raw_messages = uiid20_ul.querySelectorAll('li.msg'), i;
for(i = 0; i < raw_messages.length; i++)
{
var current_raw_message = raw_messages[i];
var computed_message_built = {};
if(current_raw_message.querySelectorAll('.espionageDefText').length == 0)
{
// message id
computed_message_built.id = current_raw_message.getAttribute('data-msg-id');
// joueur
var player = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[0];
var player_html_nodes = player.children;
var player_html = "", k = 0;
for(k = 1; k < player_html_nodes.length-1; k++)
{
if(k > 1)
{
player_html += ' ';
}
player_html += player_html_nodes[k].innerHTML
}
computed_message_built.player = player_html;
// coordonnées
var coordinates_node = current_raw_message.querySelectorAll('.msg_head')[0].querySelectorAll('.msg_title')[0].querySelectorAll('a')[0];
computed_message_built.coordinates_url = coordinates_node.getAttribute('href');
var planetIcon = '';
if(coordinates_node.querySelectorAll('figure')[0].hasClass('moon'))
{
planetIcon = ' ';
}
computed_message_built.coordinates = coordinates_node.innerHTML.match(/\[.+\]/)[0] + planetIcon;
// activité
var activity_node = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('.compacting')[0].querySelectorAll('.fright')[0];
computed_message_built.activity_min = "";
computed_message_built.activity_color = 'inherit';
if(activity_node.querySelectorAll('font')[0])
{
computed_message_built.activity_min = activity_node.querySelectorAll('font')[0].innerHTML.match(/\d+/)[0] + 'm.';
computed_message_built.activity_color = activity_node.querySelectorAll('font')[0].getAttribute('color');
computed_message_built.player += ' '+computed_message_built.activity_min+'';
}
// pourcentage butin
try
{
var booty = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[2].querySelectorAll('span')[0];
booty = booty.innerHTML;
var regex = /[\d\.]+/g;
booty = booty.match(regex)[0];
booty = parseInt(booty);
//booty = current_raw_message.getElementsByClassName('ctn ctn4')[3].textContent.replace(/[^0-9]/g,'');
computed_message_built.booty = booty;
}
catch(err)
{
var booty = 100;
computed_message_built.booty = booty;
}
// ressources
var ress = current_raw_message.getElementsByClassName('resspan');
var metal = extractRess(ress[0]);
var crystal = extractRess(ress[1]);
var deut = extractRess(ress[2]);
var resources = parseInt(booty/100*(metal+crystal+deut));
total_resources += resources;
var fret = parseInt(resources*1.1);
computed_message_built.raw_resources = resources;
computed_message_built.resources = numberWithCommas(resources);
// gt
computed_message_built.gt = Math.round(fret/25000);
total_gt += computed_message_built.gt;
// pt
computed_message_built.pt = Math.round(fret/5000);
total_pt += computed_message_built.pt;
// liens transporteurs
var link=current_raw_message.getElementsByClassName('msg_actions clearfix')[0].getElementsByTagName('a')[2].href;
var APIkey = current_raw_message.getElementsByClassName('icon_apikey')[0].title.split('-')[3];
computed_message_built.linkGT = link+'&am203='+computed_message_built.gt+'&addGT='+APIkey;
computed_message_built.linkPT = link+'&am202='+computed_message_built.pt+'&addGT='+APIkey;
// flotte
try
{
var fleet = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[3].querySelectorAll('span')[0].getAttribute('title');
computed_message_built.fleet = fleet;
}
catch(err)
{
var fleet = undefined;
computed_message_built.fleet = fleet;
}
// recycleurs
if(fleet !== undefined)
{
recycler = computed_message_built.fleet.replace(/\./g , '');
recycler = recycler/20000;
computed_message_built.recycler_30 = Math.round(recycler*0.3);
computed_message_built.recycler_50 = Math.round(recycler*0.5);
computed_message_built.recycler_60 = Math.round(recycler*0.6);
computed_message_built.recycler_70 = Math.round(recycler*0.7);
}
// défense
try
{
var defense = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[3].querySelectorAll('span')[1].getAttribute('title');
computed_message_built.defense = defense;
}
catch(err)
{
var defense = undefined;
computed_message_built.defense = defense;
}
// bouton d'attaque
var attack_button = current_raw_message.querySelectorAll('.msg_actions')[0].querySelectorAll('a')[2].getAttribute('href');
computed_message_built.attack_button = attack_button;
// détails
var more_button = current_raw_message.querySelectorAll('.msg_actions')[0].querySelectorAll('a');
more_button = more_button[more_button.length-1].getAttribute('href');
computed_message_built.more_button = more_button;
if(i%2 == 0)
{
current_raw_message.style.backgroundColor = '#111';
}
current_raw_message.setAttribute('id', 'anchor'+computed_message_built.id);
computed_messages.push(computed_message_built);
}
}
if(computed_messages.length > 0)
{
// re-ordonnement
computed_messages.sort(function(a, b) {
if(a.raw_resources > b.raw_resources)
{
return -1;
}
else
{
return 1;
}
return 0;
});
// construction du tableau
var table = '
Pillage : '+numberWithCommas(total_resources)+' | PT : '+numberWithCommas(total_pt)+' | GT : '+numberWithCommas(total_gt)+'
';
table += '';
table += '';
table += '# | ';
table += 'Joueur | ';
table += 'Position | ';
table += 'Flotte | ';
table += 'Défense | ';
table += 'Pillage | ';
table += 'GT | ';
table += 'PT | ';
table += ' | ';
table += ' | ';
table += ' | ';
table += '
';
var j;
for(j = 0; j < computed_messages.length; j++)
{
var tr_class = j%2 == 0 ? 'odd' : 'even';
var tr_row = j+1;
var current_computed_message = computed_messages[j];
var attack = '';
attack += '';
attack += '';
var del_button = '';
del_button += ''; //
del_button += '';
del_button += '';
var more_button = ''+more_infos+'';
var recycler_title = "Aucune info.";
var fleet_title = "NaN";
if(current_computed_message.fleet !== undefined)
{
recycler_title = "Recycleurs nécessaires";
recycler_title += "
30% : " + current_computed_message.recycler_30;
recycler_title += "
50% : " + current_computed_message.recycler_50;
recycler_title += "
60% : " + current_computed_message.recycler_60;
recycler_title += "
70% : " + current_computed_message.recycler_70;
fleet_title = current_computed_message.fleet;
}
var defense_title = "NaN";
if(current_computed_message.defense !== undefined)
{
var defense_title = current_computed_message.defense;
}
table += '';
table += '#'+tr_row+' | ';
table += '' + current_computed_message.player + ' | ';
table += '' + current_computed_message.coordinates + ' | ';
table += '' + fleet_title + ' | ';
table += '' + current_computed_message.defense + ' | ';
table += '' + current_computed_message.resources + ' | ';
table += '' + current_computed_message.gt + ' | ';
table += '' + current_computed_message.pt + ' | ';
table += ''+attack+' | ';
table += ''+more_button+' | ';
table += ''+del_button+' | ';
table += '
';
}
table += '
';
var containerElement = document.createElement("div");
containerElement.innerHTML = table;
containerElement.id ='raidsTable_container';
containerElement.style.clear = 'both';
uiid20_ul.insertBefore(containerElement, uiid20_ul.firstChild);
}
}
}
setInterval(raidsTable_init, 50);
})();