Greasy Fork is available in English.

LNK_clanLastActive

время последней активности игроков клана (запрос по каждому персу)

질문, 리뷰하거나, 이 스크립트를 신고하세요.
// ==UserScript==
// @name         LNK_clanLastActive
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  время последней активности игроков клана (запрос по каждому персу)
// @author       Nemo
// @include      http*://*.heroeswm.ru/clan_info.php*
// @grant        none
// ==/UserScript==

(function() {
const charsRows = document.querySelectorAll('table[style="border-top: none;"] tr');

const charsTable = document.querySelector('table[style="border-top: none;"]');
const getInfoButton = document.createElement('button');
let isActivated = false;
getInfoButton.onclick = ()=>{
    if(isActivated){
        return;
    }
    isActivated = true;
    getInfoButton.innerHTML = 'Ждите... Для повторного запроса данных обновить страницу)';
    displayUserActivity();
};
getInfoButton.innerText = 'Когда сокланы были в игре?';
getInfoButton.id = 'getInfoButtonID';
charsTable.before(getInfoButton);

let indexTimeout = 0;

function displayUserActivity(){ var n=0;
    for (const row of charsRows){
        const children = row.children;
        const tdClassName = children[0].className;
        const isOnline = tdClassName == 'wblight';
        //n++; if (n>2) {break;}
        if (!children[2].children[0]) {
            document.querySelector('#getInfoButtonID').innerHTML = 'Туман войны?';
            break;
        }
        if(!isOnline){
           setTimeout(()=>{
            whenOnline(children[2].children[0].href).then(days=>{
                const daysSpan = document.createElement('span');
                if(!days){
                    daysSpan.innerHTML = '';
                    return;
                }
                children[2].innerHTML += days;
                children[2].width = '33%';
            });
           }, indexTimeout*150); 
        }else{
            children[2].innerHTML += ' в игре';
        }
    }
}

async function whenOnline(userInfoUrl){
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', encodeURI(userInfoUrl));
        xhr.onload = function(){
            if (xhr.status === 200)
            {
                var lastTime = '- время не найдено';
                var pers = xhr.responseText;
                var n = pers.indexOf('<i>В последний раз');
                if (n > 0) {
                    lastTime = pers.slice(n+19,pers.indexOf('</i>'));
                    lastTime = '-' + lastTime.replace('была','').replace('был','');
                }
                n = pers.indexOf('<b>(заблокирован)');
                if (n > 0) {
                    lastTime = '<span> заблокирован</span><font color="blue">"Нубекс"</font>';
                    lastTime = '<font color="red"> заблокирован!</font>';
                }
                resolve(lastTime);
            }
            else {
                console.log('запрос провален. ошибка) ' + xhr.status);
                resolve('ошибка запроса');
            }
        };
        xhr.send();
    });
}
})();