Greasy Fork is available in English.

HWM_Rented_Arts

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

// ==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);}