咕咕镇剩余价值收割机

剥削者的小助手

当前为 2020-09-03 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

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

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         咕咕镇剩余价值收割机
// @namespace    https://greasyfork.org/zh-CN/users/453092
// @version      2.06
// @description  剥削者的小助手
// @author       ikarosf
// @match        https://www.guguzhen.com/fyg_pk.php
// @grant        GM_xmlhttpRequest
// @require      https://greasyfork.org/scripts/409864-url-gbk-%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81%E5%BA%93/code/URL%20GBK%20%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81%E5%BA%93.js?version=840815
// ==/UserScript==

(function() {
    'use strict';
    if(localStorage.getItem('dataReward')==null){
        localStorage.setItem('dataReward','{"sumShell":"0","sumExp":"0"}');
    }


    var goxing = false;
    var mainHost = "https://bbs.fygal.com/"
    if(localStorage.getItem('mainHost')!==null){
        mainHost = parseInt(localStorage.getItem('mainHost'));
    }

    var autogox=false;

    var maxap=999;
    var maxrank=999;
    if(localStorage.getItem('maxap')!==null){
        maxap = parseInt(localStorage.getItem('maxap'));
    }
    if(localStorage.getItem('maxrank')!==null){
        maxrank = parseInt(localStorage.getItem('maxrank'));
    }

    var audio = new Audio("https://cdnringhlt.shoujiduoduo.com/ringres/user/a24/564/9246564.aac");
    audio.load();

    var Num = 0;
    var goxNum = 0;
    var beike=0;
    var jingyan=0;
    if(localStorage.getItem('flashtime')===null){
        localStorage.setItem('flashtime',10 );
    }
    var maxtime = 10;

    maxtime = parseInt(localStorage.getItem('flashtime'));
    var time = maxtime;
    var myrank = -100;
    var myap=-100;
    var changeLog = [];
    let autoconfig = document.createElement('div');

    let autoconfigranklabel = document.createElement('i');
    autoconfigranklabel.innerText = "进度不低于:";
    autoconfig.appendChild(autoconfigranklabel);

    let autoconfigrank = document.createElement('input');
    autoconfigrank.setAttribute('type','text');
    autoconfigrank.setAttribute('oninput',"value=value.replace(/[^\\d]/g,'')");
    autoconfigrank.setAttribute('style',"width: 40px;margin-right:15px;");
    autoconfigrank.value = maxrank;
    autoconfigrank.onchange = function(){
        maxrank = autoconfigrank.value;
        autoconfigcheckbox.checked = false;
        localStorage.setItem('maxrank',maxrank );
    };
    autoconfig.appendChild(autoconfigrank);


    let autoconfigaplabel = document.createElement('i');
    autoconfigaplabel.innerText = "体力不低于:";
    autoconfig.appendChild(autoconfigaplabel);

    let autoconfigap = document.createElement('input');
    autoconfigap.setAttribute('type','text');
    autoconfigap.setAttribute('oninput',"value=value.replace(/[^\\d]/g,'')");
    autoconfigap.setAttribute('style',"width: 40px;margin-right:15px;");
    autoconfigap.value=maxap;
    autoconfigap.onchange = function(){
        maxap = autoconfigap.value;
        autoconfigcheckbox.checked = false;
        localStorage.setItem('maxap',maxap );
    };
    autoconfig.appendChild(autoconfigap);

    let autoconfigcheckbox = document.createElement('input');
    autoconfigcheckbox.setAttribute('type','checkbox');
    autoconfig.appendChild(autoconfigcheckbox);

    let autoconfigcheckboxtext = document.createElement('i');
    autoconfigcheckboxtext.innerText = "自动搜刮";
    autoconfigcheckboxtext.setAttribute('style',"margin-right:20px;");
    autoconfig.appendChild(autoconfigcheckboxtext);

    let setflashtime = document.createElement('input');
    setflashtime.type = "button";
    setflashtime.value = "设置刷新间隔";
    setflashtime.setAttribute('style',"margin-right:20px;");
    setflashtime.addEventListener('click',function() {
        var newtime = parseInt(prompt("新的刷新间隔:",maxtime));
        if(!isNaN(newtime)&&newtime>0){
            localStorage.setItem('flashtime',newtime );
            maxtime = newtime;
            time = newtime;
        }
    },false);
    autoconfig.appendChild(setflashtime);

    let setmainHost = document.createElement('input');
    setmainHost.type = "button";
    setmainHost.value = "设置主站域名";
    setmainHost.addEventListener('click',function() {
        var newmainHost = prompt("格式如https://bbs.fygal.com/",mainHost);
        if(!newmainHost&&newmainHost!=""){
            localStorage.setItem('mainHost',newmainHost );
            mainHost = newmainHost;
        }
    },false);
    autoconfig.appendChild(setmainHost);

    document.getElementsByClassName('panel panel-primary')[1].appendChild(autoconfig);

    let progresschange = document.createElement('div');
    progresschange.setAttribute('id','progresschange');
    progresschange.setAttribute('class','panel-body');
    document.getElementsByClassName('panel panel-primary')[1].appendChild(progresschange);


    function getNowtime(){
        var date=new Date();
        var datetext = date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
        return datetext;
    }

    function getPostData(p1,p2){
        let data = -1;
        for(let s of document.getElementsByTagName('script')){
            let func = s.innerText.match(p1)
            if(func!=null){
                data = func[0].match(p2)[0];
                break;
            }
        }
        return data
    }

    function postRequest(){
        GM_xmlhttpRequest({
            method: 'POST',
            url: `https://www.guguzhen.com/fyg_read.php`,
            headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
            data: 'f=12',
            onload: response => {
                Num++;
                let newrank = parseInt(response.responseText.match(/class="fyg_colpz02" style="font-size:32px;font-weight:900;">[0-9]+%</)[0].match(/[0-9]+%/)[0]);
                let newap = parseInt(response.responseText.match(/class="fyg_colpz03" style="font-size:32px;font-weight:900;">[0-9]+</)[0].match(/>[0-9]+</)[0].slice(1,-1));
                if(myrank == -100){
                    myrank = newrank;
                }
                else if(newrank != myrank){
                    document.getElementsByClassName('fyg_colpz02')[0].innerText = newrank + "%";
                    changeLog.push(getNowtime()+"  "+myrank+"%->"+newrank + "%")
                    myrank = newrank;
                    audio.play();
                    /*var my_url = location.href;
                    var newwin = window.open(my_url, '进度变动', 'resizable=no')*/
                }
                if(myap == -100){
                    myap = newap;
                }
                else if(newap != myap){
                    document.getElementsByClassName('fyg_colpz03')[0].innerText = newap;
                    myap = newap;
                }
                if(autoconfigcheckbox.checked&&newap>=10&&newrank>=1&&newap>=maxap&&newrank>=maxrank&&goxing==false){
                    maxtime = 1;
                    time = 1;
                    goxNum++;
                    let gox_data = getPostData(/gox\(\)\{[\s\S]*\}/m,/data: ".*"/).slice(7,-1);
                    goxing = true;
                    GM_xmlhttpRequest({
                        method: 'POST',
                        url: `https://www.guguzhen.com/fyg_click.php`,
                        headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
                        data: gox_data,
                        onload: response => {
                            goxing = false;
                            if(response.status === 200){
                                console.log(response.responseText);
                                if(response.responseText.slice(0,2)=='获得'){
                                    let info = response.responseText.slice(0,response.responseText.indexOf('<'));
                                    let div_info = document.createElement('div');
                                    div_info.innerText = info;
                                    changeLog.push(getNowtime() + " " + info)
                                    let dataReward = JSON.parse(localStorage.getItem('dataReward'));
                                    if(info.indexOf('贝壳')!=-1){
                                        beike++;
                                        dataReward.sumShell++;
                                    }
                                    else if(info.indexOf('经验')!=-1){
                                        jingyan++;
                                        dataReward.sumExp++;
                                    }
                                    localStorage.setItem('dataReward',JSON.stringify(dataReward));
                                    document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info);
                                }
                                else{
                                    let div_info = document.createElement('div');
                                    div_info.innerText = '段位进度不足';
                                    changeLog.push(getNowtime() + " " + '段位进度不足,搜刮失败')
                                    document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info);
                                }
                            }
                            else{
                                console.log('返回状态码非200')
                                changeLog.push(getNowtime() + " " + '返回状态码非200')
                                console.log(response.responseText);
                            }
                        },
                        onerror : function(err){
                            goxing = false;
                            console.log('发送搜刮请求出错')
                            changeLog.push(getNowtime() + " " + '发送搜刮请求出错')
                            console.log(err)
                        },
                        ontimeout : function(){
                            goxing = false;
                        }
                    });
                }else{
                    maxtime = parseInt(localStorage.getItem('flashtime'));
                    time = maxtime;
                    //console.log(123)
                }
                progresschange.innerText = getChangeLogText();
                /* else{
                    document.getElementsByClassName('fyg_colpz02')[0].innerText = newrank;
                }*/
            }
        });
    }
    function read_rank(){
        if(--time!=0){
            document.getElementsByClassName('panel-heading')[0].innerText = "刷新进度倒计时 "+time;
        }else{
            document.getElementsByClassName('panel-heading')[0].innerText = "刷新进度倒计时 "+0;
            time = maxtime;
            postRequest();
        }
    }

    function getChangeLogText(){
        let LogText = "";
        LogText += "刷新次数: " +Num + "\n";
        LogText += "[搜刮次数: " +goxNum +"] [贝壳:"+beike+"] [经验:"+jingyan+ "]\n";
        if(changeLog.length == 0){
            LogText += "未出现进度变动"
        }
        else{
            for(var i = 0;i<changeLog.length;i++){
                LogText += changeLog[i] + "\n"
            }
        }
        return LogText;
    }
    postRequest();
    setInterval(read_rank,"1000");


    var get_user_theard_try_num = 0;
    function show_battle_log(text){
        document.getElementsByClassName('panel-heading')[1].innerText = text;
    }

    function get_user_theard(name,enemydiv){
        var search_name = $URL.encode(name);
        GM_xmlhttpRequest({
            method: "post",
            url: mainHost+'search.php',
            data: 'step=2&method=AND&sch_area=0&s_type=forum&f_fid=all&orderway=lastpost&asc=DESC&keyword=&pwuser='+search_name,
            headers:  {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            },
            onload: function(res){
                if(res.status === 200){
                    let info = res.responseText;
                    let firstindex = info.indexOf("共搜索到");
                    if(firstindex == -1){
                        if( info.indexOf("用户不存在")!=-1){
                            show_battle_log('用户'+name+'不存在');
                            get_user_theard_try_num = 0;
                            return;
                        }
                        if( info.indexOf("你所属的用户组不能使用搜索功能")!=-1){
                            show_battle_log('主站域名错误或无权限');
                            get_user_theard_try_num = 0;
                            return;
                        }
                        console.log('搜索尝试次数:' + get_user_theard_try_num)
                        if(info.indexOf("搜索排队中")!=-1&&get_user_theard_try_num<3){
                            get_user_theard_try_num++;
                            setTimeout(get_user_theard,2000,name,enemydiv)
                        }else{
                            console.log(info)
                            get_user_theard_try_num = 0;
                            show_battle_log('找不到'+name+'的帖子')
                        }
                        return;
                    }
                    let secondindex = info.indexOf("共搜索到",firstindex+1);
                    info = info.substring(firstindex,secondindex)
                    var theards=info.match(/read\.php.+?(?=" )/g)
                    get_user_mainpage(theards,enemydiv);
                }else{
                    show_battle_log('搜索对手帖子失败')
                    console.log(res)
                }
            },
            onerror : function(err){
                show_battle_log('搜索对手帖子错误')
                console.log(err)
            }
        });
    }

    function get_user_mainpage(theards,enemydiv){
        if(theards==null||theards.length<1){
            show_battle_log('找不到对手的帖子')
            return}
        var theard = theards[0];
        GM_xmlhttpRequest({
            method: "get",
            url: mainHost+theard ,
            headers:  {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            },
            onload: function(res){
                if(res.status === 200){
                    let info = res.responseText;

                    let firstindex = info.indexOf("楼主");
                    info = info.substring(0,firstindex)
                    var mainpage=info.match(/profile\.php\?action=show.+?(?=" )/g)
                    get_user_LV(mainpage,enemydiv);
                }else{
                    show_battle_log('获取对手主页失败')
                    console.log(res)
                }
            },
            onerror : function(err){
                show_battle_log('获取对手主页错误')
                console.log(err)
            }
        });
    }


    function get_user_LV(mainpages,enemydiv){
        if(mainpages==null||mainpages.length<1){
            show_battle_log('找不到对手的主页')
            return}
        var mainpage = mainpages[0];
        GM_xmlhttpRequest({
            method: "get",
            url: mainHost+mainpage ,
            headers:  {
                'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
            },
            onload: function(res){
                if(res.status === 200){
                    let info = res.responseText;
                    var level = info.match(/(?<=神秘系数:)\d+/g)[0]
                    enemydiv.innerHTML = enemydiv.innerHTML.replace(enemydiv.innerText, '<a target="_blank" href='+mainHost+mainpage+'>'+enemydiv.innerText + "  Lv:" + level+ '</a>')
                    show_battle_log("获取对手系数成功")
                }else{
                    show_battle_log('进入对手主页失败')
                    console.log(res)
                }
            },
            onerror : function(err){
                show_battle_log('进入对手主页错误')
                console.log(err)
            }
        });
    }





    let observerBody1 = new MutationObserver(()=>{
        var pkTextDiv = document.querySelector("#pk_text");
        var enemydivs = pkTextDiv.querySelectorAll("h3.fyg_mp0");
        if(enemydivs==null||enemydivs.length<2){return;}
        var enemydiv = enemydivs[1];
        var enemyname = enemydiv.innerText;
        if(enemyname.indexOf("等级 -")!=-1){return}
        if(enemyname.indexOf("ikarosf")!=-1){changeLog.push(getNowtime() + " 你挑战了作者,有趣的男人")}
        get_user_theard(enemyname,enemydiv);

    });
    observerBody1.observe(document.querySelector("#pk_text"), {characterData: true,childList: true});
    // Your code here...
})();