HWM_Rented_Arts

Скрывает артефакты находящиеся на хранении и позволяет в один клик забрать нескрытые артефакты, доступные для возврата

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        HWM_Rented_Arts
// ==UserScript==
// @name        HWM_Rented_Arts
// @namespace   Zeleax
// @description Скрывает артефакты находящиеся на хранении и позволяет в один клик забрать нескрытые артефакты, доступные для возврата
// @include /https:\/\/(www.heroeswm.ru|qrator.heroeswm.ru|178.248.235.15|www.lordswm.com|my.lordswm.com)\/(arts_arenda.php|inventory.php)/
// @version     1.8
// @license MIT
// @grant       none
// ==/UserScript==
// скрывать всех указанных ниже игроков на странице артов сданных в аренду
var HidePlayers = ['Mr_SkauT','Сержант530','Alexis19923','Samohin017','Cle99','Лесные ягоды','Sekir'];

// GM functions
if (typeof GM_getValue != 'function') {this.GM_getValue=function (key,def) {return localStorage[key] || def;};this.GM_setValue=function (key,value) {return localStorage[key]=value;};	this.GM_deleteValue=function (key) {return delete localStorage[key];};}

if(/arts_arenda/.test(window.location.href))
{
    var urlArr=[];
    var cntVisible=0;
    var returnCnt=0, hiddenCnt=0;
    var el, _row;

    var list = getL( "//a[contains(@href, 'pl_info.php')]");
    for (var i=list.snapshotLength-1 ; i >=0; i-- )
    {
        _row=list.snapshotItem(i).parentNode.parentNode.parentNode;

        if(HidePlayers.indexOf(list.snapshotItem(i).textContent) > -1)
        {
            _row.style.display = 'none';
            hiddenCnt++;
        }
        else
        {
            cntVisible++;

            el=getE(".//a[contains(@href, 'arts_arenda.php?art_return')]", _row);
            if (el)
            {
                returnCnt++;
                urlArr.push(el.href);
            }
        }
    }
    if(GM_getValue('HWM_Rented_Arts.hiddenCnt')!=hiddenCnt)
    {
        GM_setValue('HWM_Rented_Arts.hiddenCnt', hiddenCnt);
        console.log('Сохранили HWM_Rented_Arts.hiddenCnt='+hiddenCnt);
    }

    document.body.innerHTML = document.body.innerHTML.replace('Артефакты в аренде:', 'Артефакты в аренде: '+cntVisible+' (+'+hiddenCnt+' на хранении) <button type="button" name="getBackMyArts" style="display:none">Test</button> ');

    if(returnCnt>0)
    {
        el=document.getElementsByName('getBackMyArts')[0];
        el.textContent ='Забрать арты: '+returnCnt;
        el.onclick =function() {doAction();}
        el.style.display="initial";
    }
}
else if(/inventory/.test(window.location.href))
{
    var hiddenArtsCnt= GM_getValue('HWM_Rented_Arts.hiddenCnt');
    if(!hiddenArtsCnt) hiddenArtsCnt=0;

    el=getE("//div[@class='inv_scroll_content_inside' and contains(text(),'Предметы в аренде')]");
    if(el)
    {
        var res=/\((\d+)\)/.exec(el.innerText);
        el.innerText=el.innerText.replace(/\((\d+)\)/,'('+(parseInt(res[1],10)-hiddenArtsCnt)+')');
        el.title='На хранении: '+hiddenArtsCnt+' шт.'
    }
}

function doAction() // Возврат артов
{
   for (var i=0 ; el=urlArr[i]; i++ )
      func_getDocumentFromUrl(el); // забираем арты !!!

   location.reload();
}

// получает документ по заданному URL
function func_getDocumentFromUrl(urlToLoad){console.log('Load data from url: '+urlToLoad); var req=new XMLHttpRequest(); req.open("GET", urlToLoad, false); req.overrideMimeType('text/xml; charset=windows-1251'); req.send(null); var parser = new DOMParser(); return parser.parseFromString(req.responseText, "text/html"); }

// доступ по xpath
function getE(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}
function getL(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);}
// @namespace   Zeleax
// @description Скрывает артефакты находящиеся на хранении и позволяет в один клик забрать нескрытые артефакты, доступные для возврата
// @include /https:\/\/(www.heroeswm.ru|qrator.heroeswm.ru|178.248.235.15|www.lordswm.com)\/(arts_arenda.php|inventory.php)/
// @version     1.7
// @grant       none
// ==/UserScript==
// скрывать всех указанных ниже игроков на странице артов сданных в аренду
var HidePlayers = ['Mr_SkauT','Сержант530'];

// GM functions
if (typeof GM_getValue != 'function') {this.GM_getValue=function (key,def) {return localStorage[key] || def;};this.GM_setValue=function (key,value) {return localStorage[key]=value;};	this.GM_deleteValue=function (key) {return delete localStorage[key];};}

if(/arts_arenda/.test(window.location.href))
{
    var urlArr=[];
    var cntVisible=0;
    var returnCnt=0, hiddenCnt=0;
    var el, _row;

    var list = getL( "//a[contains(@href, 'pl_info.php')]");
    for (var i=list.snapshotLength-1 ; i >=0; i-- )
    {
        _row=list.snapshotItem(i).parentNode.parentNode.parentNode;

        if(HidePlayers.indexOf(list.snapshotItem(i).textContent) > -1)
        {
            _row.style.display = 'none';
            hiddenCnt++;
        }
        else
        {
            cntVisible++;

            el=getE(".//a[contains(@href, 'arts_arenda.php?art_return')]", _row);
            if (el)
            {
                returnCnt++;
                urlArr.push(el.href);
            }
        }
    }
    if(GM_getValue('HWM_Rented_Arts.hiddenCnt')!=hiddenCnt)
    {
        GM_setValue('HWM_Rented_Arts.hiddenCnt', hiddenCnt);
        console.log('Сохранили HWM_Rented_Arts.hiddenCnt='+hiddenCnt);
    }

    document.body.innerHTML = document.body.innerHTML.replace('Артефакты в аренде:', 'Артефакты в аренде: '+cntVisible+' (+'+hiddenCnt+' на хранении) <button type="button" name="getBackMyArts" style="display:none">Test</button> ');

    if(returnCnt>0)
    {
        el=document.getElementsByName('getBackMyArts')[0];
        el.textContent ='Забрать арты: '+returnCnt;
        el.onclick =function() {doAction();}
        el.style.display="initial";
    }
}
else if(/inventory/.test(window.location.href))
{
    var hiddenArtsCnt= GM_getValue('HWM_Rented_Arts.hiddenCnt');
    if(!hiddenArtsCnt) hiddenArtsCnt=0;

    el=getE("//div[@class='inv_scroll_content_inside' and contains(text(),'Предметы в аренде')]");
    if(el)
    {
        var res=/\((\d+)\)/.exec(el.innerText);
        el.innerText=el.innerText.replace(/\((\d+)\)/,'('+(parseInt(res[1],10)-hiddenArtsCnt)+')');
        el.title='На хранении: '+hiddenArtsCnt+' шт.'
    }
}

function doAction() // Возврат артов
{
   for (var i=0 ; el=urlArr[i]; i++ )
      func_getDocumentFromUrl(el); // забираем арты !!!

   location.reload();
}

// получает документ по заданному URL
function func_getDocumentFromUrl(urlToLoad){console.log('Load data from url: '+urlToLoad); var req=new XMLHttpRequest(); req.open("GET", urlToLoad, false); req.overrideMimeType('text/xml; charset=windows-1251'); req.send(null); var parser = new DOMParser(); return parser.parseFromString(req.responseText, "text/html"); }

// доступ по xpath
function getE(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}
function getL(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);}