RaidsTable (V6)

Tableau de raids

当前为 2015-10-16 提交的版本,查看 最新版本

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