// ==UserScript== // @author DreamChaser // @description 快速下注,自动签到,查看积分,自动抢积分,查看地图详情,查看竞猜信息,快速压鱼丸、快速发弹幕。 // @icon https://apic.douyucdn.cn/upload/avatar/002/86/30/15_avatar_big.jpg // @name 超级小桀房间小助手 // @version 1.5.4 // @match https://www.douyu.com/cave // @match https://www.douyu.com/0* // @match https://www.douyu.com/1* // @match https://www.douyu.com/2* // @match https://www.douyu.com/3* // @match https://www.douyu.com/4* // @match https://www.douyu.com/5* // @match https://www.douyu.com/6* // @match https://www.douyu.com/7* // @match https://www.douyu.com/8* // @match https://www.douyu.com/9* // @match https://www.douyu.com/topic/* // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_notification // @namespace https://greasyfork.org/zh-CN/users/285196-dreamchaser // @require https://code.jquery.com/jquery-2.1.4.min.js // @connect xiaojie666.com // @connect open.douyucdn.cn // @downloadURL none // ==/UserScript== var x,y; var dragFlag = false,sighInFlag = true,giftFlag=true,activateFlag=false,loopFlag=false,qfFlag=false,closeFlag=false; var lastText = "",loopText="",text="",lastLog=""; var nickname = getCookie('acf_nickname'); //var acf_did = getCookie('acf_did'); //var acf_uid = getCookie('acf_username'); //var acf_ltkid = getCookie('acf_ltkid'); //var acf_stk = getCookie('acf_stk'); var n=3,lastGiftNum=0,giftNum=0,lastBetCount=-1,betSelect,ywSelected,color,giftStatusCheck,giftOpen,qf,exqf; var mapsJSON,creditJSON,onlineJSON; var fullTailText=GM_getValue('fullTailText', ''),tailFlag=1; var lastCredit=GM_getValue('lastCredit',-1),myCredit=GM_getValue('myCredit',-1); var log=GM_getValue('log',''); var year,month,date,h,m,s,now,nowYMD,nowHMS; var roomStatus=GM_getValue('lastRoomStatus',0),lastRoomStatus=GM_getValue('lastRoomStatus',-1); var notifyText; var div = document.createElement('div'); var dragDiv=document.getElementById("drag"); div.setAttribute('id', 'newDiv'); div.style.setProperty('position', 'fixed'); div.style.setProperty('width', '258px'); div.style.setProperty('background', 'rgba(222, 222, 222, 0.8)'); div.style.setProperty('left', '75%'); div.style.setProperty('top', '10%'); div.style.setProperty('border', '1px solid #96c2f1'); div.style.setProperty('z-index', '999'); div.style.setProperty('box-shadow', '0 1px 5px 4px #888888'); document.body.appendChild(div); div.style.left = GM_getValue('left','75%'); div.style.top = GM_getValue('top','10%'); $("#autoqf").prop("checked",GM_getValue('autoqf',false)); $("#autoqd").prop("checked",GM_getValue('autoqd',false)); $("#enter").prop("checked",GM_getValue('enter',false)); $("#onlinenotify").prop("checked",GM_getValue('onlineNotify',false)); $(document).keypress(function(event){ if(event.keyCode ==13&&document.getElementById("enter").checked){ $("#bnt_chatsend").trigger("click"); } }); var arr=new Array("bnt_getcredit","bnt_joingroup","bnt_vip","#抢分","#入团","#购买会员"); betMess(); creditMess(); mapsMess(); online(); notify(); var intervalTime=3000; $(document).ready(function (){ setInterval(function(){ creditMess(); mapsMess(); logMess(); online(); if(document.getElementById("autoqd").checked) { sighIn(); } if(document.getElementById("loop").checked&&loopFlag){ loopDanmu(); } else{ loopFlag=false; } },5000); setInterval(function(){ if(document.getElementById("loop").checked&&loopFlag){ loopDanmu(); } else{ loopFlag=false; } },intervalTime); setInterval(function(){ GM_setValue('autoqf', document.getElementById("autoqf").checked); GM_setValue('autoqd', document.getElementById("autoqd").checked); GM_setValue('enter', document.getElementById("enter").checked); GM_setValue('loop', document.getElementById("loop").checked); GM_setValue('random', document.getElementById("random").checked); GM_setValue('onlineNotify', document.getElementById("onlinenotify").checked); giftStatusCheck=$('div.TreasureStatus-text').length; giftOpen=$('.TreasureStatus-bg.is-open').length; if(giftStatusCheck==0){ giftFlag = true; } if( document.getElementById("autoqf").checked) { exGiftCheck(); if (giftFlag){ giftCheck(); } } betMess(); },1000); }); function getNow() { function fix (s){ return s < 10 ? '0' + s: s; } var myDate = new Date(); year=myDate.getFullYear(); month=fix(myDate.getMonth()+1); date=fix(myDate.getDate()); h=fix(myDate.getHours()); m=fix(myDate.getMinutes()); s=fix(myDate.getSeconds()); now=year+'-'+month+"-"+date+" "+h+':'+m+":"+s; nowYMD=year+'-'+month+"-"+date; nowHMS=h+':'+m+":"+s; } function notify() { var notificationDetails={ text: (function(){ /* *人 @绝版石头 *嘉嘉 @苹果DY 匿名大佬 *玮灏 *超群 *友 *迪鑫 *永寿 点我查看新版本预告、tips、支持!*/}).toString().split('/*')[1].split('*/')[0], title: "感谢以下水友对本插件的支持", image: "https://apic.douyucdn.cn/upload/avatar/002/86/30/15_avatar_big.jpg", onclick: function () { window.open("https://note.youdao.com/ynoteshare1/index.html?id=a667b6a4cf64b3c053ee091d448f2891&type=note"); } } var lastDate=GM_getValue('date', 0); getNow(); GM_setValue('date', nowYMD); if(nowYMD != lastDate){ GM_notification(notificationDetails); compareCredit(lastDate); lastRoomStatus=-1; } } function hide(){ var a=document.getElementById("hidecredit").checked,b=document.getElementById("hidemaps").checked,c=document.getElementById("hideinstructions").checked,d=document.getElementById("hidedanmu").checked,e=document.getElementById("hideqfqd").checked,f=document.getElementById("hidebet").checked,g=document.getElementById("hidelog").checked; var arr1=new Array(a,b,c,d,e,f,g,"credit","maps","instructions","danmu","qfqd","bet","log"); var arr2=new Array(a,b,c,d,e,f,g,"#hidecredit","#hidemaps","#hideinstructions","#hidedanmu","#hideqfqd","#hidebet","#hidelog"); var trueheight=$('section#drag').outerHeight(true)+$('section#hide').outerHeight(true),height; for (var i=0;i<7;i++){ GM_setValue(arr2[i+7], arr2[i]); var name="section#"+arr1[i+7] height=$(name).outerHeight(true); if(arr1[i]&&height!=null){ $(name).show(); trueheight+=height; } else{ $(name).hide(); } } $("#newDiv").css("height",trueheight+7); } function addEvent(id,str) { document.getElementById(id).addEventListener('click', function (event) { danmu(str); }, false); } function renew() { creditMess(); mapsMess(); betMess(); online(); } function online(){ GM_xmlhttpRequest({ method: "GET", url:"http://open.douyucdn.cn/api/RoomApi/room/74751", onload:function(response){ onlineJSON=JSON.parse(response.responseText); roomStatus=onlineJSON.data.room_status; if(onlineJSON.data.room_status =="1"){ $('span#online').text('直播中'); $('span#online').css('color','red'); } else{ $('span#online').text('已下播'); $('span#online').css('color','blue'); } } }) if(roomStatus!=lastRoomStatus){ if(roomStatus==1){ if(document.getElementById("onlinenotify").checked){ notifyText={ text: (function(){ /*超级小桀已开播,点我直达直播间*/}).toString().split('/*')[1].split('*/')[0], title: "超级小桀房间小助手提醒", image: "https://apic.douyucdn.cn/upload/avatar/002/86/30/15_avatar_big.jpg", onclick: function () { window.open("https://www.douyu.com/74751"); } }; GM_notification(notifyText); } } else{ var close=setInterval(function(){ if(($('span.dy-ModalRadius-close-x').length!=0)){ $('span.dy-ModalRadius-close-x').click(); closeFlag=true; } else { if(closeFlag){ clearInterval(close); close=null; closeFlag=false; } } },3000); } } GM_setValue('lastRoomStatus', roomStatus); lastRoomStatus=roomStatus; }; function creditMess() { if(nickname.length== 0){ $("#showcredit").val( "个人信息:\n暂未查询到您的个人信息。\n请登录您的斗鱼帐号!"); } else{ GM_xmlhttpRequest({ timeout:5000, method: "GET", url: "http://api.xiaojie666.com/xiaojie/credit/query.do?nickName="+nickname , ontimeout:function(response){ $("#showcredit").val( "个人信息:\n当前网络异常或服务器异常,请检查当前网络或登录xiaojie666.com查询服务器状态。" ); }, onload: function(response) { creditJSON = JSON.parse(response.responseText); var viptime=new Date(creditJSON.vipDate),showvipdate; var year = viptime.getFullYear(); var month = viptime.getMonth()+1; var date = viptime.getDate(); if (year == 1970) { showvipdate = '未购买'; } else { showvipdate = year + "年" + month+"月" + date+"日"; } $("#showcredit").val( "个人信息:\n昵称:" + creditJSON.nickName + "\n总赚得积分:" + creditJSON.earnedCredit + "\n历史最高积分:" + creditJSON.maxCredit + "\n当前积分:" + creditJSON.credit+ "\n会员到期时间:"+ showvipdate); if(lastCredit!=creditJSON.credit){ var diffCredit=creditJSON.credit-lastCredit; diffCredit>0 ? diffCredit="+"+diffCredit :diffCredit; getNow(); GM_setValue('lastCredit', creditJSON.credit); lastCredit=GM_getValue('lastCredit', 0); log=nowHMS+" "+diffCredit+"积分 当前积分为:"+creditJSON.credit+"\n"+log; } }, }); } } function mapsMess() { GM_xmlhttpRequest({ timeout:5000, method: "GET", url: "http://api.xiaojie666.com/xiaojie/levelrecord/list.do?page=0&rows=1", ontimeout:function(response){ $("#showmaps").val( "地图信息:\n当前网络异常或服务器异常,请检查当前网络或登录xiaojie666.com查询服务器状态。" ); }, onload:function(response) { mapsJSON = JSON.parse(response.responseText); var lifetime=mapsJSON.levelRecords[0].lifeTime,showpassdate; if (lifetime == null) { showpassdate = '未知'; } else { var min= parseInt(lifetime/60); var sec= lifetime%60; showpassdate = min+ "分" + sec+"秒"; } $("#showmaps").val("地图信息:\nID:" + mapsJSON.levelRecords[0].levelId + "\n国家:"+ mapsJSON.levelRecords[0].creator_ntd_origin_zh + "\n尝试次数:"+mapsJSON.levelRecords[0].attempts + "\n通过率:"+(mapsJSON.levelRecords[0].clearrate * 100).toFixed(2) + "%"+ "\n地图名:" + mapsJSON.levelRecords[0].name_zh + "\n通关用时:" +showpassdate); } }); } function logMess() { if(log!=lastLog) { lastLog=log; GM_setValue('log', log); } $("textarea#log").val("日志信息:\n"+log); } function cleanLog() { GM_setValue('log', ''); log=""; logMess(); } function fullMapsMess(){ window.open("https://supermariomakerbookmark.nintendo.net/courses/"+ mapsJSON.levelRecords[0].levelId); } function donate(){ window.open("http://note.youdao.com/noteshare?id=a667b6a4cf64b3c053ee091d448f2891&sub=EDF425F0960048C798AE3FAD1F4B20D6"); } function help(){ alert((function(){ /* 显示:将你要显示的功能模块旁边的勾选框打上√,则会显示相应的功能模块,反之则隐藏。 #签到:输入签到可以获得一定积分,具体获得的积分数量与斗鱼等级,是否加入粉丝团以及是否购买会员有关,每天整点例如5点的前后5分钟可以签到,每半小时可以签到一次。 #抢分:有散分或者直播间有飞机以上的礼物的时候, 可以输入此命令来随机获得一定的积分。 #入团:在主播开启一轮新团战之前可以输入此命令,会随机挑选99个水友ID参战,获胜的ID会增加积分,使用此命令不消耗积分。 #购买会员:购买会员需要消耗5000积分一次,持续时间1个月,可以多次重复购买,重复购买相当于自动续费,会员期间内,你的签到和送礼获得的积分是直接翻倍的。 #1 5000:1代表投票一号阵营,5000代表下注5000分,#2同理,封盘后不可再压。 普通弹幕:在直播间发送普通弹幕,与在斗鱼聊天框发送内容无区别,不消耗积分。 高级弹幕:在直播间发送从左至右移动的彩色弹幕,需要200积分发能发一次,并且需要历史最高积分大于50000。 上电视:在直播间发送彩色弹幕,一般在屏幕左下角弹出,只有在主播切换到室内镜头画面时才开启这个功能(一般为中午吃饭时),每条消耗10积分。 小尾巴:在自动签到抢分的时候加上自定义内容,如:“抢分/签到+小尾巴+时间 主播你真丑”则每次自动签到的内容为:“#抢分 主播你真丑 2019-4-9 5:00:00”抢分亦如此。PS:小尾巴可以为空。 日志:记录使用插件发送的内容和分数变化情况,每天会有与上次使用插件时的积分对比。 循环发送:重复发送文本框的内容,5S一次,建议配合随机数一起使用。 随机数:当发送内容与上次发送内容重复时,在内容后加入随机数,建议打开此选项,以免发送过快,被误封。 清空日志:仅清除当前日志信息,不会影响对比记录分析。*/}).toString().split('/*')[1].split('*/')[0]); } function sendColor(){ color = $("#color").find("option:selected").text(); switch (color){ case '蓝':$("#bnt_chatsend").css("color","blue");break; case '绿':$("#bnt_chatsend").css("color","green");break; case '粉':$("#bnt_chatsend").css("color","pink");break; case '橙':$("#bnt_chatsend").css("color","orange");break; case '紫':$("#bnt_chatsend").css("color","purple");;break; case '红':$("#bnt_chatsend").css("color","red");break; } } function danmuSelect(){ var danmuselect=$("#danmuselect").find("option:selected").text(); if(danmuselect=='普通弹幕'){ $('#color').attr("disabled","disabled"); $("#bnt_chatsend").css("color","black"); } else{ $("#color").removeAttr("disabled"); sendColor(); } } function chatSend(){ var c; var danmuselect=$("#danmuselect").find("option:selected").text(); text = $('#write').val(); color = $("#color").find("option:selected").text(); if(danmuselect=='普通弹幕'){ c = ''; } else if(danmuselect=='高级弹幕'){ c = '#'+color+ ' '; } else{ c = '#上电视 '+ color + '色 '; } if (text.length==0) { alert(`输入内容为空,请重新输入`); return; } else{ text=c+text; danmu(text); } if(document.getElementById("loop").checked){ loopFlag=true; GM_setValue('loopText',text); } else{ loopFlag=false; } $('#write').val(''); } function select(){ betSelect=$("#betselect").find("option:selected").text(); if(betSelect=='#1'){ $("#bnt_confirm").css("color","red"); } else{ $("#bnt_confirm").css("color","blue"); } } function betCredit(){ betSelect=$("#betselect").find("option:selected").text(); var betcredit=$("#betcredit").find("option:selected").text(); var num; switch (betcredit){ case '全压了':;case '压一半':num='老子'+betcredit;break; case '压1/3':num = parseInt(creditJSON.credit/3);break; case '压1/4':num = parseInt(creditJSON.credit/4);break; case '压1/5':num = parseInt(creditJSON.credit/5);break; } danmu(betSelect + " " + num); } function ywSelect(set,bnt){ ywSelected=$("#"+set).find("option:selected").text(); if(ywSelected=='左边'){ $("#"+bnt).css("color","red"); } else{ $("#"+bnt).css("color","blue"); } } function betYw(set,num,bnt){ var ywnum = $("#"+num).find("option:selected").text(); ywSelected=$("#"+set).find("option:selected").text(); if(ywSelected=='左边'){ switch (bnt){ case 'bnt_ywconfirm':$('div.GuessContItem.is-left:eq(0)').click();break; case 'bnt_ywconfirm1':$('div.GuessContItem.is-left:eq(1)').click();break; case 'bnt_ywconfirm2':$('div.GuessContItem.is-left:eq(2)').click();break; } } else{ switch (bnt){ case 'bnt_ywconfirm':$('div.GuessContItem.is-right:eq(0)').click();break; case 'bnt_ywconfirm1':$('div.GuessContItem.is-right:eq(1)').click();break; case 'bnt_ywconfirm2':$('div.GuessContItem.is-right:eq(2)').click();break; } } switch (ywnum){ case '100':$('.chooseOption:eq(1)').click();break; case '1000':$('.chooseOption:eq(2)').click();break; case '10000':$('.chooseOption:eq(3)').click();break; case 'ALL IN':$('.chooseOption:eq(4)').click();break; } $('div.guessGame--btn.guessGame--btn--sizeM').click(); } function recoverStatus() { var qf=GM_getValue('autoqf',false),qd=GM_getValue('autoqd',false),et=GM_getValue('enter',false),lp=GM_getValue('loop',false),rm=GM_getValue('random',true),oy=GM_getValue('onlineNotify',true); var a=GM_getValue('#hidecredit',true),b=GM_getValue('#hidemaps',true),c=GM_getValue('#hideinstructions',true),d=GM_getValue('#hidedanmu',true),e=GM_getValue('#hideqfqd',true),f=GM_getValue('#hidebet',true),g=GM_getValue('#hidelog',true); var arr=new Array(a,b,c,d,e,f,g,qf,qd,et,lp,rm,oy,"#hidecredit","#hidemaps","#hideinstructions","#hidedanmu","#hideqfqd","#hidebet","#hidelog",'#autoqf','#autoqd',"#enter","#loop","#random","#onlinenotify"); for (var i=0;i<13;i++){ if(arr[i]) { $(arr[i+13]).prop("checked",true); } else { $(arr[i+13]).prop("checked",false); } } hide(); } function betMess() { var betcount=$('.GuessGameBox').length; var height,i; if(betcount!=lastBetCount){ if(betcount==0) { div.style.setProperty('height', height+'px'); div.innerHTML = (function(){/*

超级小桀房间小助手

 个人信息      地图信息      功能指令

 弹幕发送      抢分签到      竞猜信息

 日志信息   

 Enter发送  循环发送  随机数

 自动抢分      自动签到      在播通知

*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); lastBetCount=betcount; for (i=0;i

超级小桀房间小助手

 个人信息      地图信息      功能指令

 弹幕发送      抢分签到      竞猜信息

 日志信息   

 Enter发送  循环发送  随机数

 自动抢分      自动签到      在播通知

*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); lastBetCount=betcount; for (i=0;i

超级小桀房间小助手

 个人信息      地图信息      功能指令

 弹幕发送      抢分签到      竞猜信息

 日志信息   

 Enter发送  循环发送  随机数

 自动抢分      自动签到      在播通知

*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); lastBetCount=betcount; for (i=0;i

超级小桀房间小助手

 个人信息      地图信息      功能指令

 弹幕发送      抢分签到      竞猜信息

 日志信息   

 Enter发送  循环发送  随机数

 自动抢分      自动签到      在播通知

*/}).toString().split('/*')[1].split('*/')[0].replace(/[\n]/g, ''); lastBetCount=betcount; for (i=0;i5){ clearInterval(qf); qf=null; } },1200); } } function exGiftCheck(){ if ($('span.TreasureNum-val').length!=0){ giftNum=$('span.TreasureNum-val').text(); if (giftNum>lastGiftNum){ lastGiftNum=giftNum; giftFlag = false; clearInterval(qf); qf=null; clearInterval(exqf); exqf=null; var i=0; danmu(fullTail("#抢分")); exqf=setInterval(function(){ danmu(fullTail("#抢分")); i++; if(i>5){ clearInterval(exqf); exqf=null; } },1200); } else{ lastGiftNum=giftNum; } } else{ lastGiftNum=1; } } function compareCredit(str){ myCredit=GM_getValue('myCredit',-1); if(myCredit!=lastCredit){ var diffCredit=lastCredit-myCredit; diffCredit>0 ? diffCredit="+"+diffCredit :diffCredit; getNow() lastCredit=GM_getValue('lastCredit', 0); GM_setValue('myCredit', lastCredit); log="今天相对上次使用本插件时("+str+")"+diffCredit+"积分 当前积分为:"+lastCredit+"\n"+nowYMD+"\n\n"+log; } else{ if(myCredit==-1){ log="初次使用,对比记录分析将在次日生成,数据初始化...\n"+nowYMD; lastCredit=0; creditMess(); setTimeout(function(){ GM_setValue('myCredit', lastCredit); }, 10000); } else{ log="今天相对上次使用本插件时("+str+")"+"积分无变化,当前积分为:"+lastCredit+"\n"+nowYMD+"\n\n"+log; } } } function danmu(str){ if($('div.ChatSend-button').text()=='发送'||$('div.ChatSend-button').text()=='开火'){ if(document.getElementById("random").checked){ str = (str == lastText ?str + " " + Math.ceil(Math.random()*5):str); } $(".ChatSend-txt").val(str); $('div.ChatSend-button').click(); lastText = str; getNow(); log=nowHMS+" 发送:"+lastText+"\n"+log; } } function loopDanmu(){ text = GM_getValue('loopText',"小助手NB"); danmu(text); } function getCookie(cname){ var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i