sg_farmer

打开http://bbs.sgamer.com/forum-44-2.html 自动回复,可在用户脚本命令里 +/- 伐木速度

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Advertisement:

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

Advertisement:

// ==UserScript==
// @name        sg_farmer
// @namespace   farmer.sgamer
// @description 打开http://bbs.sgamer.com/forum-44-2.html 自动回复,可在用户脚本命令里 +/- 伐木速度
// @include     http://bbs.sgamer.com/forum-44-2.html
// @version     1.0.3
// @grant       GM_addStyle
// @grant       GM_notification
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM_registerMenuCommand
// @license     GNU GPL v3 (http://www.gnu.org/copyleft/gpl.html)
// ==/UserScript==

GM_registerMenuCommand("增加伐木速度", fastSpeed);
GM_registerMenuCommand("减慢伐木速度", lowSpeed);

//var previewThread = unsafeWindow.previewThread;
var $ = (typeof unsafeWindow.$=='function')?unsafeWindow.$ : function (e){document.getElementById(e);};

var reply_duration = (GM_getValue('sg_re_dur')==undefined)? 35 : GM_getValue('sg_re_dur'); // 回复间隔(s)  大于20s 
var emotion = ['{:5_168:}','{:5_183:}','{:5_191:}','{:6_354:}','{:6_357:}'];

function fastSpeed(){
    if(reply_duration > 20){
        reply_duration -= 1;
        GM_setValue('sg_re_dur', reply_duration);
    }
}
function lowSpeed(){
    reply_duration += 1;
    GM_setValue('sg_re_dur', reply_duration);
}

function checkDate(tid){
    var tm;
    var td = $(tid).getElementsByTagName('tr')[0].getElementsByTagName('td');
    var tc = td[td.length -1].getElementsByTagName('span')[0];
    var ts = tc.getAttribute('title');
    var d = new Date();
    var tt = (d.getYear()+1900) +'-'+(d.getMonth()+1);
    console.log('ts='+ts+' tt='+tt+' '+ts.indexOf(tt));
    if(ts.indexOf(tt) == -1) //最后回复不是本月,坟贴
        return 1;
}

var previewTbody = null, previewTid = null, previewDiv = null;
function previewThread(tidd, tbody, mmsg) {
    if(!$('threadPreviewTR_'+tidd)) {
        newTr = document.createElement('tr');
        newTr.id = 'threadPreviewTR_'+tidd;
        //newTr.className = 'threadpre';
        $(tbody).appendChild(newTr);
        newTd = document.createElement('td');
        //newTd.colSpan = 5;
        //newTd.className = 'threadpretd';
        newTr.appendChild(newTd);
        newTr.style.display = 'none';

        previewTbody = tbody;
        previewTid = tidd;

        previewDiv = document.createElement('div');
        previewDiv.id = 'threadPreview_'+tidd;
        previewDiv.style.id = 'none';
        var reg=/<img.+?src=.+?onerror=.+?\/>/gim;
        mmsg = mmsg.replace(reg, '');
        previewDiv.innerHTML = mmsg;
        newTd.appendChild(previewDiv);
        newTr.style.display = 'none';
    }
    else{
        $(tbody).removeChild($('threadPreviewTR_'+tidd));
    }
}
var ii = 0;
function startAutoReply(){
    var tb = document.getElementById('threadlisttableid');
    if(typeof tb != 'object')
        window.location.reload();
    var tbl = tb.getElementsByTagName('tbody');
    var i;
    for(i=ii; i<tbl.length; i++){
        var tid = tbl[i].id;
        
        if( (tid==null) || (tid.indexOf('normalthread_')==-1)){
            continue;   
        }
        else{
            var tidd = tid.split("_")[1];
            console.log('i='+i+'/'+tbl.length+' tidd='+ tidd + " gmValue= "+GM_getValue(tidd));
            if(GM_getValue(tidd) == 1) //是否已经自动回复
                continue;
            if(checkDate(tid) == 1) //检测坟贴
                window.location.reload();
            ii = i + 1;                 
            //previewThread(tidd, tid);
            //unsafeWindow.ajaxget('forum.php?mod=viewthread&tid='+tid+'&from=preview', 'threadPreview_'+tid, null, null, null, function() {newTr.style.display = '';});
            //http://bbs.sgamer.com/forum.php?mod=viewthread&tid=12360286&from=preview&inajax=1&ajaxtarget=threadPreview_12360286
            var xhr =new XMLHttpRequest();
            xhr.open('GET','forum.php?mod=viewthread&tid='+tidd+'&from=preview&inajax=1&ajaxtarget=threadPreview_'+tidd,true);
            xhr.onreadystatechange = function(){
                if(xhr.readyState==4){
                  if(xhr.status==200){
                     var msg = xhr.responseXML;
                        var mmsg = msg.getElementsByTagName('root')[0].textContent;
                        //alert(mmsg);
                        previewThread(tidd, tid, mmsg);
                        var t = unsafeWindow.document.getElementsByClassName('t_f');
                        var r = Math.ceil(Math.random()*t.length);
                        r = (r==t.length) ? r-1 : r;
                        var text = '';
                        if(r>0 && t[r]!=undefined){
                            var bq = t[r].getElementsByTagName('div');
                            if(bq.length>0)
                                t[r].removeChild(bq[0]);
                            var bp = t[r].getElementsByTagName('i');
                            if(bp.length>0)
                                t[r].removeChild(bp[0]);
                            text = t[r].innerText;
                        }
                        else{
                            var bi = t[0].getElementsByTagName('i');
                            if(bi.length>0)
                                t[0].removeChild(bi[0]);
                            text = t[0].innerText;
                        }
                        
                        if((undefined==text) || (text==' '))
                            text += "{:6_357:}{:6_357:}               ";
                        else if((text.length>0) && (text.length<15)){
                            if(Math.random() > 0.7)
                                text += emotion[Math.floor(Math.random()*emotion.length)];
                            text += '                 ';
                        }
                        else if(text.length>50)
                            text = text.substr(0, 20);
                        document.getElementById('vmessage_'+tidd).value = text;
                        document.getElementById('vreplysubmit_'+tidd).click();
                        GM_setValue(tidd, 1);
                        previewThread(tidd, tid, null);
                        ralert(tid, text);
                        setTimeout(startAutoReply, (reply_duration+Math.ceil(Math.random()*15))*1000);
                   }
                }
            }
            xhr.send(null);
            break;
            return;
        }
    }
    if(i >= tbl.length)
        window.location.reload();
}

function ralert(tid, text){
    if(!$('replyalert')){
        var a = document.createElement('div');
        a.id = 'replyalert';
        document.getElementsByTagName('body')[0].appendChild(a);
        GM_addStyle("#replyalert{top:0; right:0;position:fixed;width:180px; height:600px;overflow-y:auto;border:1px solid grey; background:rgba(130,255,0, 0.9);z-index:999;}");
        GM_addStyle(".replylist{width:100%; border-bottom:1px solid black;}");
    }
    var l=document.createElement('div');
    l.setAttribute('class', 'replylist');
    $('replyalert').appendChild(l);
    var t = $(tid);
    var ttt = t.getElementsByTagName('th')[0].getElementsByTagName('a')[3].innerText;
    console.log(ttt + "  "+text);
    l.innerHTML += '<p style="color:grey;">'+new Date().toLocaleTimeString()+'</p>' + ttt + '</br>' + text;
}
(function startReply(){
    var iff = document.getElementsByTagName('iframe')[0];
    if(iff)
        document.getElementById('ct').getElementsByClassName('mn')[0].removeChild(iff);
    // Database error, 502等
    var tb = document.getElementById('threadlisttableid');
    if(typeof tb != 'object')
        window.location.reload();
    
    unsafeWindow.appendscript(unsafeWindow.JSPATH + 'forum_viewthread.js?' + unsafeWindow.VERHASH);
    setTimeout(startAutoReply, reply_duration*1000);
    //var replyInterval = setInterval(startAutoReply, reply_duration*1000 + Math.floor(Math.random()*15));
})()