咕咕镇剩余价值收割机

剥削者的小助手

目前为 2020-08-24 提交的版本,查看 最新版本

// ==UserScript==
// @name         咕咕镇剩余价值收割机
// @namespace    https://greasyfork.org/zh-CN/users/453092
// @version      1.83
// @description  剥削者的小助手
// @author       ikarosf
// @match        https://www.guguzhen.com/fyg_pk.php
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';
    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 sum0=0;
    var sum1=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.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);

    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){
                    maxtime = 1;
                    time = 1;
                    goxNum++;
                    let gox_data = getPostData(/gox\(\)\{[\s\S]*\}/m,/data: ".*"/).slice(7,-1);
                    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 => {
                            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)
                                    document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info);
                                    if(info.indexOf('贝壳')!=-1){
                                        sum0++;
                                    }
                                    else if(info.indexOf('经验')!=-1){
                                        sum1++;
                                    }
                                }
                                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){
                            console.log('发送搜刮请求出错')
                            changeLog.push(getNowtime() + " " + '发送搜刮请求出错')
                            console.log(err)
                        }
                    });
                }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 +"] [贝壳:"+sum0+"] [经验:"+sum1+ "]\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");
    // Your code here...
})();