咕咕镇数据采集

咕咕镇数据采集,目前采集已关闭,兼作助手

目前为 2020-12-15 提交的版本。查看 最新版本

// ==UserScript==
// @name         咕咕镇数据采集
// @namespace    https://gf.qytechs.cn/users/448113
// @version      1.1.25
// @description  咕咕镇数据采集,目前采集已关闭,兼作助手
// @author       paraii
// @include      https://www.guguzhen.com/*
// @grant        GM_xmlhttpRequest
// @connect      notes.orga.cat
// @connect      www.guguzhen.com
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/js/tooltip.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/js/popover.js
// @run-at       document-body
// @license      MIT License
// ==/UserScript==

(function() {
    'use strict'
    var headersPOST = {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8','Cookie':document.cookie};
    function submitData(){
        if(localStorage.length>4&&localStorage.getItem('over')=='1'){
            var meURL = `https://notes.orga.cat/${encodeURI(localStorage.getItem('title')).replace(/%/g, '').replace(/~/g,'7E')}`;
            console.log(meURL);
            GM_xmlhttpRequest({
                method: 'GET',
                url: meURL,
                timeout: 30000,
                headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'},
                onload: response => {
                    let text = response.responseText.match(/content">([\s\S]*)<\/text/)[1];
                    if(text.length==0){
                        text='{"1-50":{"MU":[0],"ZHU":[0],"DENG":[0],"SHOU":[0]},"51-100":{"MU":[0],"ZHU":[0],"DENG":[0],"SHOU":[0]},"101-":{"MU":[0],"ZHU":[0],"DENG":[0],"SHOU":[0]}}'
                    }else{
                        text=text.replace(/&quot;/g,'"');
                    }

                    let json = JSON.parse(text);
                    let pk_i = 0;
                    while(localStorage.getItem(`pk${pk_i}`)!=null){
                        let a = localStorage.getItem(`pk${pk_i}`).split(',');
                        let n = a.shift();
                        for(let j = 1; j<a.length; j++){
                            a[j] = +a[j];
                        }
                        if(a[3]<51){
                            json['1-50'][n].push(a);
                        }
                        else if(a[3]<101&&a[3]>50){
                            json['51-100'][n].push(a);
                        }
                        else{
                            json['101-'][n].push(a);
                        }
                        pk_i++;
                    }

                    text = JSON.stringify(json);
                    GM_xmlhttpRequest({
                        method: 'POST',
                        url: meURL,
                        timeout: 30000,
                        headers: headersPOST,
                        data: `text=${text}`,
                        onload: response => {
                            let atrr = localStorage.getItem('attribute');
                            let na = localStorage.getItem('cardName');
                            let ti = localStorage.getItem('title');
                            localStorage.clear();
                            localStorage.setItem('attribute',atrr);
                            localStorage.setItem('cardName',na);
                            localStorage.setItem('title',ti);
                        }
                    });
                }
            });
            return 1;
        }else{
            return 0;
        }
    }

    function eqToAbbr(name){
        let abbr = 0;
        switch(name[name.length-1]){
            case '杖':
                switch(name[name.length-2]){
                    case '短':abbr='STAFF';break;
                    case '法':abbr='WAND';break;
                }
                break;
            case '剑':abbr='SWORD';break;
            case '刃':abbr='BLADE';break;
            case '首':abbr='DAGGER';break;
            case '盾':abbr='SHIELD';break;
            case '套':
                switch(name[name.length-3]){
                    case '者':abbr='GLOVES';break;
                    case '鹫':abbr='VULTURE';break;
                }
                break;
            case '环':abbr='BRACELET';break;
            case '袍':abbr='CLOAK';break;
            case '巾':abbr='SCARF';break;
            case '饰':abbr='TIARA';break;
            default:
                switch(name[name.length-2]){
                    case '短':abbr='BOW';break;
                    case '杀':abbr='ASSBOW';break;
                    case '布':abbr='CLOTH';break;
                    case '皮':abbr='LEATHER';break;
                    case '铁':abbr='PLATE';break;
                    case '重':abbr='THORN';break;
                }
        }
        return abbr;
    }

    function getEquipmentInfo(nodes){
        let data = new Array();
        if(nodes.length>0){
            for(let i=0;i<nodes.length;i++){
                let atrr = nodes[i].getAttribute('data-content').match(/>[0-9]+%</g);
                let title = 0;
                title = nodes[i].getAttribute('data-original-title');
                if(title==null){
                    title = nodes[i].getAttribute('title');
                }
                let lv = title.match(/>[0-9]+</g)[0];
                let name = title.substr(title.lastIndexOf('>')+1);
                let mys = nodes[i].getAttribute('data-content').match(/神秘/);
                if(mys!=null){
                    mys = 1;
                }
                else{
                    mys = 0;
                }
                let id = nodes[i].getAttribute('onclick');
                if(id!=null){
                    id = id.match(/[0-9]+/)[0];
                }
                name = eqToAbbr(name);
                data.push(new Array(name,lv.replace('<','').replace('>',''),atrr[0].replace('%','').replace('<','').replace('>',''),atrr[1].replace('%','').replace('<','').replace('>',''),atrr[2].replace('%','').replace('<','').replace('>',''),atrr[3].replace('%','').replace('<','').replace('>',''),mys,id));
            }
        }
        return data;
    }
    var equKey = new Array('BLADE','ASSBOW','WAND','STAFF','DAGGER','SHIELD','BOW','SWORD','BOUND_0','GLOVES','BRACELET','VULTURE','BOUND_1','CLOAK','THORN','PLATE','LEATHER','CLOTH','BOUND_2','SCARF','TIARA');
    var sortdict = new Array();
    for(let i = 0;i<equKey.length;i++){
        sortdict[equKey[i]] = i;
    }
    function sortEqByName(e1,e2){
        let title1 = e1.getAttribute('data-original-title');
        if(title1==null){
            title1 = e1.getAttribute('title');
        }
        let name1 = eqToAbbr(title1.substr(title1.lastIndexOf('>')+1));
        e1.setAttribute('data-abbr',sortdict[name1]);

        let title2 = e2.getAttribute('data-original-title');
        if(title2==null){
            title2 = e2.getAttribute('title');
        }
        let name2 = eqToAbbr(title2.substr(title2.lastIndexOf('>')+1));
        e2.setAttribute('data-abbr',sortdict[name2]);

        return sortdict[name1]-sortdict[name2];
    }

    function getPostData(p1,p2){
        let data = -1;
        let sc = document.getElementsByTagName('script');
        console.log(sc);
        for(let i=0;i<sc.length;i++){
            let func = sc[i].innerText.match(p1)
            if(func!=null){
                data = func[0].match(p2)[0];
                break;
            }
        }
        return data
    }

    var user = document.getElementsByClassName('icon-user')[0].parentNode.innerText.split(' ')[1];
    console.log(user)
    if(localStorage.getItem(user)==null){
        localStorage.setItem(user,'{"dataIndex":{"battleInfoNow":"0","battleInfoBefore":"0","battleInfoBack":"0"},"dataBind":{"0":"0"}}');
    }
    function getUserData(){
        return JSON.parse(localStorage.getItem(user));
    }
    function setUserData(json){
        localStorage.setItem(user,JSON.stringify(json));
    }
    //GM_addStyle(GM_getResourceText('bootstrapcss'));
    if(localStorage.getItem('attribute')==null&&localStorage.getItem('cardName')==null){
        localStorage.setItem('attribute',0);
        localStorage.setItem('cardName',0);
    }
    //     if(localStorage.getItem('pk99')!=null&&localStorage.getItem('title')!=null){ //超过100条战斗自动提交
    //         localStorage.setItem('over', 1);
    //         try{
    //             //submitData();
    //         }catch(err){
    //             console.log(err);
    //         }
    //         localStorage.setItem('over', 0);
    //         let nameURL = `https://notes.orga.cat/gugudataname`;
    //         GM_xmlhttpRequest({
    //             method: 'GET',
    //             url: nameURL,
    //             timeout: 30000,
    //             headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
    //             onload: response => {
    //                 let text = response.responseText.match(/content">([\s\S]*)<\/text/)[1];
    //                 let list = text.split(',');
    //                 if(list.indexOf(localStorage.getItem('title'))==-1){
    //                     list.push(localStorage.getItem('title'));
    //                     text = list.join(',');
    //                     GM_xmlhttpRequest({
    //                         method: 'POST',
    //                         url: nameURL,
    //                         timeout: 30000,
    //                         headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
    //                         data: `text=${text}`,
    //                         onload: response => {
    //                             let atrr = localStorage.getItem('attribute');
    //                             let na = localStorage.getItem('cardName');
    //                             let ti = localStorage.getItem('title');
    //                             localStorage.clear();
    //                             localStorage.setItem('attribute',atrr);
    //                             localStorage.setItem('cardName',na);
    //                             localStorage.setItem('title',ti);
    //                         }
    //                     });
    //                 }
    //             }
    //         });
    //     }

    var attribute = new Array();

    if(window.location.pathname=='/fyg_index.php'){
        let userData = getUserData();
        let dataIndex = userData.dataIndex;
        let waitForCol = setInterval(()=>{
            if(document.getElementsByClassName('col-md-4')!=null){
                clearInterval(waitForCol);
                dataIndex.battleInfoNow = document.getElementsByClassName('col-md-4')[0].children[4].children[0].innerText;
                let p0 = document.createElement('p');
                if(dataIndex.battleInfoNow===dataIndex.battleInfoBefore){
                    p0.innerText = `对玩家战斗(上次查看):${dataIndex.battleInfoBack}`;
                }
                else{
                    p0.innerText = `对玩家战斗(上次查看):${dataIndex.battleInfoBefore}`;
                    dataIndex.battleInfoBack = dataIndex.battleInfoBefore;
                    dataIndex.battleInfoBefore = dataIndex.battleInfoNow
                }
                setUserData(userData);
                document.getElementsByClassName('col-md-4')[0].appendChild(p0);
            }
        },1000);
    }
    else if(window.location.pathname=='/fyg_equip.php'){
        let btnc1 = document.createElement('button');
        btnc1.innerText = '导出计算器';
        btnc1.onclick = ()=>{
            $('.pop_main').show()
            $('.pop_con').css({'top':0,'opacity':0})
            $('.pop_con').animate({'top':'50%','opacity':1})
            try{
                let bag = [].slice.call(document.getElementById('backpacks').children);
                let bagdata = new Array();
                let equip = document.getElementsByClassName('fyg_tc')[3];
                let data = new Array();

                if(bag[bag.length-1].className.split(' ')[2]!='fyg_mp3'){
                    bag = bag.slice(0,-1);
                }
                bagdata = getEquipmentInfo(bag);
                data = getEquipmentInfo(equip.children);
                d.innerHTML = `<div class="pop_main">
    <div class="pop_con">
        <div class="pop_text">/</div>
        <div class="pop_text">/</div>
        <div class="pop_text">/</div>
        <div class="pop_text">/</div>
        <div class="pop_text">Bag:</div>
        ${new Array(bagdata.length+1).join('<div class="pop_text">/</div>')}
<a href="#">×</a>
    </div>
</div>`;
                $('.pop_con a').click(()=>{
                    $('.pop_con').animate({'top':0,'opacity':0},()=>{
                        $('.pop_main').hide()
                    })
                })
                $('.pop_main').show()
                $('.pop_con').css({'top':0,'opacity':0})
                $('.pop_con').animate({'top':'50%','opacity':1})
                let text = $('.pop_text');

                text[0].innerText = `${data[0].slice(0,-1).join(' ')}`;
                text[1].innerText = `${data[1].slice(0,-1).join(' ')}`;
                text[2].innerText = `${data[2].slice(0,-1).join(' ')}`;
                text[3].innerText = `${data[3].slice(0,-1).join(' ')}`;

                for(let i =0;i<bagdata.length;i++){
                    text[5+i].innerText =`${bagdata[i].slice(0,-1).join(' ')}`;
                }
            }catch(err){console.log(err);}
        }
        let waitForBackpacks = setInterval(()=>{
            if(document.getElementById('backpacks')!=null&&document.getElementsByClassName('fyg_tc')[3]!=null){
                clearInterval(waitForBackpacks);
                let div00 = document.createElement('div');
                div00.innerHTML = `<p></p><p><button type="button" class="btn btn-block collapsed" data-toggle="collapse" data-target="#eq0"><i class="icon icon-caret-down"></i></button></p>
        <div class="in" id="eq0"></div>
<p><button type="button" class="btn btn-block collapsed" data-toggle="collapse" data-target="#eq1"><i class="icon icon-caret-down"></i></button></p>
        <div class="in" id="eq1"></div>
<p><button type="button" class="btn btn-block collapsed" data-toggle="collapse" data-target="#eq2"><i class="icon icon-caret-down"></i></button></p>
        <div class="in" id="eq2"></div>
<p><button type="button" class="btn btn-block collapsed" data-toggle="collapse" data-target="#eq3"><i class="icon icon-caret-down"></i></button></p>
        <div class="in" id="eq3"></div>`;

                let eqbtns = null;
                function addCollapse(){
                    let waitForBtn = setInterval(()=>{
                        if(document.getElementsByClassName('fyg_tc')[3]!=null){
                            eqbtns = [].slice.call(document.getElementsByClassName('fyg_tc')[3].children).concat([].slice.call(document.getElementById('backpacks').children));
                            if(document.getElementById('backpacks').innerText.indexOf('读取中')==-1
                               &&eqbtns.length>0&&eqbtns[0].className.split(' ')[2]=='fyg_mp3'
                               &&document.getElementById('carding').innerText.indexOf('读取中')==-1){
                                clearInterval(waitForBtn);
                                eqbtns = [].slice.call(document.getElementsByClassName('fyg_tc')[3].children).concat([].slice.call(document.getElementById('backpacks').children));
                                if(eqbtns[eqbtns.length-1].className.split(' ')[2]!='fyg_mp3'){
                                    eqbtns = eqbtns.slice(0,-1);
                                }
                                if(document.getElementsByClassName('collapsed').length==0){
                                    document.getElementById('backpacks').appendChild(div00);
                                }
                                for(let i=0;i<eqbtns.length;i++){
                                    if(eqbtns[i].className.split(' ')[0]=='popover'){
                                        eqbtns.splice(i,1);
                                        break;
                                    }
                                }
                                eqbtns.sort(sortEqByName);
                                document.getElementById('eq0').innerHTML = '';
                                document.getElementById('eq1').innerHTML = '';
                                document.getElementById('eq2').innerHTML = '';
                                document.getElementById('eq3').innerHTML = '';
                                let ineq = document.getElementById('eq0');
                                for(let i=0;i<eqbtns.length;i++){
                                    let btn0 = document.createElement('button');
                                    btn0.setAttribute('class','btn btn-light');
                                    btn0.setAttribute('onclick',eqbtns[i].getAttribute('onclick'));
                                    btn0.innerHTML = `<h3 class="popover-title" style="background-color: ${getComputedStyle(eqbtns[i]).getPropertyValue("background-color")}">${eqbtns[i].dataset.originalTitle}</h3><div class="popover-content">${eqbtns[i].dataset.content}</div>`;
                                    if(btn0.children[1].lastChild.nodeType==3){ //清除背景介绍文本
                                        btn0.children[1].lastChild.remove();
                                    }
                                    let a = parseInt(eqbtns[i].getAttribute('data-abbr'));
                                    if(a>=sortdict.BOUND_0&&a<sortdict.BOUND_1){
                                        ineq = document.getElementById('eq1');
                                    }
                                    else if(a>=sortdict.BOUND_1&&a<sortdict.BOUND_2){
                                        ineq = document.getElementById('eq2');
                                    }
                                    else if(a>=sortdict.BOUND_2){
                                        ineq = document.getElementById('eq3');
                                    }
                                    ineq.appendChild(btn0);
                                }
                                $('.btn-light').css({'padding':0,
                                                     'text-align':'left'});
                                $('.bg-danger').css({'max-width':'250px',
                                                     'white-space': 'pre-line',
                                                     'word-break': 'break-all'});
                            }
                        }
                    },500);
                }
                addCollapse();

                let observer = new MutationObserver((mutationsList, observer)=>{
                    let page = document.getElementsByClassName('nav nav-secondary nav-justified')[0].children;
                    let index = 0;
                    for(let i=0;i<4;i++){
                        if(page[i].className=='active'){
                            index = i;
                        }
                    }
                    switch(index){
                        case 0:
                            $('.pop_main').hide();
                            btnc1.onclick = ()=>{
                                $('.pop_main').show()
                                $('.pop_con').css({'top':0,'opacity':0})
                                $('.pop_con').animate({'top':'50%','opacity':1})
                                try{
                                    let bag = [].slice.call(document.getElementById('backpacks').children);
                                    let bagdata = new Array();
                                    let equip = document.getElementsByClassName('fyg_tc')[3];
                                    let data = new Array();

                                    if(bag[bag.length-1].className.split(' ')[2]!='fyg_mp3'){
                                        bag = bag.slice(0,-1);
                                    }
                                    bagdata = getEquipmentInfo(bag);
                                    data = getEquipmentInfo(equip.children);
                                    console.log(bagdata);
                                    d.innerHTML = `<div class="pop_main">
    <div class="pop_con">
        <div class="pop_text">/</div>
        <div class="pop_text">/</div>
        <div class="pop_text">/</div>
        <div class="pop_text">/</div>
        <div class="pop_text">Bag:</div>
        ${new Array(bagdata.length+1).join('<div class="pop_text">/</div>')}
<a href="#">×</a>
    </div>
</div>`;
                                    $('.pop_con a').click(()=>{
                                        $('.pop_con').animate({'top':0,'opacity':0},()=>{
                                            $('.pop_main').hide()
                                        })
                                    })
                                    $('.pop_main').show()
                                    $('.pop_con').css({'top':0,'opacity':0})
                                    $('.pop_con').animate({'top':'50%','opacity':1})
                                    let text = $('.pop_text');

                                    text[0].innerText = `${data[0].slice(0,-1).join(' ')}`;
                                    text[1].innerText = `${data[1].slice(0,-1).join(' ')}`;
                                    text[2].innerText = `${data[2].slice(0,-1).join(' ')}`;
                                    text[3].innerText = `${data[3].slice(0,-1).join(' ')}`;

                                    for(let i =0;i<bagdata.length;i++){
                                        text[5+i].innerText =`${bagdata[i].slice(0,-1).join(' ')}`;
                                    }
                                }catch(err){console.log(err);}
                            }
                            try{
                                if(!((mutationsList[0].addedNodes[0].className!=null&&mutationsList[0].addedNodes[0].className.split(' ')[0]==='popover')||
                                     (mutationsList[0].removedNodes[0].className!=null&&mutationsList[0].removedNodes[0].className.split(' ')[0]==='popover'))){
                                    addCollapse();
                                }
                            }catch(err){}
                            break;
                        case 1:
                            $('.pop_main').hide();
                            btnc1.onclick = ()=>{};
                            var waitForCard = setInterval(()=>{
                                if(document.getElementsByClassName('dropdown-menu')!=null){
                                    clearInterval(waitForCard);
                                    try{
                                        let cards = document.getElementsByClassName('dropdown-menu');
                                        for(let i=0;i<cards.length;i++) {
                                            if(cards[i].children.length>2) return;
                                            let li0 = document.createElement('li');
                                            li0.setAttribute('class','fyg_lh30');
                                            li0.innerHTML = '<a href="###" style="color:#F00" onclick="showPopup(this)"> 绑定装备&光环 </a>'
                                            let li1 = document.createElement('li');
                                            li1.setAttribute('class','fyg_lh30');
                                            li1.innerHTML = '<a href="###" style="color:#00FF" onclick="equipOnekey(this)"> 一键装备 </a>'
                                            cards[i].appendChild(li0);cards[i].appendChild(li1);
                                        }
                                        let div0 = document.createElement('div');
                                        div0.setAttribute('id','cardpage_pop');
                                        let initHTML = `    <div class="popup-content">
        <div class="topline">
            <p></p>
            <div class="equipment_selector"></div>
        </div>
        <div class="topline">
            <p></p>
            <div class="equipment_selector"></div>
        </div>
        <div class="topline">
            <p></p>
            <div class="equipment_selector"></div>
        </div>
        <div class="topline">
            <p></p>
            <div class="equipment_selector"></div>
        </div>
        <p></p>
        <div class="halo_selector"></div>
        <p id="load_tip">读取中...</p>
        <button type="button" id="bind">绑定</button>
        <button type="button" onclick="unbind()">解除绑定</button>
        <button type="button" onclick="quit()">取消</button>
    </div>`;
                                        div0.innerHTML =`       <style>
    .popup {
        width: 100vw;
        height: 100vh;
        background-color: rgba(0, 0, 0, .5);
        position: fixed;
        left: 0;
        top: 0;
        bottom: 0;
        right: 0;
        z-index: 9999;
        display: none;
        justify-content: center;
        align-items: center;
    }

    .popup-content {
        width: 400px;
        height: 200px;
        background-color: #fff;
        box-sizing: border-box;
        padding: 10px 30px;
        color: black;
    }

    .topline {
        width: 100%;
        border-bottom: 1px solid black;
    }
</style>

<div class="popup" id="popup">
${initHTML}
</div>`;
                                        unsafeWindow.equipOnekey = function(t) {
                                            $('.popup-content').height(100);
                                            $('.popup-content').width(100);
                                            document.getElementById("popup").innerHTML = `<div class="popup-content">
        <div class="topline">
            <p></p>
            <div>装备×</div>
            <div>光环×</div>
        </div>
        <div>更换中..</div>
        <button type="button" onclick="quit()">取消</button>
    </div>`;
                                            let role = t.parentNode.parentNode.parentNode.children[0].innerText.replace(/\n/g,'');
                                            let roleId = t.parentNode.parentNode.children[1].children[0].getAttribute('onclick').match(/[0-9]+/)[0];
                                            let bind_info = null;
                                            let ud = getUserData();
                                            if(ud.dataBind[role]!=null){
                                                bind_info = ud.dataBind[role];
                                            }
                                            else{
                                                bind_info = localStorage.getItem(`${role}`);
                                                ud.dataBind[role] = bind_info; //数据兼容转移
                                                setUserData(ud);
                                                localStorage.removeItem(`${role}`);
                                            }

                                            console.log(`bind_info of role:$#{bind_info}#`);
                                            console.log(`ID of role:${roleId}`);

                                            let upcard_data = getPostData(/upcard\(id\)\{[\s\S]*\}/m,/data: ".*\+id\+.*"/).slice(7,-1).replace('"+id+"',roleId);

                                            if(bind_info!=null){
                                                GM_xmlhttpRequest({
                                                    method: 'POST',
                                                    url: `https://www.guguzhen.com/fyg_click.php`,
                                                    headers: headersPOST,
                                                    data: upcard_data,
                                                    onload: response => {
                                                        if(response.responseText=='ok'){
                                                            console.log('card has changed');
                                                            bind_info = bind_info.split('|');
                                                            let equRequest = GM_xmlhttpRequest({
                                                                method: 'POST',
                                                                url: `https://www.guguzhen.com/fyg_read.php`,
                                                                headers: headersPOST,
                                                                data: 'f=7',
                                                                onload: response => {
                                                                    let div0 = document.createElement('div');
                                                                    div0.innerHTML = response.responseText;
                                                                    let equipment = getEquipmentInfo(div0.children);
                                                                    let equiped = getEquipmentInfo(document.getElementsByClassName('fyg_tc')[3].children);

                                                                    let ids = new Array();
                                                                    let err = 0;
                                                                    for(let i=0;i<4;i++){
                                                                        let exist = 0;
                                                                        for(let j=0;j<4;j++){
                                                                            if(bind_info[i]===equiped[j].slice(0,-2).join()){ //已装备
                                                                                exist = 1;
                                                                                break;
                                                                            }
                                                                        }
                                                                        if(exist==0){ //未装备
                                                                            for(let j=0;j<equipment.length;j++){
                                                                                if(bind_info[i]===equipment[j].slice(0,-2).join()){
                                                                                    ids.push(equipment[j][equipment[j].length-1]);
                                                                                    exist = 1;
                                                                                    break;
                                                                                }
                                                                            }
                                                                            if(exist==0){
                                                                                alert('有装备不存在,请重新绑定');
                                                                                err = 1;
                                                                                window.location.reload();
                                                                            }
                                                                        }
                                                                    }
                                                                    if(err==0){
                                                                        let c = ids.length;
                                                                        if(c==0){
                                                                            document.getElementsByClassName('topline')[0].children[1].innerText = '装备√';
                                                                            if(document.getElementsByClassName('topline')[0].children[2].innerText == '光环√'){
                                                                                window.location.reload();
                                                                                document.getElementById("popup").style.display = "none";
                                                                            }
                                                                        }
                                                                        let puton_data = getPostData(/puton\(id\)\{[\s\S]*\}/m,/data: ".*\+id\+.*"/).slice(7,-1);
                                                                        for(let i=0;i<ids.length;i++){
                                                                            GM_xmlhttpRequest({
                                                                                method: 'POST',
                                                                                url: `https://www.guguzhen.com/fyg_click.php`,
                                                                                headers: headersPOST,
                                                                                data: puton_data.replace('"+id+"',ids[i]),
                                                                                onload: response => {
                                                                                    if(response.responseText=='ok'){
                                                                                        c--;
                                                                                        if(c==0){
                                                                                            document.getElementsByClassName('topline')[0].children[1].innerText = '装备√';
                                                                                            if(document.getElementsByClassName('topline')[0].children[2].innerText == '光环√'){
                                                                                                window.location.reload();
                                                                                                document.getElementById("popup").style.display = "none";
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            });
                                                                        }
                                                                    }
                                                                }
                                                            });

                                                            let halo = bind_info[bind_info.length-1].split(',');
                                                            for(let i=0;i<halo.length;i++){
                                                                switch(halo[i]){
                                                                    case '启程之誓':
                                                                        halo[i] = '101';
                                                                        break;
                                                                    case '启程之心':
                                                                        halo[i] = '102';
                                                                        break;
                                                                    case '启程之风':
                                                                        halo[i] = '103';
                                                                        break;
                                                                    case '破壁之心':
                                                                        halo[i] = '201';
                                                                        break;
                                                                    case '破魔之心':
                                                                        halo[i] = '202';
                                                                        break;
                                                                    case '复合护盾':
                                                                        halo[i] = '203';
                                                                        break;
                                                                    case '鲜血渴望':
                                                                        halo[i] = '204';
                                                                        break;
                                                                    case '伤口恶化':
                                                                        halo[i] = '301';
                                                                        break;
                                                                    case '精神创伤':
                                                                        halo[i] = '302';
                                                                        break;
                                                                    case '铁甲尖刺':
                                                                        halo[i] = '303';
                                                                        break;
                                                                    case '忍无可忍':
                                                                        halo[i] = '304';
                                                                        break;
                                                                    case '沸血之志':
                                                                        halo[i] = '401';
                                                                        break;
                                                                    case '波澜不惊':
                                                                        halo[i] = '402';
                                                                        break;
                                                                    case '飓风之力':
                                                                        halo[i] = '403';
                                                                        break;
                                                                    case '红蓝双刺':
                                                                        halo[i] = '404';
                                                                        break;
                                                                    case '绝对护盾':
                                                                        halo[i] = '405';
                                                                        break;
                                                                }
                                                            }
                                                            let halosave_data = getPostData(/halosave\(\)\{[\s\S]*\}/m, /data: ".*\+savearr\+.*"/).slice(7,-1).replace('"+savearr+"',halo.join());
                                                            let haloRequest = GM_xmlhttpRequest({
                                                                method: 'POST',
                                                                url: `https://www.guguzhen.com/fyg_click.php`,
                                                                headers: headersPOST,
                                                                data: halosave_data,
                                                                onload: response => {
                                                                    if(response.responseText=='ok'){
                                                                        document.getElementsByClassName('topline')[0].children[2].innerText = '光环√';
                                                                        if(document.getElementsByClassName('topline')[0].children[1].innerText == '装备√'){
                                                                            window.location.reload();
                                                                            document.getElementById("popup").style.display = "none";
                                                                        }
                                                                    }
                                                                }
                                                            });
                                                            unsafeWindow.quit = function() {
                                                                document.getElementById("popup").style.display = "none";
                                                                equRequest.abort();
                                                                haloRequest.abort();
                                                                document.getElementById("popup").innerHTML = initHTML;
                                                            };
                                                            document.getElementById("popup").style.display = "flex";
                                                        }
                                                    }
                                                });
                                            }
                                            else{
                                                alert('未绑定');
                                            }

                                        }

                                        unsafeWindow.showPopup = function(t) {
                                            document.getElementById("popup").innerHTML = initHTML;
                                            let role = t.parentNode.parentNode.parentNode.children[0].innerText.replace(/\n/g,'');
                                            let equRequest = GM_xmlhttpRequest({ //获取装备
                                                method: 'POST',
                                                url: `https://www.guguzhen.com/fyg_read.php`,
                                                headers: headersPOST,
                                                data: 'f=7',
                                                onload: response => {
                                                    let div0 = document.createElement('div');
                                                    div0.innerHTML = response.responseText;
                                                    let equipment = getEquipmentInfo(div0.children);
                                                    equipment = equipment.concat(getEquipmentInfo(document.getElementsByClassName('fyg_tc')[3].children));
                                                    $('.popup-content').height(Math.min(equipment.length,19)*25+120);
                                                    $('.popup-content').width(400);
                                                    $('.popup-content').css('overflow','scroll');

                                                    let BLADE = new Array();
                                                    let WAND = new Array();
                                                    let STAFF = new Array();
                                                    let SWORD = new Array();
                                                    let SHIELD = new Array();
                                                    let BOW = new Array();
                                                    let ASSBOW = new Array();
                                                    let DAGGER = new Array();

                                                    let GLOVES = new Array();
                                                    let BRACELET = new Array();
                                                    let VULTURE = new Array();

                                                    let CLOAK = new Array();
                                                    let CLOTH = new Array();
                                                    let LEATHER = new Array();
                                                    let PLATE = new Array();
                                                    let THORN = new Array();

                                                    let SCARF = new Array();
                                                    let TIARA = new Array();

                                                    //添加文字
                                                    equipment.forEach(item=>{
                                                        switch(item[0]){
                                                            case 'BLADE':
                                                                BLADE.push(new Array('刃',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'STAFF':
                                                                STAFF.push(new Array('短杖',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'WAND':
                                                                WAND.push(new Array('光杖',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'SWORD':
                                                                SWORD.push(new Array('剑',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'SHIELD':
                                                                SHIELD.push(new Array('盾',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'BOW':
                                                                BOW.push(new Array('短弓',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'ASSBOW':
                                                                ASSBOW.push(new Array('刺杀弓',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'DAGGER':
                                                                DAGGER.push(new Array('匕首',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'GLOVES':
                                                                GLOVES.push(new Array('探险手套',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'BRACELET':
                                                                BRACELET.push(new Array('手环',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'VULTURE':
                                                                VULTURE.push(new Array('秃鹫手套',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'CLOAK':
                                                                CLOAK.push(new Array('灵光袍',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'CLOTH':
                                                                CLOTH.push(new Array('布甲',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'LEATHER':
                                                                LEATHER.push(new Array('皮甲',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'PLATE':
                                                                PLATE.push(new Array('铁甲',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'THORN':
                                                                THORN.push(new Array('重甲',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'SCARF':
                                                                SCARF.push(new Array('头巾',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                            case 'TIARA':
                                                                TIARA.push(new Array('发饰',`Lv${item[1]}`,`${item[2]}%`,`${item[3]}%`,`${item[4]}%`,`${item[5]}%`));
                                                                break;
                                                        }
                                                    });
                                                    function selector_equ() {
                                                        var equipNum = $(".equipment_selector .equipment_item").index(this);
                                                        $(".equipment_selector .equipment_item")
                                                            .eq(equipNum)
                                                            .css("background-color", "rgb(135, 206, 250)")
                                                            .siblings(".equipment_selector .equipment_item")
                                                            .css("background-color", "rgb(255, 255, 255)");
                                                    }
                                                    let content = document.getElementsByClassName('equipment_selector');
                                                    let e = new Array().concat(new Array(BLADE.concat(WAND,STAFF,SWORD,SHIELD,BOW,ASSBOW,DAGGER)),new Array(GLOVES.concat(BRACELET,VULTURE)),new Array(CLOAK.concat(CLOTH,LEATHER,PLATE,THORN)),new Array(SCARF.concat(TIARA)));
                                                    for(let i=0;i<4;i++){
                                                        for(let j=0;j<e[i].length;j++){
                                                            let li0 = document.createElement('li');
                                                            li0.setAttribute('class','equipment_item');
                                                            li0.addEventListener('click', selector_equ, false);
                                                            li0.innerHTML = `<a href="javascript:void(0)">${e[i][j].join(' ')}</a>`;
                                                            content[i].appendChild(li0);
                                                        }
                                                    }
                                                }
                                            });

                                            localStorage.setItem('halo_max','0'); //天赋点
                                            let haloRequest = GM_xmlhttpRequest({ //获取天赋点
                                                method: 'POST',
                                                url: `https://www.guguzhen.com/fyg_read.php`,
                                                headers: headersPOST,
                                                data: 'f=5',
                                                onload: response => {
                                                    let halo = response.responseText.match(/<h3>.*</)[0].slice(4,-1);
                                                    localStorage.setItem('halo_max',halo.match(/[0-9]+/).join());
                                                    halo = `天赋点:${halo.match(/[0-9]+/)[0]},技能位:${role.match(/[0-9]技/)[0].slice(0,1)}`;
                                                    document.getElementsByClassName('halo_selector')[0].innerHTML = `<div>${halo}</div>
    <a href="javascript:void(0)" class="halo_item">启程之誓 10</a>
    <a href="javascript:void(0)" class="halo_item">启程之心 10</a>
    <a href="javascript:void(0)" class="halo_item">启程之风 10</a>
    <div></div>
    <a href="javascript:void(0)" class="halo_item">破壁之心 30</a>
    <a href="javascript:void(0)" class="halo_item">破魔之心 30</a>
    <a href="javascript:void(0)" class="halo_item">复合护盾 30</a>
    <a href="javascript:void(0)" class="halo_item">鲜血渴望 30</a>
    <div></div>
    <a href="javascript:void(0)" class="halo_item">伤口恶化 50</a>
    <a href="javascript:void(0)" class="halo_item">精神创伤 50</a>
    <a href="javascript:void(0)" class="halo_item">铁甲尖刺 50</a>
    <a href="javascript:void(0)" class="halo_item">忍无可忍 50</a>
    <div></div>
    <a href="javascript:void(0)" class="halo_item">沸血之志 100</a>
    <a href="javascript:void(0)" class="halo_item">波澜不惊 100</a>
    <a href="javascript:void(0)" class="halo_item">飓风之力 100</a>
    <a href="javascript:void(0)" class="halo_item">红蓝双刺 100</a>
    <a href="javascript:void(0)" class="halo_item">绝对护盾 100</a>`;
                                                    function selector_halo() {
                                                        if($(this).css('background-color')!='rgb(135, 206, 250)'){
                                                            $(this).css('background-color','rgb(135, 206, 250)');
                                                        }
                                                        else{
                                                            $(this).css('background-color','rgb(255, 255, 255)');
                                                        }
                                                    }
                                                    $('.halo_item').each(function(i,e){
                                                        $(e).on('click', selector_halo);
                                                    });
                                                    document.getElementById('load_tip').innerText = '';
                                                }
                                            });

                                            unsafeWindow.quit = function() {
                                                document.getElementById("popup").style.display = "none";
                                                equRequest.abort();
                                                haloRequest.abort();
                                                document.getElementById("popup").innerHTML = initHTML;
                                            };

                                            unsafeWindow.unbind = function() {
                                                if(localStorage.getItem(`${role}`)!=null){
                                                    localStorage.removeItem(`${role}`);
                                                }
                                            };


                                            //绑定
                                            function hidePopup() {
                                                let equ = new Array();
                                                let halo = new Array();
                                                let sum = 0;
                                                $(".equipment_item").each(function(i,e){
                                                    if($(e).attr("style")!=null&&$(e).css("background-color") != "rgb(255, 255, 255)"){
                                                        equ.push(e.innerText.split(' '));
                                                    }
                                                });
                                                $(".halo_item").each(function(i,e){
                                                    if($(e).attr("style")!=null&&$(e).css("background-color") != "rgb(255, 255, 255)"){
                                                        let ee = e.innerText.split(' ');
                                                        sum+=parseInt(ee[1]);
                                                        halo.push(ee[0]);
                                                    }
                                                });
                                                let h = parseInt(localStorage.getItem('halo_max'));
                                                if(equ.length==4&&sum<=h&&halo.length<=parseInt(role.match(/[0-9]技/).slice(0,1))){
                                                    for(let i=0;i<4;i++){
                                                        let name = equ[i][0];
                                                        name = eqToAbbr(name);
                                                        equ[i][0] = name;
                                                        equ[i][1] = equ[i][1].substr(2);
                                                        for(let j=2;j<6;j++){
                                                            equ[i][j] = equ[i][j].slice(0, -1)
                                                        }
                                                    }
                                                    let bind_info = new Array(equ[0],equ[1],equ[2],equ[3],halo);
                                                    let ud = getUserData();
                                                    ud.dataBind[role] = bind_info.join('|');
                                                    setUserData(ud);
                                                    console.log(localStorage);

                                                    document.getElementById("popup").innerHTML = initHTML;
                                                    document.getElementById("popup").style.display = "none";
                                                }
                                                else{
                                                    alert('有装备未选或天赋错误');
                                                }
                                            }
                                            document.getElementById('bind').addEventListener('click', hidePopup, false);
                                            document.getElementById("popup").style.display = "flex";
                                        };

                                        let p = document.getElementsByClassName('panel panel-primary')[1];
                                        if(p.lastChild.id!='cardpage_pop'){
                                            p.appendChild(div0);
                                        }

                                    }catch(err){console.log(err);}
                                }
                            },1000);

                            break;
                        case 2:
                            $('.pop_main').hide();
                            btnc1.onclick = ()=>{
                                try{
                                    d.innerHTML = '<div class="pop_main">\n<div class="pop_con">\n<div class="pop_text">0</div>\n<a href="#">×</a>\n</div>\n<div class="mask"></div>\n</div>';
                                    $('.pop_con a').click(()=>{
                                        $('.pop_con').animate({'top':0,'opacity':0},()=>{
                                            $('.pop_main').hide()
                                        })
                                    })
                                    $('.pop_main').show()
                                    $('.pop_con').css({'top':0,'opacity':0})
                                    $('.pop_con').animate({'top':'50%','opacity':1})
                                    let text = $('.pop_text');
                                    let aura = document.getElementsByClassName('btn btn-primary');
                                    let data = new Array();
                                    data.push(aura.length);

                                    for(let i=0;i<aura.length;i++){
                                        let t = aura[i].innerText;
                                        //console.log(t);
                                        switch(t[0]){
                                            case '启':
                                                switch(t[3]){
                                                    case '誓':data.push('SHI');break;
                                                    case '心':data.push('XIN');break;
                                                    case '风':data.push('FENG');break;
                                                }
                                                break;
                                            case '破':
                                                switch(t[1]){
                                                    case '壁':data.push('BI');break;
                                                    case '魔':data.push('MO');break;
                                                }
                                                break;
                                            case '复':data.push('DUN');break;
                                            case '鲜':data.push('XUE');break;
                                            case '伤':data.push('SHANG');break;
                                            case '精':data.push('SHEN');break;
                                            case '铁':data.push('CI');break;
                                            case '忍':data.push('REN');break;
                                            case '沸':data.push('FEI');break;
                                            case '波':data.push('BO');break;
                                            case '飓':data.push('JU');break;
                                            case '红':data.push('HONG');break;
                                            case '绝':data.push('JUE');break;
                                        }
                                    }
                                    text[0].innerText = `${data.join(' ')}`;
                                    //$('.pop_main').hide();

                                }catch(err){
                                    console.log(err);
                                }
                            }
                            break;
                        case 3:
                            $('.pop_main').hide();
                            btnc1.onclick = ()=>{
                                try{
                                    d.innerHTML = '<div class="pop_main">\n<div class="pop_con">\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<a href="#">×</a>\n</div>\n<div class="mask"></div>\n</div>';
                                    $('.pop_con a').click(()=>{
                                        $('.pop_con').animate({'top':0,'opacity':0},()=>{
                                            $('.pop_main').hide()
                                        })
                                    })
                                    $('.pop_main').show()
                                    $('.pop_con').css({'top':0,'opacity':0})
                                    $('.pop_con').animate({'top':'50%','opacity':1})
                                    let text = $('.pop_text');
                                    let cardInfo = document.getElementsByClassName('text-info fyg_f24')[0].innerText;
                                    let quality = document.getElementsByClassName('text-info fyg_tr')[0].innerText[0];

                                    GM_xmlhttpRequest({
                                        method: 'POST',
                                        url: `https://www.guguzhen.com/fyg_read.php`,
                                        headers: headersPOST,
                                        data: 'f=5',
                                        onload: response => {
                                            let halo = response.responseText.match(/( [0-9]/g)[1].replace('( ','');
                                            switch(cardInfo[0]){
                                                case '琳':
                                                    text[0].innerText = `LIN ${cardInfo.match(/[0-9]+/)[0].replace('(','')} ${halo} ${quality}`;
                                                    text[1].innerText = `${document.getElementById('sjll').getAttribute('value')} ${document.getElementById('sjmj').getAttribute('value')} ${document.getElementById('sjzl').getAttribute('value')} ${document.getElementById('sjtp').getAttribute('value')} ${document.getElementById('sjjs').getAttribute('value')} ${document.getElementById('sjyz').getAttribute('value')}`;
                                                    break;
                                                case '艾':
                                                    text[0].innerText = `AI ${cardInfo.match(/[0-9]+/)[0].replace('(','')} ${halo} ${quality}`;
                                                    text[1].innerText = `${document.getElementById('sjll').getAttribute('value')} ${document.getElementById('sjmj').getAttribute('value')} ${document.getElementById('sjzl').getAttribute('value')} ${document.getElementById('sjtp').getAttribute('value')} ${document.getElementById('sjjs').getAttribute('value')} ${document.getElementById('sjyz').getAttribute('value')}`;
                                                    break;
                                                case '默':
                                                    text[0].innerText = `MO ${cardInfo.match(/[0-9]+/)[0].replace('(','')} ${halo} ${quality}`;
                                                    text[1].innerText = `${document.getElementById('sjll').getAttribute('value')} ${document.getElementById('sjmj').getAttribute('value')} ${document.getElementById('sjzl').getAttribute('value')} ${document.getElementById('sjtp').getAttribute('value')} ${document.getElementById('sjjs').getAttribute('value')} ${document.getElementById('sjyz').getAttribute('value')}`;
                                                    break;
                                                case '梦':
                                                    text[0].innerText = `MENG ${cardInfo.match(/[0-9]+/)[0].replace('(','')} ${halo} ${quality}`;
                                                    text[1].innerText = `${document.getElementById('sjll').getAttribute('value')} ${document.getElementById('sjmj').getAttribute('value')} ${document.getElementById('sjzl').getAttribute('value')} ${document.getElementById('sjtp').getAttribute('value')} ${document.getElementById('sjjs').getAttribute('value')} ${document.getElementById('sjyz').getAttribute('value')}`;
                                                    break;
                                                case '薇':
                                                    text[0].innerText = `WEI ${cardInfo.match(/[0-9]+/)[0].replace('(','')} ${halo} ${quality}`;
                                                    text[1].innerText = `${document.getElementById('sjll').getAttribute('value')} ${document.getElementById('sjmj').getAttribute('value')} ${document.getElementById('sjzl').getAttribute('value')} ${document.getElementById('sjtp').getAttribute('value')} ${document.getElementById('sjjs').getAttribute('value')} ${document.getElementById('sjyz').getAttribute('value')}`;
                                                    break;
                                            }
                                        }
                                    });
                                }catch(err){console.log(err);}
                            }
                            break;
                    }
                });
                observer.observe(document.getElementById('backpacks'), {childList: true, characterData: true});
            }
        },500);

        let p = document.getElementsByClassName('panel panel-primary')[1];
        p.insertBefore(btnc1,p.children[0]);

        let d = document.createElement('div');
        d.id = 'alert';
        d.innerHTML = '<div class="pop_main">\n<div class="pop_con">\n<div class="pop_text">0</div>\n<a href="#">×</a>\n</div>\n<div class="mask"></div>\n</div>';
        //'<div class="pop_main">\n<div class="pop_con">\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">Bag:</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<div class="pop_text">0</div>\n<a href="#">×</a>\n</div>\n<div class="mask"></div>\n</div>';

        p.insertBefore(d,p.children[0]);
        $('.pop_main').hide();
        $('.pop_con a').click(()=>{
            $('.pop_con').animate({'top':0,'opacity':0},()=>{
                $('.pop_main').hide()
            })
        })
    }
    else if(window.location.pathname=='/fyg_beach.php'){
        function insertAfter(newEl, targetEl)
        {
            var parentEl = targetEl.parentNode;

            if(parentEl.lastChild == targetEl)
            {
                parentEl.appendChild(newEl);
            }else
            {
                parentEl.insertBefore(newEl,targetEl.nextSibling);
            }
        }

        let beachCheck = document.createElement('form');
        beachCheck.innerHTML = `<div class="form-group form-check">
    <label class="form-check-label" for="beachcheck">屏蔽垃圾装备</label>
    <input type="checkbox" class="form-check-input" id="beachcheck">
    <label>分析中..</label>
  </div>`;
        document.getElementsByClassName('panel-body')[2].appendChild(beachCheck);
        document.querySelector("#beachcheck").addEventListener('click', ()=>{localStorage.setItem('beachcheck',document.querySelector("#beachcheck").checked)}, false);
        document.querySelector("#beachcheck").checked = (localStorage.getItem('beachcheck')==='true');

        let equipment = new Array();
        let equipedbtn = null;
        //读取拥有的装备
        GM_xmlhttpRequest({
            method: 'POST',
            url: `https://www.guguzhen.com/fyg_read.php`,
            headers: headersPOST,
            data: 'f=7',
            onload: response => {
                let div0 = document.createElement('div');
                div0.innerHTML = response.responseText;
                equipedbtn = [].slice.call(div0.children);
                let equipbag = getEquipmentInfo(div0.children);
                GM_xmlhttpRequest({
                    method: 'POST',
                    url: `https://www.guguzhen.com/fyg_read.php`,
                    headers: headersPOST,
                    data: 'f=9',
                    onload: response => {
                        document.querySelector(".form-check").children[2].innerText = '';
                        let div0 = document.createElement('div');
                        div0.innerHTML = response.responseText;

                        equipedbtn = equipedbtn.concat([].slice.call(div0.getElementsByClassName('fyg_tc')[3].children));
                        equipedbtn.sort(sortEqByName);

                        let equiped = getEquipmentInfo(div0.getElementsByClassName('fyg_tc')[3].children);
                        equipment = equipbag.concat(equiped);
                        if(equipment.length == 0){
                            equipment[0] = -1;
                        }
                    }
                });
            }
        });

        //分析装备并显示属性
        function pickEquipment(equipment){
            if(document.querySelector("#beachcheck").checked){
                //屏蔽鼠标事件
                $('#beachall .fyg_mp3').css('pointer-events', 'none');
            }else{
                $('#beachall .fyg_mp3').css('pointer-events', 'auto');
            }
            if(equipment[0]==-1) return;
            let btns = document.getElementsByClassName('fyg_mp3');
            for(let i=0;i<btns.length;i++){
                if(btns[i].parentNode.id == 'beachall'){
                    let isFind = false;
                    let isPick = false;
                    let btninfo = getEquipmentInfo(new Array(btns[i]))[0];
                    for(let j=0;j<equipment.length;j++){
                        if(equipment[j][0]===btninfo[0]){
                            isFind = true;
                            let e1 = new Array(parseInt(equipment[j][1]),parseInt(equipment[j][2]),parseInt(equipment[j][3]),parseInt(equipment[j][4]),parseInt(equipment[j][5]));
                            let e2 = new Array(parseInt(btninfo[1]),parseInt(btninfo[2]),parseInt(btninfo[3]),parseInt(btninfo[4]),parseInt(btninfo[5]));
                            function product(e1,e2){
                                return e1*e2;
                            }
                            function linear(e1,e2,a,b){
                                return (e1/a+b)*e2;
                            }
                            switch(btninfo[0]){
                                case 'BLADE':
                                    isPick = (
                                        linear(e1[0],e1[1],5,20)<linear(e2[0],e2[1],5,20)||
                                        linear(e1[0],e1[2],5,20)<linear(e2[0],e2[2],5,20)||
                                        linear(e1[0],e1[3],20,10)<linear(e2[0],e2[3],20,10)||
                                        linear(e1[0],e1[4],20,10)<linear(e2[0],e2[4],20,10));
                                    break;
                                case 'STAFF':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        linear(e1[0],e1[3],20,5)<linear(e2[0],e2[3],20,5)||
                                        linear(e1[0],e1[4],15,10)<linear(e2[0],e2[4],15,10));
                                    break;
                                case 'WAND':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'SWORD':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        linear(e1[0],e1[4],15,10)<linear(e2[0],e2[4],15,10));
                                    break;
                                case 'SHIELD':
                                    isPick = (
                                        linear(e1[0],e1[1],15,10)<linear(e2[0],e2[1],15,10)||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'BOW':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        linear(e1[0],e1[4],15,10)<linear(e2[0],e2[4],15,10));
                                    break;
                                case 'ASSBOW':
                                    isPick = (
                                        linear(e1[0],e1[1],5,30)<linear(e2[0],e2[1],5,30)||
                                        linear(e1[0],e1[2],20,10)<linear(e2[0],e2[2],20,10)||
                                        linear(e1[0],e1[3],20,10)<linear(e2[0],e2[3],20,10)||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'DAGGER':
                                    isPick = (
                                        linear(e1[0],e1[1],5,0)<linear(e2[0],e2[1],5,0)||
                                        linear(e1[0],e1[2],5,0)<linear(e2[0],e2[2],5,0)||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        linear(e1[0],e1[4],5,25)<linear(e2[0],e2[4],5,25));
                                    break;
                                case 'GLOVES':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'BRACELET':
                                    isPick = (
                                        linear(e1[0],e1[1],5,1)<linear(e2[0],e2[1],5,1)||
                                        linear(e1[0],e1[2],20,1)<linear(e2[0],e2[2],20,1)||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'VULTURE':
                                    isPick = (
                                        linear(e1[0],e1[1],15,5)<linear(e2[0],e2[1],15,5)||
                                        linear(e1[0],e1[2],15,5)<linear(e2[0],e2[2],15,5)||
                                        linear(e1[0],e1[3],15,5)<linear(e2[0],e2[3],15,5)||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'CLOAK':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        linear(e1[0],e1[3],3,20)<linear(e2[0],e2[3],3,20)||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'CLOTH':
                                    isPick = false;
                                    break;
                                case 'LEATHER':
                                    isPick = false;
                                    break;
                                case 'PLATE':
                                    isPick = false;
                                    break;
                                case 'THORN':
                                    isPick = (
                                        linear(e1[0],e1[1],5,20)<linear(e2[0],e2[1],5,20)||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        linear(e1[0],e1[4],15,10)<linear(e2[0],e2[4],15,10));
                                    break;
                                case 'SCARF':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        product(e1[0],e1[2])<product(e2[0],e2[2])||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                                case 'TIARA':
                                    isPick = (
                                        product(e1[0],e1[1])<product(e2[0],e2[1])||
                                        linear(e1[0],e1[2],3,1)<linear(e2[0],e2[2],3,1)||
                                        product(e1[0],e1[3])<product(e2[0],e2[3])||
                                        product(e1[0],e1[4])<product(e2[0],e2[4]));
                                    break;
                            }
                        }
                    }
                    if(btninfo[6]==1){
                        isPick = true;
                    }
                    if(!isFind){
                        //垃圾甲不捡
                        switch(btninfo[0]){
                            case 'CLOTH':
                                isPick = false;
                                break;
                            case 'LEATHER':
                                isPick = false;
                                break;
                            case 'PLATE':
                                isPick = false;
                                break;
                            default:
                                isPick = true;
                        }
                    }
                    if(isPick){
                        let btn0 = document.createElement('button');
                        btn0.setAttribute('class','btn btn-light');
                        btn0.setAttribute('onclick',btns[i].getAttribute('onclick'));
                        btn0.setAttribute('data-toggle','popover');
                        btn0.setAttribute('data-trigger','hover');
                        btn0.setAttribute('data-placement','left');
                        btn0.setAttribute('data-html','true');
                        let popover = document.createElement('div');
                        popover.innerHTML = `<style>.popover{max-width:350px}</style>`
                        for(let eqbtn of equipedbtn){
                            if(sortdict[eqToAbbr(btns[i].dataset.originalTitle.split(' ')[2])]==parseInt(eqbtn.getAttribute('data-abbr'))){
                                let btn1 = document.createElement('button');
                                btn1.setAttribute('class','btn btn-light');
                                btn1.style.cssText = 'text-align:left;';
                                btn1.innerHTML = eqbtn.dataset.content;
                                if(btn1.lastChild.nodeType==3){ //清除背景介绍文本
                                    btn1.lastChild.remove();
                                }
                                if(btn1.lastChild.className=='bg-danger'){
                                    btn1.lastChild.style.cssText = 'max-width:250px;white-space:pre-line;word-break:break-all;';
                                }
                                popover.appendChild(btn1);
                            }
                        }
                        btn0.setAttribute('data-content',popover.innerHTML);
                        btn0.innerHTML = `<h3 class="popover-title" style="background-color: ${getComputedStyle(btns[i]).getPropertyValue("background-color")}">${btns[i].dataset.originalTitle}</h3><div class="popover-content">${btns[i].dataset.content}</div>`;
                        insertAfter(btn0,btns[i]);
                    }
}
}
$(function(){
    $('[data-toggle="popover"]').popover();
});
$('.btn-light').css({'padding':0,
                     'text-align':'left'});
$('.bg-danger').css({'max-width':'250px',
                     'white-space': 'pre-line',
                     'word-break': 'break-all'});
}

//等待海滩装备加载
let show = setInterval(()=>{
    if($('#beachall .fyg_mp3').toArray().length!=0){
        clearInterval(show);
        //等待装备读取完成
        let pick = setInterval(()=>{
            if(equipment.length>0){
                clearInterval(pick);
                pickEquipment(equipment);
            }
        },500);
    }
},500);

let btnNum = -1;
let getBtnNum = setInterval(()=>{
    if($('#beachall .fyg_mp3').toArray().length!=0){
        clearInterval(getBtnNum);
        btnNum = $('#beachall .fyg_mp3').toArray().length;
    }
},2000);
let observerBody0 = new MutationObserver(()=>{
    let nowlength = $('#beachall .fyg_mp3').toArray().length;
    if(btnNum!=-1 && btnNum!=nowlength){ //海滩装备数量发生改变
        btnNum = nowlength;
        //等待海滩状态刷新
        let readd = setInterval(()=>{
            if($('#beachall .btn btn-light').toArray().length==0){
                clearInterval(readd);
                pickEquipment(equipment);
            }
        },1000);
    }
},1000);
observerBody0.observe(document.getElementsByClassName('panel panel-primary')[2], {childList: true,subtree: true,});
}
else if(window.location.pathname=='/fyg_pk.php'){
    let btngroup0 = document.createElement('div');
    btngroup0.setAttribute('class','action_selector');
    btngroup0.innerHTML = `<p></p><div class="btn-group" role="group">
  <button type="button" class="btn btn-secondary">0</button>
  <button type="button" class="btn btn-secondary">10</button>
  <button type="button" class="btn btn-secondary">20</button>
  <button type="button" class="btn btn-secondary">30</button>
  <button type="button" class="btn btn-secondary">40</button>
  <button type="button" class="btn btn-secondary">50</button>
  <button type="button" class="btn btn-secondary">60</button>
  <button type="button" class="btn btn-secondary">70</button>
  <button type="button" class="btn btn-secondary">80</button>
  <button type="button" class="btn btn-secondary">90</button>
  <button type="button" class="btn btn-secondary">100</button>
</div>`;
        let btngroup1 = document.createElement('div');
        btngroup1.setAttribute('class','action_selector');
        btngroup1.innerHTML = `<p></p><div class="btn-group" role="group">
  <button type="button" class="btn btn-secondary">0</button>
  <button type="button" class="btn btn-secondary">5</button>
  <button type="button" class="btn btn-secondary">10</button>
  <button type="button" class="btn btn-secondary">15</button>
  <button type="button" class="btn btn-secondary">20</button>
  <button type="button" class="btn btn-secondary">25</button>
  <button type="button" class="btn btn-secondary">30</button>
  <button type="button" class="btn btn-secondary">35</button>
  <button type="button" class="btn btn-secondary">40</button>
  <button type="button" class="btn btn-secondary">45</button>
  <button type="button" class="btn btn-secondary">50</button>
  <button type="button" class="btn btn-secondary">55</button>
  <button type="button" class="btn btn-secondary">60</button>
  <button type="button" class="btn btn-secondary">65</button>
  <button type="button" class="btn btn-secondary">70</button>
  <button type="button" class="btn btn-secondary">75</button>
  <button type="button" class="btn btn-secondary">80</button>
  <button type="button" class="btn btn-secondary">85</button>
  <button type="button" class="btn btn-secondary">90</button>
  <button type="button" class="btn btn-secondary">95</button>
  <button type="button" class="btn btn-secondary">100</button>
</div>`;
        let btngroup2 = document.createElement('div');
        btngroup2.setAttribute('class','action_selector');
        btngroup2.innerHTML = `<p></p><div class="btn-group" role="group">
  <button type="button" class="btn btn-secondary">0</button>
  <button type="button" class="btn btn-secondary">5</button>
  <button type="button" class="btn btn-secondary">10</button>
  <button type="button" class="btn btn-secondary">15</button>
  <button type="button" class="btn btn-secondary">20</button>
  <button type="button" class="btn btn-secondary">25</button>
  <button type="button" class="btn btn-secondary">30</button>
  <button type="button" class="btn btn-secondary">35</button>
  <button type="button" class="btn btn-secondary">40</button>
  <button type="button" class="btn btn-secondary">45</button>
  <button type="button" class="btn btn-secondary">50</button>
  <button type="button" class="btn btn-secondary">55</button>
  <button type="button" class="btn btn-secondary">60</button>
  <button type="button" class="btn btn-secondary">65</button>
  <button type="button" class="btn btn-secondary">70</button>
  <button type="button" class="btn btn-secondary">75</button>
  <button type="button" class="btn btn-secondary">80</button>
  <button type="button" class="btn btn-secondary">85</button>
  <button type="button" class="btn btn-secondary">90</button>
  <button type="button" class="btn btn-secondary">95</button>
  <button type="button" class="btn btn-secondary">100</button>
</div>`;

        let observerBody0 = new MutationObserver(()=>{
            //observerBody0.disconnect();
            if(document.getElementsByClassName('btn-secondary').length==0){
                let addbtn = setInterval(()=>{
                    let col = document.querySelector("#pklist > div > div.col-md-8");
                    if(col!=null){
                        clearInterval(addbtn);
                        let obtns = document.getElementsByClassName('btn-block dropdown-toggle fyg_lh30');
                        col.insertBefore(btngroup0, obtns[0]);
                        col.insertBefore(btngroup1, obtns[1]);
                        col.insertBefore(btngroup2, obtns[2]);
                        if(document.getElementsByClassName('btn-outline-secondary').length==0){
                            if(localStorage.getItem('dataReward')==null){
                                localStorage.setItem('dataReward','{"sumShell":"0","sumExp":"0"}');
                            }

                            let ok = document.createElement('div');
                            ok.innerHTML = `<p></p><button type="button" class="btn btn-outline-secondary">任务执行</button>`;
                            col.appendChild(ok);

                            function gobattle(){
                                let times = new Array(0,0,0);
                                let sum = 0;
                                $(".btn-secondary").each(function(i,e){
                                    if($(e).attr("style")!=null&&$(e).css("background-color") == "rgb(135, 206, 250)"){
                                        let a = parseInt(e.innerText);
                                        let b = $(".btn-group .btn-secondary").index(e);
                                        sum+=a;
                                        if(b<11){
                                            times[0] = a/10;
                                        }
                                        else if(b>=11&&b<32){
                                            times[1] = a/5;
                                        }
                                        else if(b>=32){
                                            times[2] = a/5;
                                        }
                                    }
                                });

                                if(sum<=parseInt(document.getElementsByClassName('fyg_colpz03')[0].innerText)){
                                    let gox_data = getPostData(/gox\(\)\{[\s\S]*\}/m,/data: ".*"/).slice(7,-1);

                                    //let gox_data = document.getElementsByTagName('script')[2].innerText.match(/gox\(\)\{[\s\S]*\}/)[0].match(/data:\s*".*"/)[0].slice(7,-1);

                                    let dataReward = JSON.parse(localStorage.getItem('dataReward'));
                                    let sum0 = parseInt(dataReward.sumShell);
                                    let sum1 = parseInt(dataReward.sumExp);

                                    function func0(time) {
                                        if(time==0){
                                            if(times[0]!=0){
                                                GM_xmlhttpRequest({
                                                    method: 'POST',
                                                    url: `https://www.guguzhen.com/fyg_read.php`,
                                                    headers: headersPOST,
                                                    data: 'f=12',
                                                    onload: response => {
                                                        let ap = response.responseText.match(/class="fyg_colpz03" style="font-size:32px;font-weight:900;">[0-9]+</)[0].match(/>[0-9]+</)[0].slice(1,-1);
                                                        document.getElementsByClassName('fyg_colpz03')[0].innerText = ap;
                                                        let rankp = response.responseText.match(/class="fyg_colpz02" style="font-size:32px;font-weight:900;">[0-9]+%</)[0].match(/[0-9]+%/)[0];
                                                        document.getElementsByClassName('fyg_colpz02')[0].innerText = rankp;
                                                        let div_sum = document.createElement('div');
                                                        div_sum.innerText = `贝壳总次数:经验总次数=${sum0}:${sum1}=${(sum0==0||sum1==0)?'undefined':(sum0/sum1).toFixed(2)}`;
                                                        dataReward.sumShell = sum0;
                                                        dataReward.sumExp = sum1;
                                                        localStorage.setItem('dataReward',JSON.stringify(dataReward));
                                                        document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_sum);
                                                        times[0] = 0;
                                                    }
                                                });
                                            }
                                            return;
                                        }
                                        GM_xmlhttpRequest({
                                            method: 'POST',
                                            url: `https://www.guguzhen.com/fyg_click.php`,
                                            headers: headersPOST,
                                            data: gox_data,
                                            onload: response => {
                                                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;
                                                    document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info);
                                                    if(info.indexOf('贝壳')!=-1){
                                                        sum0+=1;
                                                    }
                                                    else if(info.indexOf('经验')!=-1){
                                                        sum1+=1;
                                                    }
                                                    func0(time-1);
                                                }
                                                else{
                                                    let div_info = document.createElement('div');
                                                    div_info.innerText = '段位进度不足';
                                                    document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info);
                                                    func0(0);
                                                }
                                            }
                                        });
                                    }
                                    function func1(time) {
                                        if(time==0) {
                                            times[1] = 0;
                                            return;
                                        }
                                        let observerPk = new MutationObserver((mutationsList, observer) => {
                                            let isPk = 0;
                                            for(let mutation of mutationsList) {
                                                if (mutation.type == 'childList') {
                                                    isPk = 1;
                                                    //console.log(targetNode.firstChild);
                                                }
                                            }
                                            if(isPk){
                                                observerPk.disconnect();
                                                func1(time-1);
                                            }
                                        });
                                        observerPk.observe(document.querySelector("#pk_text"), {characterData: true,childList: true});
                                        jgjg(1);
                                    }
                                    function func2(time) {
                                        if(time==0) {
                                            times[2] = 0;
                                            return;
                                        }
                                        let observerPk = new MutationObserver((mutationsList, observer) => {
                                            let isPk = 0;
                                            for(let mutation of mutationsList) {
                                                if (mutation.type == 'childList') {
                                                    isPk = 1;
                                                    //console.log(targetNode.firstChild);
                                                }
                                            }
                                            if(isPk){
                                                observerPk.disconnect();
                                                func2(time-1);
                                            }
                                        });
                                        observerPk.observe(document.querySelector("#pk_text"), {characterData: true,childList: true});
                                        jgjg(2);
                                    }
                                    func0(times[0]);
                                    let waitFor0 = setInterval(()=>{
                                        if(times[0]==0){
                                            clearInterval(waitFor0);
                                            func1(times[1]);
                                        }
                                    },1000);
                                    let waitFor1 = setInterval(()=>{
                                        if(times[0]==0 && times[1]==0){
                                            clearInterval(waitFor1);
                                            func2(times[2]);
                                        }
                                    },1000);
                                }
                                else{
                                    alert('体力不足');
                                }
                            }
                            document.getElementsByClassName('btn-outline-secondary')[0].addEventListener('click', gobattle, false);
                        }

                        function selector_act() {
                            var btnNum = $(".btn-group .btn-secondary").index(this);
                            $(".btn-group .btn-secondary")
                                .eq(btnNum)
                                .css("background-color", "rgb(135, 206, 250)")
                                .siblings(".btn-group .btn-secondary")
                                .css("background-color", "rgb(255, 255, 255)");
                        }
                        let btnselector = document.getElementsByClassName('btn-secondary');
                        for(let i=0;i<btnselector.length;i++){
                            btnselector[i].addEventListener('click', selector_act, false);
                        }
                    }
                }, 1000);
            }
        });
        observerBody0.observe(document.getElementsByClassName('panel panel-primary')[0], {childList: true,subtree: true,});

        let keepCheck = document.createElement('form');
        keepCheck.innerHTML = `<div class="form-group form-check">
    <label class="form-check-label" for="keepcheck">暂时保持记录</label>
    <input type="checkbox" class="form-check-input" id="keepcheck">
  </div>`;
        document.getElementsByClassName('panel panel-primary')[1].insertBefore(keepCheck,document.getElementById('pk_text'));
        document.querySelector("#keepcheck").addEventListener('click', ()=>{localStorage.setItem('keepcheck',document.querySelector("#keepcheck").checked)}, false);
        document.querySelector("#keepcheck").checked = (localStorage.getItem('keepcheck')==='true');

        let div0_pk_text_more = document.createElement('div');
        div0_pk_text_more.setAttribute('id','pk_text_more');
        div0_pk_text_more.setAttribute('class','panel-body');
        document.getElementsByClassName('panel panel-primary')[1].appendChild(div0_pk_text_more);
        let pkText = document.querySelector("#pk_text").innerHTML;
        let observerBody1 = new MutationObserver(()=>{
            if(document.querySelector("#keepcheck").checked==true){
                document.querySelector("#pk_text_more").innerHTML = pkText + document.querySelector("#pk_text_more").innerHTML;
                pkText = document.querySelector("#pk_text").innerHTML;
            }
        });
        observerBody1.observe(document.querySelector("#pk_text"), {characterData: true,childList: true});

        let btn1 = document.createElement('button');
        let btn2 = document.createElement('button');
        let span0 = document.createElement('span');
        span0.innerHTML = '  提交中...';
        span0.className = 'tip';
        //btn1.innerHTML = '正在读取卡片...';
        btn1.innerHTML = '提交数据';
        btn1.onmousedown = ()=>{
            if(btn1.innerText[0]=='提'){
                $('.tip').show();
            }
        };
        btn1.onclick = ()=>{
            if(btn1.innerText[0]=='提'){
                try{
                    alert('数据采集已关闭');
                    $('.tip').hide();
                    localStorage.clear();
                    //                     let npc = document.getElementById('pklist').children;
                    //                     for(let i = 2;i<12;i++){
                    //                         //console.log(npc[o].innerText[0]);
                    //                         if(npc[i].innerText[0]!='已'){
                    //                             localStorage.setItem('over', 0); //未与全部npc战斗
                    //                             alert('未与全部npc战斗,请与全部npc完成战斗后提交')
                    //                             break;
                    //                         }
                    //                         else{
                    //                             localStorage.setItem('over', 1);
                    //                         }
                    //                     }
                    //                     if(submitData()){
                    //                         alert('数据已提交,第一次使用记得把用户名站内发给thewzmath');
                    //                         $('.tip').hide();
                    //                     }
                    //                     else{
                    //                         if(localStorage.length<=4&&localStorage.getItem('over')=='1'){
                    //                             alert('无数据');
                    //                         }
                    //                         $('.tip').hide();
                    //                     }
                }
                catch(err){
                    console.log(err);
                    alert('数据提交失败,请重试');
                    $('.tip').hide();
                }
            }
        };
        btn2.innerText = '清空数据';
        btn2.onclick = ()=>{
            if(confirm('确定要清空数据吗?\n*确定后会刷新页面')){
                localStorage.clear();
                window.location.reload();
            }
        }

        let p = document.getElementsByClassName('panel panel-primary')[0];
        p.insertBefore(span0,p.children[0]);
        p.insertBefore(btn1,p.children[0]);
        p.insertBefore(btn2,p.children[0]);
        $('.tip').hide();



        //         try{
        //             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=9',
        //                 onload: response => {
        //                     try{
        //                         var n = response.responseText.match(/>[\u4e00-\u9fa5]</u)[0];
        //                         localStorage.setItem('cardName',n.substr(1,n.length-2));
        //                     }catch(err){localStorage.setItem('cardName','null');}
        //                     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=4',
        //                         onload: response => {
        //                             //console.log(response.responseText);
        //                             attribute.splice(0,attribute.length);
        //                             response.responseText.match(/>(\d+)</g).forEach(item => {
        //                                 attribute.push(item.substr(1,item.length-2));
        //                             });
        //                             attribute.shift();
        //                             localStorage.setItem('attribute',attribute.join(','));
        //                             if(localStorage.getItem('cardName')!='0'&&localStorage.getItem('attribute')!='0'){
        //                                 //alert('卡片读取完成');
        //                                 btn1.innerHTML = '提交数据';

        //                                 console.log(localStorage);

        //                                 var targetNode = document.getElementById('pk_text');
        //                                 var config = {childList: true};
        //                                 // 当节点发生变化时的需要执行的函数
        //                                 var callback = function(mutationsList, observer) {
        //                                     var isPk = 0;
        //                                     for(let mutation of mutationsList) {
        //                                         if (mutation.type == 'childList') {
        //                                             //console.log('new pk');
        //                                             isPk = 1;
        //                                             //console.log(targetNode.firstChild);

        //                                         }
        //                                     }

        //                                     if(isPk){
        //                                         var infoList = targetNode.firstChild.children;
        //                                         //infoList: [0]名字,[1]初始血盾,[2]第一回合{左方信息,右方信息,左方血盾,右方血盾},[3]第二回合{..} ...[end]结果
        //                                         var npcTitle = '';
        //                                         var npcName = '';
        //                                         var npcLv = '';
        //                                         var npcRate = 0;
        //                                         var npcSKL = '';
        //                                         var meName = 'null';
        //                                         var meSKL = 'null';
        //                                         var isNpc = 1;
        //                                         try{
        //                                             localStorage.setItem('title',infoList[0].getElementsByClassName('fyg_mp0 fyg_tc')[0].innerText);
        //                                             npcTitle = infoList[0].getElementsByClassName('fyg_mp0 fyg_tc')[1].innerText;
        //                                         }catch(err){return;}
        //                                         switch(npcTitle[npcTitle.length-1]){
        //                                             case '人':npcSKL = '三连击';npcName='MU';break;
        //                                             case '蛛':npcSKL = '剧毒蛛网';npcName='ZHU';break;
        //                                             case '灵':npcSKL = '灵魂爆燃';npcName='DENG';break;
        //                                             case '兽':npcSKL = '肉球嘲讽';npcName='SHOU';break;
        //                                             default: isNpc = 0; //只统计NPC
        //                                         }

        //                                         var meProba = {'CRT':0,'SKL':0,'SUM':0};
        //                                         var npcProba = {'CRT':0,'SKL':0,'SUM':0};


        //                                         if(isNpc){
        //                                             switch(localStorage.getItem('cardName')){
        //                                                 case '琳':meSKL = '爆裂双刃';meName='LIN';break;
        //                                                 case '艾':meSKL = '烈焰宝石';meName='AI';break;
        //                                                 case '默':meSKL = '魔力压制';meName='MO';break;
        //                                                 case '梦':meSKL = '星轮逆转';meName='MENG';break;
        //                                             }
        //                                             switch(npcTitle[0]){
        //                                                 case '超':npcRate = 3;;break;
        //                                                 case '大':npcRate = 2;break;
        //                                                 case '强':npcRate = 1;break;
        //                                                 default:npcRate = 0;
        //                                             }
        //                                             npcLv = npcTitle.match(/.?(\d+)./)[1];
        //                                             //console.log(npcLv);


        //                                             for(let i=2;i<infoList.length-1;i++){
        //                                                 var left=infoList[i].children[0].innerText;
        //                                                 //console.log(left);
        //                                                 var right=infoList[i].children[1].innerText;
        //                                                 //console.log(right);
        //                                                 if(left.indexOf('暴击')!=-1){
        //                                                     meProba.CRT++;
        //                                                 }
        //                                                 if(right.indexOf('暴击')!=-1){
        //                                                     npcProba.CRT++;
        //                                                 }
        //                                                 if(left.indexOf(meSKL)!=-1){
        //                                                     meProba.SKL++;
        //                                                 }
        //                                                 if(right.indexOf(npcSKL)!=-1){
        //                                                     npcProba.SKL++;
        //                                                 }
        //                                             }
        //                                             meProba.SUM = targetNode.firstChild.getElementsByClassName('icon icon-arrow-right text-success').length;
        //                                             npcProba.SUM = targetNode.firstChild.getElementsByClassName('icon icon-arrow-left text-success').length
        //                                             //[卡片名,智力,敏捷,NPC等级,NPC倍率,我方技能数,我方暴击数,我方攻击数,NPC技能数,NPC暴击数,NPC攻击数]
        //                                             var attr = localStorage.getItem('attribute').split(',');
        //                                             var probaArray = new Array(npcName,meName,attr[2],attr[1],npcLv,npcRate,
        //                                                                        meProba.SKL,meProba.CRT,meProba.SUM,npcProba.SKL,npcProba.CRT,npcProba.SUM);
        //                                             localStorage.setItem('over', 0);
        //                                             let pk_i = 0;
        //                                             while(localStorage.getItem(`pk${pk_i}`)!=null){
        //                                                 pk_i++;
        //                                             }
        //                                             localStorage.setItem(`pk${pk_i}`, probaArray.join(','));
        //                                             console.log(`${localStorage.getItem('cardName')}(${localStorage.getItem('attribute')}) vs ${npcTitle}: 该次战斗已保存`);

        //                                         }

        //                                     }
        //                                 };
        //                                 // 创建一个observer示例与回调函数相关联
        //                                 var observer = new MutationObserver(callback);
        //                                 //使用配置文件对目标节点进行观测
        //                                 observer.observe(targetNode, config);

        //                                 // 停止观测
        //                                 //observer.disconnect();
        //                             }
        //                             else{
        //                                 alert(`卡片读取失败,请刷新重试或前往卡片页面手动读取\n当前卡片为:${localStorage.getItem('cardName')}(${localStorage.getItem('attribute')}) 若无误请忽略`);
        //                                 btn1.innerHTML = '提交数据';
        //                             }
        //                         }
        //                     })

        //                 }
        //             })
        //         }
        //         catch(err){
        //             console.log(err);
        //             alert(`卡片读取失败,请刷新重试或前往卡片页面手动读取\n当前卡片为:${localStorage.getItem('cardName')}(${localStorage.getItem('attribute')}) 若无误请忽略`);
        //             btn1.innerHTML = '提交数据';
        //         }
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址