HWM Store Many Arts

HWM Mod - Скрипт для перемещения артефактов на клановый склад и обратно пачкой

  1. // ==UserScript==
  2. // @name HWM Store Many Arts
  3. // @version 1.4
  4. // @description HWM Mod - Скрипт для перемещения артефактов на клановый склад и обратно пачкой
  5. // @namespace - SAURON - & mod Mefistophel_Gr
  6. // @include http://*.heroeswm.ru/sklad_info.php*
  7. // @include http://178.248.235.15/sklad_info.php*
  8. // @grant GM_xmlhttpRequest
  9. // ==/UserScript==
  10.  
  11. // (c) 2015, - SAURON - (http://www.heroeswm.ru/pl_info.php?id=3658084)
  12. // 2015, Mefistophel_Gr (http://www.heroeswm.ru/pl_info.php?id=2287844)
  13.  
  14. (function() {
  15.  
  16. var params = [];
  17. var count = 0;
  18. var store_id = -1;
  19. var store_sign = -1;
  20. var isAdd = 0;
  21. var headadd = 0;
  22. var mytimeout = 1000; // задержка перед помещением/снятием след. арта
  23. var access = "\u043D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0441\u043A\u043B\u0430\u0434\u0443";
  24.  
  25. //if(getURIParam()['cat'] != undefined)
  26. {
  27. if(document.body.innerHTML.indexOf('sklad_rc_on=0') >-1 && document.body.innerHTML.indexOf(access) == -1) {
  28. var inputs = document.body.getElementsByTagName('input');
  29. for(var i = 0; i < inputs.length; i++) {
  30. if(inputs[i].name == 'inv_id' && inputs[i].parentNode.name == 'f') {
  31. if(!headadd) {
  32. var td = document.createElement('td');
  33. td.width = '5';
  34. td.align = 'center';
  35. td.innerHTML = '<input type=checkbox id=macrochecker title="Отметить всё">';
  36. inputs[i++].parentNode.parentNode.parentNode.parentNode.firstChild.insertBefore(td,inputs[i].parentNode.parentNode.parentNode.parentNode.firstChild.firstChild);
  37. headadd = 1;
  38. }
  39. var t = document.createElement('td');
  40. t.style='background: #eeeeee';
  41. t.innerHTML = '<input type=checkbox id="c'+inputs[i].value+'" class="myarts" title="Отметить артефакт для переноса в инвентарь">';
  42. inputs[i++].parentNode.parentNode.parentNode.insertBefore(t, inputs[i].parentNode.parentNode.parentNode.firstChild);
  43. } else if(inputs[i].value == 'Поместить') {
  44. inputs[i].parentNode.innerHTML += "<div style='text-align: left;height: 130px;width: 430px;border: 1px solid #C1C1C1;overflow-y: scroll;' id='artplace'></div><br><input type='button' id='setterArt' title='Поместить отмеченные в списке выше артефакты на склад' value='Поместить на склад'> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type='button' id='getterArt' title='Забрать отмеченные ниже артефакты со склада' value='Забрать со склада'><div id='statusplace' style='text-color:red;'></div>";
  45. var marts = inputs[i].parentNode.parentNode.parentNode.getElementsByTagName('option');
  46. var div = document.getElementById('artplace');
  47. for(var j = 1; j < marts.length; j++) {
  48. div.innerHTML += "<input type='checkbox' class='artsfromset' id='set"+marts[j].value+"'>"+marts[j].innerHTML+"<br>";
  49. }
  50. marts[0].parentNode.style = 'display: none;';
  51. inputs[i].style = 'display: none;';
  52. }
  53. else if(inputs[i].name == 'id' && inputs[i].value != undefined && store_id == -1) store_id = inputs[i].value;
  54. else if(inputs[i].name == 'sign' && inputs[i].value != undefined && store_sign == -1) store_sign = inputs[i].value;
  55. }
  56. document.getElementById('getterArt').onclick = function(){getCheckedArts();};
  57. document.getElementById('setterArt').onclick = function(){setCheckedArts();};
  58. document.getElementById('macrochecker').onchange = function(){changeCheck();};
  59. }
  60. };
  61.  
  62. //========== Забираем арты ==================
  63. function getCheckedArts() {
  64. params = [];
  65. var c = document.getElementsByClassName('myarts');
  66. for(var i = 0; i < c.length; i++) {
  67. if(c[i].checked) {
  68. try {
  69. var inps = c[i].parentNode.parentNode.getElementsByTagName('form')[1].getElementsByTagName('input');
  70. var str = '';
  71. for(var j = 0; j < inps.length - 1; j++) {
  72. if(j != 0) str += '&';
  73. str += inps[j].name + '=' + inps[j].value;
  74. }
  75. params.push(str);
  76. }
  77. catch(e){alert(e)}
  78. }
  79. }
  80. count = params.length;
  81. isAdd = 0;
  82. startGetter();
  83. }
  84.  
  85. //========== Помещаем арты ==================
  86. function setCheckedArts() {
  87. params = [];
  88. var c = document.getElementsByClassName('artsfromset');
  89. for(var i = 0; i < c.length; i++) {
  90. if(c[i].checked) {
  91. try {
  92. var str = 'id=' + store_id + '&sign=' + store_sign + '&p_art_id=' + c[i].id.split('et')[1];
  93. params.push(str);
  94. }
  95. catch(e){alert(e)}
  96. }
  97. }
  98. count = params.length;
  99. isAdd = 1;
  100. startGetter();
  101. }
  102.  
  103. //======= Функция перемещения артов ===========
  104. function startGetter() {
  105. if(params.length > 0) {
  106. var txt = '';
  107. if(isAdd == 1) txt = 'Помещено'; else txt = 'Забрано';
  108. var uri = "http://"+location.hostname+"/sklad_info.php?" + params.pop();
  109. GM_xmlhttpRequest({
  110. method: "GET",
  111. url: uri,
  112. onload: function(response) {
  113. if (txt == 'Помещено') {
  114. document.getElementById('statusplace').innerHTML = "<center><font style='color:#006400;'><b>"+txt+" артов: </font><font style='color:#0070FF;'>"+(count-params.length)+"/"+count+"</b></font></center>";
  115. } else
  116. document.getElementById('statusplace').innerHTML = "<center><font style='color:#FF0000;'><b>"+txt+" артов: </font><font style='color:#0070FF;'>"+(count-params.length)+"/"+count+"</b></font></center>";
  117. if(params.length > 0) {
  118. setTimeout(startGetter, mytimeout);
  119. } else {
  120. if(!isAdd) {location.href = location.href;}
  121. else location.href = "http://"+location.hostname+"/sklad_info.php?id=" + getURIParam()['id'] + "&cat=5";
  122. }
  123. }
  124. });
  125. }
  126. }
  127.  
  128. function getURIParam() {
  129. var search = window.location.search.substr(1),
  130. keys = {};
  131. search.split('&').forEach(function(item) {
  132. item = item.split('=');
  133. keys[item[0]] = item[1];
  134. });
  135. return keys;
  136. }
  137.  
  138. //========== Выбрать все ==================
  139. function changeCheck() {
  140. var c = document.getElementById('macrochecker');
  141. var myinp = document.getElementsByClassName('myarts');
  142. for(var i = 0; i < myinp.length; i++) {
  143. myinp[i].checked = c.checked;
  144. }
  145. }
  146.  
  147. })();