OGame RaidsTable

Tableau de raids

目前为 2015-10-16 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name OGame RaidsTable
  3. // @description Tableau de raids
  4. // @description:en Raids table
  5. // @namespace Xanatos
  6. // @include http://*.ogame.gameforge.com/game/index.php?page=messages
  7. // @version 1.4.0
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. // Compatibility OGame 6.0.6
  12.  
  13. (function()
  14. {
  15. function numberWithCommas(x)
  16. {
  17. return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
  18. }
  19.  
  20. function removeElement(node)
  21. {
  22. node.parentNode.removeChild(node);
  23. }
  24. function convertOgameFormatToDigits(x)
  25. {
  26. var splitX = x.split('M');
  27. var resources = splitX[0].replace(/\,/g , '');
  28. resources = parseInt(resources);
  29. resources += 1;
  30. resources *= 1000;
  31. return resources;
  32. }
  33. function raidsTable_init()
  34. {
  35. if(document.querySelector('#chatBar'))
  36. {
  37. var uiid20_ul = document.querySelector("#ui-id-20 .tab_inner:first-child");
  38. }
  39. else
  40. {
  41. var uiid20_ul = document.querySelector("#ui-id-14 .tab_inner:first-child");
  42. }
  43. var raidsTable = document.querySelector("#raidsTable_container");
  44. // display table if not exist
  45. if (uiid20_ul && !raidsTable)
  46. {
  47. // get all messages
  48. var computed_messages = [];
  49. var raw_messages = uiid20_ul.querySelectorAll('li.msg'), i;
  50. for(i = 0; i < raw_messages.length; i++)
  51. {
  52. var current_raw_message = raw_messages[i];
  53. var computed_message_built = {};
  54. if(current_raw_message.querySelectorAll('.espionageDefText').length == 0)
  55. {
  56. // message id
  57. computed_message_built.id = current_raw_message.getAttribute('data-msg-id');
  58. // player and coordinates
  59. var player = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[0];
  60. var player_html = player.querySelectorAll('span')[1].innerHTML;
  61. player_html += player.querySelectorAll('span')[2].innerHTML;
  62. computed_message_built.player = player_html;
  63. // booty percent
  64. var booty = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[2].querySelectorAll('span')[0];
  65. booty = booty.innerHTML;
  66. var regex = /[\d\.]+/g;
  67. booty = booty.match(regex)[0];
  68. booty = parseInt(booty);
  69. computed_message_built.booty = booty;
  70. // resources booty
  71. var resources = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[1].querySelectorAll('.fright')[0];
  72. resources = resources.innerHTML;
  73. console.log(resources);
  74. var regex = /[\d\.,M]+/g;
  75. resources = resources.match(regex)[0];
  76. if(resources.slice(-1) == 'M')
  77. {
  78. resources = convertOgameFormatToDigits(resources);
  79. }
  80. else
  81. {
  82. resources = resources.replace(/\./g , '');
  83. }
  84. resources = Math.round(resources * (computed_message_built.booty / 100));
  85. computed_message_built.raw_resources = resources;
  86. computed_message_built.resources = numberWithCommas(resources);
  87. // gt
  88. computed_message_built.gt = Math.round(computed_message_built.raw_resources/25000*1.1);
  89. // pt
  90. computed_message_built.pt = Math.round(computed_message_built.raw_resources/5000*1.1);
  91. // fleet
  92. var fleet = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[3].querySelectorAll('span')[0].getAttribute('title');
  93. computed_message_built.fleet = fleet;
  94.  
  95. // recycler
  96. recycler = computed_message_built.fleet.replace(/\./g , '');
  97. computed_message_built.recycler = Math.round(recycler/20000);
  98. // defense
  99. var defense = current_raw_message.querySelectorAll('.msg_content')[0].querySelectorAll('div')[3].querySelectorAll('span')[1].getAttribute('title');
  100. computed_message_built.defense = defense;
  101. // attack button
  102. var attack_button = current_raw_message.querySelectorAll('.msg_actions')[0].querySelectorAll('a')[2].getAttribute('href');
  103. computed_message_built.attack_button = attack_button;
  104. current_raw_message.style.border = '1px solid yellow';
  105. current_raw_message.setAttribute('id', 'anchor'+computed_message_built.id);
  106. computed_messages.push(computed_message_built);
  107. }
  108. }
  109. // construct table
  110. var table = '<table id="raidsTable" class="content_table">';
  111. table += '<tr class="ct_head_row">';
  112. table += '<th class="ct_th">#</th>';
  113. table += '<th class="ct_th">Joueur</th>';
  114. table += '<th class="ct_th">Flotte</th>';
  115. table += '<th class="ct_th">Défense</th>';
  116. table += '<th class="ct_th">Pillage</th>';
  117. table += '<th class="ct_th">GT</th>';
  118. table += '<th class="ct_th">PT</th>';
  119. table += '<th class="ct_th">R</th>';
  120. table += '<th class="ct_th"></th>';
  121. table += '<th class="ct_th"></th>';
  122. table += '</tr>';
  123. var j;
  124. for(j = 0; j < computed_messages.length; j++)
  125. {
  126. var tr_class = j%2 == 0 ? 'odd' : 'even';
  127. var tr_row = j+1;
  128. var current_computed_message = computed_messages[j];
  129. var attack = '<a href="'+current_computed_message.attack_button+'">';
  130. attack += '<span class="icon_nf icon_attack"></span>';
  131. attack += '</a>';
  132. var del_button = '<li class="msg" data-msg-id="' + current_computed_message.id + '">';
  133. del_button += '<a class="fright" onclick="this.parentNode.parentNode.parentNode.style.display=\'none\';document.querySelector(\'#anchor' + current_computed_message.id + '\').style.display=\'none\'" href="javascript:void(0);">'; //
  134. del_button += '<span title="" class="icon_nf icon_refuse js_actionKill tooltip js_hideTipOnMobile"></span>';
  135. del_button += '</a></li>';
  136. table += '<tr class="' + tr_class + '" id="msg_'+current_computed_message.id+'" data-id="'+current_computed_message.id+'">';
  137. table += '<td class="ct_td"><a href="#anchor'+current_computed_message.id+'">#'+tr_row+'</a></td>';
  138. table += '<td class="ct_td">' + current_computed_message.player + '</td>';
  139. table += '<td class="ct_td">' + current_computed_message.fleet + '</td>';
  140. table += '<td class="ct_td">' + current_computed_message.defense + '</td>';
  141. table += '<td class="ct_td">' + current_computed_message.resources + ' <span style="font-size:9px">('+current_computed_message.booty+'%)</span></td>';
  142. table += '<td class="ct_td">' + current_computed_message.gt + '</td>';
  143. table += '<td class="ct_td">' + current_computed_message.pt + '</td>';
  144. table += '<td class="ct_td">' + current_computed_message.recycler + '</td>';
  145. table += '<td class="ct_td">'+attack+'</td>';
  146. table += '<td class="ct_td">'+del_button+'</td>';
  147. table += '</tr>';
  148. }
  149. table += '</table>';
  150. var containerElement = document.createElement("div"); // On crée un nouvelle élément div
  151. containerElement.innerHTML = table;
  152. containerElement.id ='raidsTable_container';
  153. //containerElement.style.border = '1px solid red';
  154. containerElement.style.clear = 'both';
  155. uiid20_ul.insertBefore(containerElement, uiid20_ul.firstChild);
  156. }
  157. }
  158. setInterval(raidsTable_init, 500);
  159. })();