HWM Mod - Скрипт для перемещения артефактов на клановый склад и обратно пачкой
// ==UserScript== // @name HWM Store Many Arts // @version 1.4 // @description HWM Mod - Скрипт для перемещения артефактов на клановый склад и обратно пачкой // @namespace - SAURON - & mod Mefistophel_Gr // @include http://*.heroeswm.ru/sklad_info.php* // @include http://178.248.235.15/sklad_info.php* // @grant GM_xmlhttpRequest // ==/UserScript== // (c) 2015, - SAURON - (http://www.heroeswm.ru/pl_info.php?id=3658084) // 2015, Mefistophel_Gr (http://www.heroeswm.ru/pl_info.php?id=2287844) (function() { var params = []; var count = 0; var store_id = -1; var store_sign = -1; var isAdd = 0; var headadd = 0; var mytimeout = 1000; // задержка перед помещением/снятием след. арта var access = "\u043D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0441\u043A\u043B\u0430\u0434\u0443"; //if(getURIParam()['cat'] != undefined) { if(document.body.innerHTML.indexOf('sklad_rc_on=0') >-1 && document.body.innerHTML.indexOf(access) == -1) { var inputs = document.body.getElementsByTagName('input'); for(var i = 0; i < inputs.length; i++) { if(inputs[i].name == 'inv_id' && inputs[i].parentNode.name == 'f') { if(!headadd) { var td = document.createElement('td'); td.width = '5'; td.align = 'center'; td.innerHTML = '<input type=checkbox id=macrochecker title="Отметить всё">'; inputs[i++].parentNode.parentNode.parentNode.parentNode.firstChild.insertBefore(td,inputs[i].parentNode.parentNode.parentNode.parentNode.firstChild.firstChild); headadd = 1; } var t = document.createElement('td'); t.style='background: #eeeeee'; t.innerHTML = '<input type=checkbox id="c'+inputs[i].value+'" class="myarts" title="Отметить артефакт для переноса в инвентарь">'; inputs[i++].parentNode.parentNode.parentNode.insertBefore(t, inputs[i].parentNode.parentNode.parentNode.firstChild); } else if(inputs[i].value == 'Поместить') { 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='Поместить на склад'> <input type='button' id='getterArt' title='Забрать отмеченные ниже артефакты со склада' value='Забрать со склада'><div id='statusplace' style='text-color:red;'></div>"; var marts = inputs[i].parentNode.parentNode.parentNode.getElementsByTagName('option'); var div = document.getElementById('artplace'); for(var j = 1; j < marts.length; j++) { div.innerHTML += "<input type='checkbox' class='artsfromset' id='set"+marts[j].value+"'>"+marts[j].innerHTML+"<br>"; } marts[0].parentNode.style = 'display: none;'; inputs[i].style = 'display: none;'; } else if(inputs[i].name == 'id' && inputs[i].value != undefined && store_id == -1) store_id = inputs[i].value; else if(inputs[i].name == 'sign' && inputs[i].value != undefined && store_sign == -1) store_sign = inputs[i].value; } document.getElementById('getterArt').onclick = function(){getCheckedArts();}; document.getElementById('setterArt').onclick = function(){setCheckedArts();}; document.getElementById('macrochecker').onchange = function(){changeCheck();}; } }; //========== Забираем арты ================== function getCheckedArts() { params = []; var c = document.getElementsByClassName('myarts'); for(var i = 0; i < c.length; i++) { if(c[i].checked) { try { var inps = c[i].parentNode.parentNode.getElementsByTagName('form')[1].getElementsByTagName('input'); var str = ''; for(var j = 0; j < inps.length - 1; j++) { if(j != 0) str += '&'; str += inps[j].name + '=' + inps[j].value; } params.push(str); } catch(e){alert(e)} } } count = params.length; isAdd = 0; startGetter(); } //========== Помещаем арты ================== function setCheckedArts() { params = []; var c = document.getElementsByClassName('artsfromset'); for(var i = 0; i < c.length; i++) { if(c[i].checked) { try { var str = 'id=' + store_id + '&sign=' + store_sign + '&p_art_id=' + c[i].id.split('et')[1]; params.push(str); } catch(e){alert(e)} } } count = params.length; isAdd = 1; startGetter(); } //======= Функция перемещения артов =========== function startGetter() { if(params.length > 0) { var txt = ''; if(isAdd == 1) txt = 'Помещено'; else txt = 'Забрано'; var uri = "http://"+location.hostname+"/sklad_info.php?" + params.pop(); GM_xmlhttpRequest({ method: "GET", url: uri, onload: function(response) { if (txt == 'Помещено') { document.getElementById('statusplace').innerHTML = "<center><font style='color:#006400;'><b>"+txt+" артов: </font><font style='color:#0070FF;'>"+(count-params.length)+"/"+count+"</b></font></center>"; } else document.getElementById('statusplace').innerHTML = "<center><font style='color:#FF0000;'><b>"+txt+" артов: </font><font style='color:#0070FF;'>"+(count-params.length)+"/"+count+"</b></font></center>"; if(params.length > 0) { setTimeout(startGetter, mytimeout); } else { if(!isAdd) {location.href = location.href;} else location.href = "http://"+location.hostname+"/sklad_info.php?id=" + getURIParam()['id'] + "&cat=5"; } } }); } } function getURIParam() { var search = window.location.search.substr(1), keys = {}; search.split('&').forEach(function(item) { item = item.split('='); keys[item[0]] = item[1]; }); return keys; } //========== Выбрать все ================== function changeCheck() { var c = document.getElementById('macrochecker'); var myinp = document.getElementsByClassName('myarts'); for(var i = 0; i < myinp.length; i++) { myinp[i].checked = c.checked; } } })();