// ==UserScript==
// @author DreamChaser
// @description 快速下注,自动签到,自动抢分,查积分,地图通过率,查竞猜信息,快速压鱼丸。
// @icon https://apic.douyucdn.cn/upload/avatar/002/86/30/15_avatar_big.jpg
// @name 超级小桀房间助手
// @version 1.4.1
// @match https://www.douyu.com/74751
// @match https://www.douyu.com/cave
// @grant GM_xmlhttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @namespace http://greasyfork.icu/zh-CN/users/285196-dreamchaser
// @require http://greasyfork.icu/scripts/380755-serversrc/code/ServerSrc.js?version=682465
// @require https://code.jquery.com/jquery-2.1.4.min.js
// @connect xiaojie666.com
// ==/UserScript==
var dragFlag = false;
var x,y;
var yiqian = true;
var lastText = "";
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 HTMLflag=0,n=7,lastgiftnum=0,giftnum=0,lastbetcount=0,betselect,exgifttime,color,text;
var giftflag=true,activateflag=false;
var mapsjson,creditjson;
var div = document.createElement('div');
div.setAttribute('id', 'newDiv');
div.innerHTML = "<section id=\'dragsection\' readonly='value'style='background:white'><p style='font-weight: bold;height: 30px;text-align: center'>超级小桀房间助手 v1.4.1<input type=\'button\' id=\'bnt_donation\' style='width:65px;margin-top: 4px;margin-left:7px;margin-right: auto;font-weight: bold;color:red;' value=\'支持一下\'></p></section><textarea id='showcredit' style='margin-top:7px;height:95px;width:203px;margin-left:7px;line-height:12pt;overflow:hidden' readonly='value'></textarea><textarea id='showmaps' style='margin-top:5px;height:128px;width:203px;margin-left:7px;line-height:12pt;overflow:hidden' readonly='value'></textarea><input type=\'button\' id=\'bnt_fullmapsmess\' style='width:65px;margin-top:5px;margin-left:7px' value=\'地图详情\'><input type=\'button\' id=\'bnt_help\' style='width:65px;margin-top:5px;margin-left:7px' value=\'帮助\'><input type=\'button\' id=\'bnt_renew\' style='width:65px;margin-top:5px;margin-left:7px' value=\'刷新\'><input type=\'button\' id=\'bnt_getcredit\' style='width:65px;margin-top:5px;margin-left:7px' value=\'#抢分\'><input type=\'button\' id=\'bnt_joingroup\' style='width:65px;margin-left:7px' value=\'#入团\'><input type=\'button\' id=\'bnt_vip\' style='width:65px;margin-top:5px;margin-left:7px' value=\'#购买会员\'><select id=\'betselect\' style='height:22px;width:65px;margin-top:5px;margin-left:7px'><option style='color:red'>#1</option><option style='color:blue'>#2</option></select><select id=\'betcredit\' style='height:22px;width:65px;margin-top:5px;margin-left:7px'><option>全压了</option><option>压一半</option><option>压1/3</option><option>压1/4</option><option>压1/5</option></select><input type=\'button\' id=\'bnt_confirm\' style='height:22px;width:65px;margin-top:5px;margin-left:7px;color:red' value=\'压分\'><textarea id='write' style='margin-top:10px;height:30px;width:203px;margin-left:7px;line-height:12pt;overflow:hidden' placeholder=\"请输入要发送的弹幕内容\"></textarea><select id=\'danmuselect\' style='height:22px;width:65px;margin-top:5px;margin-left:7px'><option>普通弹幕</option><option>高级弹幕</option><option>上电视</option></select><select id=\'color\' style='height:22px;width:65px;margin-top:5px;margin-left:7px'disabled=\'disabled\'><option style='color:blue'>蓝</option><option style='color:green'>绿</option><option style='color:pink'>粉</option><option style='color:orange'>橙</option><option style='color:purple'>紫</option><option style='color:red'>红</option></select><input type=\'button\' id=\'bnt_chatsend\' style='height:22px;width:65px;margin-top:5px;margin-left:7px' value=\'发送\'><span style='display:block;width:210px;margin-top:5px;margin-left:7px'><input class='magic-checkbox' type='checkbox' id='autoqf' style='height:17px;width:17px;vertical-align: text-top;margin-left:15px;'> 自动抢分<input class='magic-checkbox' type='checkbox' id='autoqd' style='height:17px;width:17px;vertical-align: text-top;margin-left:38px;'> 自动签到</span>";
div.style.setProperty('position', 'fixed');
div.style.setProperty('width', '223px');
div.style.setProperty('height', '473px');
div.style.setProperty('background', '#eff7ff');
div.style.setProperty('left', '80%');
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','80%');
div.style.top = GM_getValue('top','10%');
$("#autoqf").prop("checked",GM_getValue('autoqf',false));
$("#autoqd").prop("checked",GM_getValue('autoqd',false));
$(document).keypress(function(event){
if(event.keyCode ==13){
chatsend();
}
});
var arr=new Array("bnt_getcredit","bnt_joingroup","bnt_vip","#抢分","#入团","#购买会员");
creditmess();
betmess();
mapsmess();
//activation();
$(document).ready(function () {
setTimeout(function(){
if(activateflag)
{
for (var i=0;i<n;i++){
addevent(arr[i],arr[i+n])
}
activation();
activateflag=false;
}
},5000)
});
setInterval(
function(){
creditmess();
mapsmess();
if(document.getElementById("autoqd").checked) {
qd();
}
},5000);
setInterval(
function(){
GM_setValue('autoqf', document.getElementById("autoqf").checked);
GM_setValue('autoqd', document.getElementById("autoqd").checked);
if( document.getElementById("autoqf").checked) {
exgiftcheck();
}
betmess();
},1000);
var gifttime=setInterval(
function(){
if( document.getElementById("autoqf").checked) {
if (giftflag){
giftcheck();
}
}
},1000);
function addevent(id,str) {
if(id=="bnt_leftyw100"|| id=="bnt_leftyw1000"||id=="bnt_leftyw100a"|| id=="bnt_leftyw1000a" || id=="bnt_leftyw100b"|| id=="bnt_leftyw1000b"){
document.getElementById(id).addEventListener('click', function (event) { betinput_left(str); }, false);}
else if(id=="bnt_rightyw100"|| id=="bnt_rightyw1000"||id=="bnt_rightyw100a"|| id=="bnt_rightyw1000a" || id=="bnt_rightyw100b"|| id=="bnt_rightyw1000b"){
document.getElementById(id).addEventListener('click', function (event) { betinput_right(str); }, false);}
else{
document.getElementById(id).addEventListener('click', function (event) { danmu(str); }, false);}
}
/*function hide() {
$("#betmess").hide();
}*/
function renew() {
creditmess();
mapsmess();
betmess();
}
function creditmess() {
if(nickname.length== 0){
$("#showcredit").val( "个人信息:\n暂未查询到您的个人信息。\n请登录您的斗鱼帐号!");
}
else{
GM_xmlhttpRequest({
method: "GET",
url: "http://api.xiaojie666.com/xiaojie/credit/query.do?nickName="+ nickname,
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);
}
});
}
}
function mapsmess() {
GM_xmlhttpRequest({
method: "GET",
url: "http://api.xiaojie666.com/xiaojie/levelrecord/list.do?page=0&rows=1",
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 fullmapsmess(){
window.open("https://supermariomakerbookmark.nintendo.net/courses/"+ mapsjson.levelRecords[0].levelId);
}
function donation(){
window.open("http://note.youdao.com/noteshare?id=a667b6a4cf64b3c053ee091d448f2891&sub=EDF425F0960048C798AE3FAD1F4B20D6");
}
function help(){
alert(
`#签到:输入签到可以获得一定积分,具体获得的积分数量与斗鱼等级,是否加入粉丝团以及是否购买会员有关,每天整点例如5点的前后5分钟可以签到,每半小时可以签到一次。
#抢分:有散分或者直播间有飞机以上的礼物的时候, 可以输入此命令来随机获得一定的积分。
#入团:在主播开启一轮新团战之前可以输入此命令,会随机挑选99个水友ID参战,获胜的ID会增加积分,使用此命令不消耗积分。
#购买会员:购买会员需要消耗5000积分一次,持续时间1个月,可以多次重复购买,重复购买相当于自动续费,会员期间内,你的签到和送礼获得的积分是直接翻倍的。
#1 5000:1代表投票一号阵营,5000代表下注5000分,#2同理。
高级弹幕:在直播间发送从左至右移动的彩色弹幕,需要200积分发能发一次,并且需要历史积分大于50000。
上电视:在直播间发送彩色弹幕,一般在屏幕左下角弹出,只有在中午吃饭时才开启这个功能,每条消耗10积分。`);
}
function feedback(){
window.open("https://yuba.douyu.com/p/465266791553956937");
}
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(`输入内容为空,请重新输入`);
}
else{
text=c+text;
danmu(text);
$('#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 betmess() {
var betcount=$('.GuessGameBox').length;
if(betcount==0)
{
arr=new Array("bnt_getcredit","bnt_joingroup","bnt_vip","#抢分","#入团","#购买会员");
n=3;
activateflag=true;
}
else{
if(HTMLflag==0){
div.style.setProperty('height', '629px');
div.innerHTML +=" <textarea id='betmess' style='margin-top:10px;height:80px;width:203px;margin-left:7px;line-height:12pt;overflow:hidden' readonly='value'></textarea><input type=\'button\' id=\'bnt_leftyw100\' style='width:101px;margin-top:5px;margin-left:7px;color:red' value=\'左边压100鱼丸\'><input type=\'button\' id=\'bnt_rightyw100\' style='width:100px;margin-left:7px;color:blue' value=\'右边压100鱼丸\'><input type=\'button\' id=\'bnt_leftyw1000\' style='width:101px;margin-top:5px;margin-left:7px;color:red' value=\'左边压1000鱼丸\'><input type=\'button\' id=\'bnt_rightyw1000\' style='width:100px;margin-left:7px;color:blue' value=\'右边压1000鱼丸\'>";
lastbetcount=betcount;
HTMLflag=1;
arr=new Array("bnt_getcredit","bnt_joingroup","bnt_vip","bnt_leftyw100","bnt_rightyw100","bnt_leftyw1000","bnt_rightyw1000","#抢分","#入团","#购买会员","1","1","2","2");
n=7;
activateflag=true;
}
if(betcount==2&&HTMLflag==1||betcount==3&&HTMLflag==1){
div.style.setProperty('height', '782px');
div.innerHTML +=" <textarea id='betmess1' style='margin-top:10px;height:80px;width:203px;margin-left:7px;line-height:12pt;overflow:hidden' readonly='value'></textarea><input type=\'button\' id=\'bnt_leftyw100a\' style='width:101px;margin-top:5px;margin-left:7px;color:red' value=\'左边压100鱼丸\'><input type=\'button\' id=\'bnt_rightyw100a\' style='width:100px;margin-left:7px;color:blue' value=\'右边压100鱼丸\'><input type=\'button\' id=\'bnt_leftyw1000a\' style='width:101px;margin-top:5px;margin-left:7px;color:red' value=\'左边压1000鱼丸\'><input type=\'button\' id=\'bnt_rightyw1000a\' style='width:100px;margin-left:7px;color:blue' value=\'右边压1000鱼丸\'>";
lastbetcount=betcount;
HTMLflag=2;
arr=new Array("bnt_getcredit","bnt_joingroup","bnt_vip","bnt_leftyw100","bnt_rightyw100","bnt_leftyw1000","bnt_rightyw1000","bnt_leftyw100a","bnt_rightyw100a","bnt_leftyw1000a","bnt_rightyw1000a","#抢分","#入团","#购买会员","1","1","2","2","3","3","4","4");
n=11;
activateflag=true;
}
if(betcount==3&&HTMLflag==2){
div.style.setProperty('height', '936px');
div.innerHTML +=" <textarea id='betmess2' style='margin-top:10px;height:80px;width:203px;margin-left:7px;line-height:12pt;overflow:hidden' readonly='value'></textarea><input type=\'button\' id=\'bnt_leftyw100b\' style='width:101px;margin-top:5px;margin-left:7px;color:red' value=\'左边压100鱼丸\'><input type=\'button\' id=\'bnt_rightyw100b\' style='width:100px;margin-left:7px;color:blue' value=\'右边压100鱼丸\'><input type=\'button\' id=\'bnt_leftyw1000b\' style='width:101px;margin-top:5px;margin-left:7px;color:red' value=\'左边压1000鱼丸\'><input type=\'button\' id=\'bnt_rightyw1000b\' style='width:100px;margin-left:7px;color:blue' value=\'右边压1000鱼丸\'>";
lastbetcount=betcount;
HTMLflag=3;
arr=new Array("bnt_getcredit","bnt_joingroup","bnt_vip","bnt_leftyw100","bnt_rightyw100","bnt_leftyw1000","bnt_rightyw1000","bnt_leftyw100a","bnt_rightyw100a","bnt_leftyw1000a","bnt_rightyw1000a","bnt_leftyw100b","bnt_rightyw100b","bnt_leftyw1000b","bnt_rightyw1000b","#抢分","#入团","#购买会员","1","1","2","2","3","3","4","4","5","5","6","6");
n=15;
activateflag=true;
}
}
switch(betcount){
case 3:
$("#betmess2").val("竞猜信息:\n" + $('div.boxLeft:eq(2)').text() + "\n左边:" + $('p.GuessContItem-itemTitle:eq(4)').text() + " " + $('p.GuessContItem-itemLoss:eq(4)').text() + "\n右边:" + $('p.GuessContItem-itemTitle:eq(5)').text() + " " + $('p.GuessContItem-itemLoss:eq(5)').text() + "\n" + $('.bidNumLeft:eq(2)').text() + " VS " + $('.bidNumRight:eq(2)').text());
case 2:
$("#betmess1").val("竞猜信息:\n" + $('div.boxLeft:eq(1)').text() + "\n左边:" + $('p.GuessContItem-itemTitle:eq(2)').text() + " " + $('p.GuessContItem-itemLoss:eq(2)').text() + "\n右边:" + $('p.GuessContItem-itemTitle:eq(3)').text() + " " + $('p.GuessContItem-itemLoss:eq(3)').text() + "\n" + $('.bidNumLeft:eq(1)').text() + " VS " + $('.bidNumRight:eq(1)').text());
case 1:
$("#betmess").val("竞猜信息:\n" + $('div.boxLeft:eq(0)').text() + "\n左边:" + $('p.GuessContItem-itemTitle:eq(0)').text() + " " + $('p.GuessContItem-itemLoss:eq(0)').text() + "\n右边:" + $('p.GuessContItem-itemTitle:eq(1)').text() + " " + $('p.GuessContItem-itemLoss:eq(1)').text() + "\n" + $('.bidNumLeft:eq(0)').text() + " VS " + $('.bidNumRight:eq(0)').text() );break;
case 0:
$("#betmess").val("竞猜信息:\n" + "暂未获取到竞猜信息或主播暂未发起竞猜!");break;
}
}
function activation(){
var newDiv=document.getElementById("dragsection");
newDiv.addEventListener("mouseover", over,false);
newDiv.addEventListener('mousedown', down, false);
newDiv.addEventListener('mousemove', move, false);
newDiv.addEventListener('mouseup', up, false);
document.getElementById('bnt_donation').addEventListener('click', function (event) { donation(); }, false);
document.getElementById('bnt_fullmapsmess').addEventListener('click', function (event) { fullmapsmess(); }, false);
document.getElementById('bnt_renew').addEventListener('click', function (event) { renew(); }, false);
document.getElementById('bnt_confirm').addEventListener('click', function (event) { betcredit(); }, false);
document.getElementById('bnt_help').addEventListener('click', function (event) { help(); }, false);
document.getElementById('betselect').addEventListener('click', function (event) { select(); }, false);
document.getElementById('bnt_chatsend').addEventListener('click', function (event) { chatsend(); }, false);
document.getElementById('color').addEventListener('click', function (event) { sendcolor(); }, false);
document.getElementById('danmuselect').addEventListener('click', function (event) { danmuselect(); }, false);
}
function over(e) {
div.style.cursor="move"
}
function down(e) {
e = e || window.event;
x = e.clientX - div.offsetLeft;
y = e.clientY - div.offsetTop;
dragFlag = true;
}
function move(e) {
if (dragFlag) {
div.style.cursor="move"
e = e || window.event;
div.style.left = e.clientX - x + 'px';
div.style.top = e.clientY - y + 'px';
}
}
function up(e) {
if (dragFlag) {
GM_setValue('left',div.style.left);
GM_setValue('top',div.style.top);
}
dragFlag = false;
div.style.cursor="auto"
}
function qd(){
var date=new Date();
var m=date.getMinutes();
if(m==0||m==30){
if (yiqian) {
danmu("#签到");
yiqian = false
}
}
else {yiqian = true}
}
function giftcheck(){
var giftcheck=$('div.TreasureStatus-text').length;
var giftopen=$('.TreasureStatus-bg.is-open').length;
if (giftcheck !=0 && giftopen==0){
if ($('span.TreasureNum-val').length==0){
lastgiftnum=1;
clearInterval(gifttime);
gifttime=null;
danmu("#抢分");
giftflag = false;
setTimeout(
function(){
giftflag = true;
restart();
},200000);
}
}
}
function exgiftcheck(){
if ($('span.TreasureNum-val').length!=0){
giftnum=$('span.TreasureNum-val').text();
if (giftnum>lastgiftnum){
lastgiftnum=giftnum;
clearInterval(gifttime);
clearTimeout(exgifttime);
gifttime=null;
danmu("#抢分");
giftflag = false;
exgifttime = setTimeout(
function(){
giftflag = true;
restart();
},200000);
}
else{
lastgiftnum=giftnum;
}
}
}
function restart(){
gifttime=setInterval(
function(){
if( document.getElementById("autoqf").checked) {
if (giftflag){
giftcheck();
}
}
},1000);
}
function danmu(str){
if($('div.ChatSend-button').text()=='发送'){
if (str == lastText){
str = str + " " + Math.ceil(Math.random()*5)
}
$(".ChatSend-txt").val(str);
$('div.ChatSend-button').click();
lastText = str;
}
}
function betinput_left(str){
if(str==1||str==2){
$('div.GuessContItem.is-left:eq(0)').click();
if (str==1){
$('.chooseOption:eq(1)').click()
}
else if(str==2){
$('.chooseOption:eq(2)').click()
}
}
else if(str==3||str==4){
$('div.GuessContItem.is-left:eq(1)').click();
if (str==3){
$('.chooseOption:eq(1)').click()
}
else if(str==4){
$('.chooseOption:eq(2)').click()
}
}
else if(str==5||str==6){
$('div.GuessContItem.is-left:eq(2)').click();
if (str==5){
$('.chooseOption:eq(1)').click()
}
else if(str==6){
$('.chooseOption:eq(2)').click()
}
}
$('div.guessGame--btn.guessGame--btn--sizeM').click();
}
function betinput_right(str){
if(str==1||str==2){
$('div.GuessContItem.is-right:eq(0)').click();
if (str==1){
$('.chooseOption:eq(1)').click()
}
else if(str==2){
$('.chooseOption:eq(2)').click()
}
}
else if(str==3||str==4){
$('div.GuessContItem.is-right:eq(1)').click();
if (str==3){
$('.chooseOption:eq(1)').click()
}
else if(str==4){
$('.chooseOption:eq(2)').click()
}
}
else if(str==5||str==6){
$('div.GuessContItem.is-right:eq(2)').click();
if (str==5){
$('.chooseOption:eq(1)').click()
}
else if(str==6){
$('.chooseOption:eq(2)').click()
}
}
$('div.guessGame--btn.guessGame--btn--sizeM').click();
}
function getCookie(cname){
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++){
var c = ca[i].trim();
if (c.indexOf(name)==0) return c.substring(name.length,c.length);
}
return "";
}