您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
剥削者的小助手
当前为
// ==UserScript== // @name 咕咕镇剩余价值收割机 // @namespace https://greasyfork.org/zh-CN/users/453092 // @version 2.09 // @description 剥削者的小助手 // @author ikarosf // @match https://www.guguzhen.com/fyg_pk.php // @grant GM_xmlhttpRequest // @require https://greasyfork.org/scripts/409864-url-gbk-%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81%E5%BA%93/code/URL%20GBK%20%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81%E5%BA%93.js?version=840815 // ==/UserScript== (function() { 'use strict'; var debugmode = false; if(localStorage.getItem('dataReward')==null){ localStorage.setItem('dataReward','{"sumShell":"0","sumExp":"0"}'); } var goxing = false; var mainHost = "https://bbs.fygal.com/" if(localStorage.getItem('mainHost')!==null){ mainHost = localStorage.getItem('mainHost'); } var autogox=false; var maxap=999; var maxrank=999; if(localStorage.getItem('maxap')!==null){ maxap = parseInt(localStorage.getItem('maxap')); } if(localStorage.getItem('maxrank')!==null){ maxrank = parseInt(localStorage.getItem('maxrank')); } //var audio = new Audio("https://cdnringhlt.shoujiduoduo.com/ringres/user/a24/564/9246564.aac"); //audio.load(); var Num = 0; var goxNum = 0; var beike=0; var jingyan=0; if(localStorage.getItem('flashtime')===null){ localStorage.setItem('flashtime',10 ); } var maxtime = 10; maxtime = parseInt(localStorage.getItem('flashtime')); var time = maxtime; var myrank = -100; var myap=-100; var changeLog = []; let autoconfig = document.createElement('div'); let autoconfigranklabel = document.createElement('i'); autoconfigranklabel.innerText = "进度不低于:"; autoconfig.appendChild(autoconfigranklabel); let autoconfigrank = document.createElement('input'); autoconfigrank.setAttribute('type','text'); autoconfigrank.setAttribute('oninput',"value=value.replace(/[^\\d]/g,'')"); autoconfigrank.setAttribute('style',"width: 40px;margin-right:15px;"); autoconfigrank.value = maxrank; autoconfigrank.onchange = function(){ maxrank = autoconfigrank.value; autoconfigcheckbox.checked = false; localStorage.setItem('maxrank',maxrank ); }; autoconfig.appendChild(autoconfigrank); let autoconfigaplabel = document.createElement('i'); autoconfigaplabel.innerText = "体力不低于:"; autoconfig.appendChild(autoconfigaplabel); let autoconfigap = document.createElement('input'); autoconfigap.setAttribute('type','text'); autoconfigap.setAttribute('oninput',"value=value.replace(/[^\\d]/g,'')"); autoconfigap.setAttribute('style',"width: 40px;margin-right:15px;"); autoconfigap.value=maxap; autoconfigap.onchange = function(){ maxap = autoconfigap.value; autoconfigcheckbox.checked = false; localStorage.setItem('maxap',maxap ); }; autoconfig.appendChild(autoconfigap); let autoconfigcheckbox = document.createElement('input'); autoconfigcheckbox.setAttribute('type','checkbox'); autoconfig.appendChild(autoconfigcheckbox); let autoconfigcheckboxtext = document.createElement('i'); autoconfigcheckboxtext.innerText = "自动搜刮"; autoconfigcheckboxtext.setAttribute('style',"margin-right:20px;"); autoconfig.appendChild(autoconfigcheckboxtext); let setflashtime = document.createElement('input'); setflashtime.type = "button"; setflashtime.value = "设置刷新间隔"; setflashtime.setAttribute('style',"margin-right:20px;"); setflashtime.addEventListener('click',function() { var newtime = parseInt(prompt("新的刷新间隔:",maxtime)); if(!isNaN(newtime)&&newtime>0){ localStorage.setItem('flashtime',newtime ); maxtime = newtime; time = newtime; } },false); autoconfig.appendChild(setflashtime); let setmainHost = document.createElement('input'); setmainHost.type = "button"; setmainHost.value = "设置主站域名"; setmainHost.addEventListener('click',function() { var newmainHost = prompt("格式如https://bbs.fygal.com/",mainHost); if(newmainHost!=null&&newmainHost!=""){ localStorage.setItem('mainHost',newmainHost ); mainHost = newmainHost; } },false); autoconfig.appendChild(setmainHost); document.getElementsByClassName('panel panel-primary')[1].appendChild(autoconfig); let progresschange = document.createElement('div'); progresschange.setAttribute('id','progresschange'); progresschange.setAttribute('class','panel-body'); document.getElementsByClassName('panel panel-primary')[1].appendChild(progresschange); function getNowtime(){ var date=new Date(); var datetext = date.getHours()+":"+date.getMinutes()+":"+date.getSeconds(); return datetext; } function dlog(text){ if(debugmode){console.log(text)} } function getPostData(p1,p2){ let data = -1; for(let s of document.getElementsByTagName('script')){ let func = s.innerText.match(p1) if(func!=null){ data = func[0].match(p2)[0]; break; } } return data } function postRequest(){ GM_xmlhttpRequest({ method: 'POST', url: `https://www.guguzhen.com/fyg_read.php`, headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, data: 'f=12', onload: response => { Num++; let newrank = parseInt(response.responseText.match(/class="fyg_colpz02" style="font-size:32px;font-weight:900;">[0-9]+%</)[0].match(/[0-9]+%/)[0]); let newap = parseInt(response.responseText.match(/class="fyg_colpz03" style="font-size:32px;font-weight:900;">[0-9]+</)[0].match(/>[0-9]+</)[0].slice(1,-1)); if(myrank == -100){ myrank = newrank; } else if(newrank != myrank){ document.getElementsByClassName('fyg_colpz02')[0].innerText = newrank + "%"; changeLog.push(getNowtime()+" "+myrank+"%->"+newrank + "%") myrank = newrank; //audio.play(); /*var my_url = location.href; var newwin = window.open(my_url, '进度变动', 'resizable=no')*/ } if(myap == -100){ myap = newap; } else if(newap != myap){ document.getElementsByClassName('fyg_colpz03')[0].innerText = newap; myap = newap; } if(autoconfigcheckbox.checked&&newap>=10&&newrank>=1&&newap>=maxap&&newrank>=maxrank&&goxing==false){ maxtime = 1; time = 1; goxNum++; let gox_data = getPostData(/gox\(\)\{[\s\S]*\}/m,/data: ".*"/).slice(7,-1); goxing = true; GM_xmlhttpRequest({ method: 'POST', url: `https://www.guguzhen.com/fyg_click.php`, headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}, data: gox_data, onload: response => { goxing = false; if(response.status === 200){ console.log(response.responseText); if(response.responseText.slice(0,2)=='获得'){ let info = response.responseText.slice(0,response.responseText.indexOf('<')); let div_info = document.createElement('div'); div_info.innerText = info; changeLog.push(getNowtime() + " " + info) let dataReward = JSON.parse(localStorage.getItem('dataReward')); if(info.indexOf('贝壳')!=-1){ beike++; dataReward.sumShell++; } else if(info.indexOf('经验')!=-1){ jingyan++; dataReward.sumExp++; } localStorage.setItem('dataReward',JSON.stringify(dataReward)); document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info); } else{ let div_info = document.createElement('div'); div_info.innerText = '段位进度不足'; changeLog.push(getNowtime() + " " + '段位进度不足,搜刮失败') document.getElementsByClassName('btn-outline-secondary')[0].parentNode.appendChild(div_info); } } else{ console.log('返回状态码非200') changeLog.push(getNowtime() + " " + '返回状态码非200') console.log(response.responseText); } }, onerror : function(err){ goxing = false; console.log('发送搜刮请求出错') changeLog.push(getNowtime() + " " + '发送搜刮请求出错') console.log(err) }, ontimeout : function(){ goxing = false; } }); }else{ maxtime = parseInt(localStorage.getItem('flashtime')); time = maxtime; //console.log(123) } progresschange.innerText = getChangeLogText(); /* else{ document.getElementsByClassName('fyg_colpz02')[0].innerText = newrank; }*/ } }); } function read_rank(){ if(--time!=0){ document.getElementsByClassName('panel-heading')[0].innerText = "刷新进度倒计时 "+time; }else{ document.getElementsByClassName('panel-heading')[0].innerText = "刷新进度倒计时 "+0; time = maxtime; postRequest(); } } function getChangeLogText(){ let LogText = ""; LogText += "刷新次数: " +Num + "\n"; LogText += "[搜刮次数: " +goxNum +"] [贝壳:"+beike+"] [经验:"+jingyan+ "]\n"; if(changeLog.length == 0){ LogText += "未出现进度变动" } else{ for(var i = 0;i<changeLog.length;i++){ LogText += changeLog[i] + "\n" } } return LogText; } postRequest(); setInterval(read_rank,"1000"); var get_user_theard_try_num = 0; function show_battle_log(text){ document.getElementsByClassName('panel-heading')[1].innerText = text; } function get_user_theard(name,enemydiv){ var search_name = $URL.encode(name); GM_xmlhttpRequest({ method: "post", url: mainHost+'search.php', data: 'step=2&method=AND&sch_area=0&s_type=forum&f_fid=all&orderway=lastpost&asc=DESC&keyword=&pwuser='+search_name, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, onload: function(res){ if(res.status === 200){ let info = res.responseText; let firstindex = info.indexOf("共搜索到"); if(firstindex == -1){ if( info.indexOf("用户不存在")!=-1){ show_battle_log('用户'+name+'不存在'); get_user_theard_try_num = 0; return; } if( info.indexOf("你所属的用户组不能使用搜索功能")!=-1){ show_battle_log('主站域名错误或无权限'); get_user_theard_try_num = 0; return; } console.log('搜索尝试次数:' + get_user_theard_try_num) if(info.indexOf("搜索排队中")!=-1&&get_user_theard_try_num<3){ get_user_theard_try_num++; setTimeout(get_user_theard,2000,name,enemydiv) }else{ console.log(info) get_user_theard_try_num = 0; show_battle_log('找不到'+name+'的帖子') } return; } let secondindex = info.indexOf("共搜索到",firstindex+1); info = info.substring(firstindex,secondindex) var theards=info.match(/read\.php.+?(?=" )/g) get_user_mainpage(theards,enemydiv); }else{ show_battle_log('搜索对手帖子失败') console.log(res) } }, onerror : function(err){ show_battle_log('搜索对手帖子错误,可能域名设置格式不正确') console.log(err) } }); } function get_user_mainpage(theards,enemydiv){ if(theards==null||theards.length<1){ show_battle_log('找不到对手的帖子') return} var theard = theards[0]; GM_xmlhttpRequest({ method: "get", url: mainHost+theard , headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, onload: function(res){ if(res.status === 200){ let info = res.responseText; let firstindex = info.indexOf("楼主"); info = info.substring(0,firstindex) var mainpage=info.match(/profile\.php\?action=show.+?(?=" )/g) get_user_LV(mainpage,enemydiv); }else{ show_battle_log('获取对手主页失败') console.log(res) } }, onerror : function(err){ show_battle_log('获取对手主页错误') console.log(err) } }); } function get_user_LV(mainpages,enemydiv){ if(mainpages==null||mainpages.length<1){ show_battle_log('找不到对手的主页') return} var mainpage = mainpages[0]; GM_xmlhttpRequest({ method: "get", url: mainHost+mainpage , headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, onload: function(res){ if(res.status === 200){ let info = res.responseText; var level = info.match(/(?<=神秘系数:)\d+/g)[0] enemydiv.innerHTML = enemydiv.innerHTML.replace(enemydiv.innerText, '<a target="_blank" href='+mainHost+mainpage+'>'+enemydiv.innerText + " Lv:" + level+ '</a>') show_battle_log("获取对手系数成功") }else{ show_battle_log('进入对手主页失败') console.log(res) } }, onerror : function(err){ show_battle_log('进入对手主页错误') console.log(err) } }); } let observerBody1 = new MutationObserver(()=>{ var pkTextDiv = document.querySelector("#pk_text"); var enemydivs = pkTextDiv.querySelectorAll("h3.fyg_mp0"); if(enemydivs==null||enemydivs.length<2){return;} var enemydiv = enemydivs[1]; var enemyname = enemydiv.innerText; if(enemyname.indexOf("等级 -")!=-1){return} if(enemyname.indexOf("ikarosf")!=-1){changeLog.push(getNowtime() + " 你挑战了作者,有趣的男人")} get_user_theard(enemyname,enemydiv); }); observerBody1.observe(document.querySelector("#pk_text"), {characterData: true,childList: true}); // Your code here... })();