Advanced Battle [GW]

Расширенный список врагов. Сортировка противников по дальности.

  1. // ==UserScript==
  2. // @name Advanced Battle [GW]
  3. // @namespace http://worm.vline.ru/gw/
  4. // @description Расширенный список врагов. Сортировка противников по дальности.
  5. // @include http://www.ganjawars.ru/b0/b.php*
  6. // @version 1.01
  7. // @author W_or_M
  8. // ==/UserScript==
  9.  
  10. (function() {
  11.  
  12. // настройки. 1 - вкл. 0 - выкл.
  13. var sortEnemys = 1; // сортировка, если ненужна ставьте 0
  14. var showHp = 1; // показ хп
  15. var showVisible = 1; // показ видимости
  16. var showWeapon = 1; // показ оружия
  17. var showPower = 0; // показ мощности
  18.  
  19. // сортировка
  20. function cmp(a, b) {
  21. a = a.dist;
  22. b = b.dist;
  23. if (a < b) return -1;
  24. if (a > b) return 1;
  25. return 0;
  26. }
  27.  
  28. var root = typeof unsafeWindow != 'undefined' ? unsafeWindow : window;
  29.  
  30. if (root.location.href.indexOf('http://www.ganjawars.ru/b0/b.php') >= 0) {
  31. // ищем список врагов
  32. var o = root.document.getElementsByTagName('select');
  33. for (var i = 0, l = o.length; i < l; i++) {
  34. if (o[i].name == 'enemy') {
  35. // список
  36. var select = o[i];
  37. break;
  38. }
  39. }
  40. if (typeof select != 'undefined') {
  41. // тут храним список врагов
  42. var enemys = [];
  43. // пробегаем по списку и составляем массив врагов
  44. for (i = 0; i < select.childNodes.length; i++) {
  45. // ыде персонажа
  46. var pers_id = select.childNodes[i].value;
  47. // перс
  48. var pers = /(\d+)\. (.*)\[(\d+)\] - (\d+)/.exec(select.childNodes[i].innerHTML);
  49. var temp = {};
  50. if (pers != null) {
  51. temp.n = pers[1];
  52. temp.nick = pers[2];
  53. temp.level = parseInt(pers[3]);
  54. temp.dist = parseInt(pers[4]);
  55. // id
  56. temp.id = select.childNodes[i].value;
  57. // цвет
  58. temp.color = select.childNodes[i].style.backgroundColor;
  59. // пробегаем по списку персов
  60. var a = root.document.getElementsByTagName('a');
  61. for (var k = 0; k < a.length; k++ ) {
  62. // нашли перса
  63. if (a[k].id == ('userheader'+ pers_id)) {
  64. var node = a[k].nextSibling.nextSibling;
  65. // колво хп
  66. temp.hp = node.firstChild.nodeValue.replace(/\-\s+/, '; ');
  67. // видимость
  68. temp.visible = node.childNodes[11].nodeValue.replace(/\-\s+/, '; ');
  69. // мощность
  70. temp.power = node.childNodes[5].nodeValue.replace(/\-\s+/, '; ');
  71. // оружие
  72. temp.weapon = '; '+ node.childNodes[13].firstChild.innerHTML;
  73. enemys[i] = temp;
  74. }
  75. }
  76. }
  77. }
  78. // список есть
  79. if (enemys.length) {
  80. // очищаем список
  81. for (i = 0, l = select.childNodes.length; i < l; i++) {
  82. select.removeChild(select.firstChild);
  83. }
  84. // сортируем врагов по дальности
  85. if (sortEnemys != 0) {
  86. enemys.sort(cmp);
  87. }
  88. // составляем новый список
  89. for (i in enemys) {
  90. var option = root.document.createElement('option');
  91. option.value = enemys[i].id;
  92. option.style.backgroundColor = enemys[i].color;
  93. //option.setAttribute('style', 'background-color: '+ enemys[i].color);
  94. option.innerHTML = enemys[i].n +'. '+ enemys[i].nick + ' ['+ enemys[i].level +']; расстояние: '+ enemys[i].dist + (showHp != 0 ? enemys[i].hp : '') + (showPower != 0 ? enemys[i].power : '') + ( showVisible != 0 ? enemys[i].visible : '') + ( showWeapon != 0 ? enemys[i].weapon : '');
  95. select.appendChild(option);
  96. }
  97. }
  98. }
  99. }
  100.  
  101. })();