Greasy Fork

Greasy Fork is available in English.

Freebitco.in - Free Roll (no captcha) - Rewards - 1000% - Multiply - Lottery - Human Simulation

1. Timed Free Roll 2. Top-down config 3. Rewards RP 4. Bonus 1000% 5. Multiply game 6. Lottery tickets 7. Human Simulation 8. Slower in the night 9. Status console - made by dany-veneno in 2018 for private use, published in 2020.

当前为 2020-05-27 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Freebitco.in - Free Roll (no captcha) - Rewards - 1000% - Multiply - Lottery - Human Simulation
// @description  1. Timed Free Roll 2. Top-down config 3. Rewards RP 4. Bonus 1000% 5. Multiply game 6. Lottery tickets 7. Human Simulation 8. Slower in the night 9. Status console - made by dany-veneno in 2018 for private use, published in 2020.
// @author       dany-veneno
// @icon         https://bit.ly/3bY0vU9
// @match        https://freebitco.in/*
// @grant        none
// @create       2018-05-28
// @lastmodified 2020-05-26
// @version      1.9.1
// @namespace    http://greasyfork.icu/users/572366
// @require      http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
// @license      NTP
// @supportURL   https://bit.ly/3d1kW48
// @home-url     https://bit.ly/2M4BNH7
// @home-url2    https://bit.ly/2zn0b4p
// @homepageURL  http://greasyfork.icu/en/scripts/404112
// @copyright    2018-2020, dany-veneno
// @run-at       document-end

// @note         2020-05-26-V.1.9.1 Outputs && default loglevel to 4
// @note         2020-05-26-V.1.9 Timings in Roll && Sleep between buying RP && Colors && fixes
// @note         2020-05-26-V.1.8 Hour format update && reduced lottery tickets number && fixes
// @note         2020-05-25-V.1.7 Added logging  && changed timings && verifying all good && faster on RPActive
// ==/UserScript==

////////////
// CONFIG //
////////////

// >>>>>>>>>>>>>> //
var MULTIPLY = false; //decide if play Multiply games or not ***It's a doubling technique. Play at your risk *** ***When true, it's played randomly*** 
var MAX_ROLLS_AT_MULTIPLY = 1000; //how many rolls in multiply.
var REWARDS = true; //decide if auto buy rewards, or not, incrementally. ***When true, it will activate RP promotions***
var LOTTERY = false; //decide if auto buy lottery tickets, or not. ***When true, It will randomly buy lottery tickets, # between 8 and 400***
var LOGGING = 4; //0 is no messages, 5 is debug
// <<<<<<<<<<<<<< //

// System Variables //
// >>>>>>>>>>>>>>>> //
var css_reset='font-weight: reset; color:reset';
var css_bold='font-weight:bold;';
var reward = {};
// <<<<<<<<<<<<<<<< //

(function() {
    'use strict';

    var points = {};
    var count_min = 15;
    var rand = 0;
    var totJack = getCookie("totJack");
    var t; 
    var r = 0;

    //Buy lottery ticket random
    if( Boolean(LOTTERY)){
        r=random(1,100);
        if (r > 93) {
            rand=random(2,400);
            if(parseInt($('#balance').text().split(".")[1]) > rand) {
                $('lottery_link hide_menu').click();
                setTimeout(function(){ $('#lottery_tickets_purchase_count').val(rand);},random(4000,7000));
            }else{
                $('#lottery_tickets_purchase_count').val(parseInt($('#balance').text().split(".")[1]));
            }
            if (LOGGING > 2) console.log("Buy "+ rand + " lottery tickets");
            setTimeout(function(){ $('#purchase_lottery_tickets_button').click()},random(8000,20000));
        }
    }

    // Reward function call the roll function, that call the multiply function.
    
    reward.select = function() {
        reward.points = parseInt($('.user_reward_points').text().replace(',',""));
        reward.bonustime = {};
        if ($("#bonus_container_free_points").length != 0) {
            reward.bonustime.text = $('#bonus_span_free_points').text();
            reward.bonustime.hour = parseInt(reward.bonustime.text.split(":")[0]);
            reward.bonustime.min = parseInt(reward.bonustime.text.split(":")[1]);
            reward.bonustime.sec = parseInt(reward.bonustime.text.split(":")[2]);
            reward.bonustime.current = reward.bonustime.hour * 3600 + reward.bonustime.min * 60 + reward.bonustime.sec;
        } else reward.bonustime.current = 0;
        if (LOGGING > 0) console.log("%c<<<<<<<<<< Script Begin >>>>>>>>>>", 'font-weight:bold; color: green');
        if (LOGGING > 4) console.log("Bonus missing seconds: "+reward.bonustime.current+" -- Reward Points avail: "+reward.points);
        if (reward.bonustime.current !== 0) {
            if (LOGGING > 3) console.log("%cPromo RP is active!", 'color: grey');
            setTimeout(function(){ freeRoll(); }, 300);
        } else {
            t=missingTime();
            if (Boolean(REWARDS) && t[0]<10) {
                $('.rewards_link').not('.hide_menu').click();
                if (reward.points < 12) {
                    if (LOGGING > 2) console.log("No enough points to buy bonus. Less then 12. Waiting for points in next rolls");
                }
                else if (reward.points < 120) {
                    if (LOGGING > 2) console.log("waiting for points 60");
                    setTimeout(function(){ RedeemRPProduct('free_points_1')},random(2000,4000));
                }
                else if (reward.points < 600) {
                    if (LOGGING > 2) console.log("waiting for points 120");
                    setTimeout(function(){ RedeemRPProduct('free_points_10')},random(2000,4000));
                }
                else if (reward.points < 1200) {
                    if (LOGGING > 2) console.log("waiting for points 600");
                    setTimeout(function(){ RedeemRPProduct('free_points_50')},random(2000,4000));
                }
                else {
                    setTimeout(function(){ RedeemRPProduct('free_points_100')},random(2000,4000));
                }
                if ($('#bonus_span_fp_bonus').length === 0)
                    if (reward.points >= 4600)
                        setTimeout(function(){ RedeemRPProduct('fp_bonus_1000')},random(15000,35000));
                //Back to the main page
                setTimeout(function(){ $('.free_play_link').not('.hide_menu').click(); }, random(1000,3000));
            } else {
                //getting colors
                var c1 = 'red'; var c2 = 'red'
                var _rewards = true;
                var _min = 10;
                if (Boolean(REWARDS) == Boolean(_rewards)) c1 = 'green';
                if (t[0] < _min ) c2 = 'green';
                if (LOGGING > 3) console.log('Not buying RPBonuses: Setting Variable is: '+'%c'+Boolean(REWARDS)+' '+' %c('+Boolean(_rewards)+') '+'%c and missing minutes are: '+'%c '+t[0]+''+' %c(<'+_min+')', 'color:'+c1, 'color:reset; font-weight:bold', 'font-weight: reset', 'color:'+c2, 'color:reset; font-weight:bold');
            }
            // Call the freeRoll
            setTimeout(function(){ freeRoll(); }, 6100);
        }
    };

    //Save distance from last 8888 on cookie to check when to play Jackpot
    $('#previous_roll').on('DOMSubtreeModified', function(){
        var rolled = $('#previous_roll').html();
        if (rolled > 0 && rolled <= 10000 && rolled != 8888){
            //console.log('new value '+ rolled);
            totJack++;
            setCookie("totJack", totJack, "365");
            setCookie("prevNum", rolled, "365");
            //console.log(document.cookie);
        } else if (rolled == 8888) {
            setCookie("totJack", 0, "365");
            setCookie("prevNum", rolled, "365");
            if (LOGGING > 0) console.log("************** 8888 Jackpot! **************");
        }
    });

    // Close the reveals mode
    closePopupInterval($('.close-reveal-modal'));
    closePopupInterval($('.pushpad_deny_button'));
    closePopupInterval($("[id^='hide_rp_promo']"));

    //Show elapsed time every 10 min.
    setInterval(function(){
        var t=missingTime();
        var date = new Date();
        var dateTimeFormat = new Intl.DateTimeFormat('en', { year: 'numeric', month: 'short', day: '2-digit', hour: 'numeric', minute: 'numeric', hour12: false });
        var [{ value: month },,{ value: day },,{ value: year },,{ value: hour },,{ value: minute }] = dateTimeFormat .formatToParts(date );

        var ca='red'; var cb='red'; var cc='red'; var css='font-weight: bold; color:';
        var c1='purple'; var c2='olive';
        var c3='brown'; var c4='teal';
        if (LOGGING > 0) console.log(">>>>>>>>>>%c Status:%c ["+hour+":"+minute+"]", css_bold+'color:'+c1, css_bold);
        //Rewards and multiply infos and colors
        if (Boolean(REWARDS)) ca = 'green'; if (Boolean(MULTIPLY)) cb='green'; if (Boolean(LOTTERY)) cc='green';
        var cssa='font-weight: bold; color:'+ca;
        var cssb='font-weight: bold; color:'+cb;
        var cssc='font-weight: bold; color:'+cc;
        if (LOGGING > 0) console.log(">>>>>>>>>> Buying Rewards: "+"%c"+Boolean(REWARDS)+""+"%c; Playing Multiply: "+"%c"+Boolean(MULTIPLY)+""+"%c; Buying Lottery: "+"%c"+Boolean(LOTTERY), cssa, css_reset,cssb, css_reset, cssc);
        // End rewards and multiply

        //console.log(">>>>>>>>>> Elapsed time from last page reload:"+" %c" + count_min + " minutes.",css_bold+'color:'+c1);
        if (LOGGING > 0) console.log(">>>>>>>>>> Missing "+"%c"+t[0]+" min "+t[1]+" sec"+"%c for next roll",css_bold+"color:"+c1,css_reset);

        // Free Roll btc Winnings via script
        var tot_btc_winning_rolling = getCookie('tot_btc_winning_rolling');
        if (LOGGING > 0) console.log(">>>>>>>>>> BTC won with script: "+"%c"+tot_btc_winning_rolling, css_bold+'color:'+c4);
        if (LOGGING > 0) console.log(">>>>>>>>>> Rolls from last 8888: "+"%c"+totJack, css_bold+'color:'+c2);

        count_min = count_min + 10;
    }, 600000);

    // The reward function call the others functions, cause the order is: buy bonus, free roll, play multiply, reload page, etc.
    setTimeout(reward.select,random(1500,3500));

    // Give info about jackpot
    $('#multiplier_fifth_digit').on('click', function(){
        if (LOGGING > 2) console.log("Count since last 8888: "+totJack);
    });
}

)();

function missingTime () {
    var min = 0; var sec = 0; var str = "";

    str = $('title').text().split(" ")[0];
    if (str.length <= 7 && str.length >= 3) {
        min = str.split(':')[0]; if (min.length > 0) min = min.replace('m',''); else min = 0;
        sec = str.split(':')[1]; if (sec.length > 0) sec = sec.replace('s',''); else sec = 0;
    }
    return [min,sec];
}
function random(min,max){
   return min + (max - min) * Math.random();
}
function closePopupInterval (target) {
    setInterval(function(){
        if (target.is(':visible')) {
            if (LOGGING > 3) console.log("%cClose the popup", 'color: grey'); 
            setTimeout(function(){
                target.click();
            }, random (3000,6000));
        }
    },15000);
}
function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}
function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function freeRoll() {
    var d = new Date();
    var rand=0;
    var r=0;
    var tot_btc_winning_rolling = getCookie('tot_btc_winning_rolling');
    if (! (tot_btc_winning_rolling > 0)) tot_btc_winning_rolling=0;

    if ($('#free_play_form_button').is(':visible') && ! $('#play_without_captchas_button').is(':visible')) {
        r=random(1,100);
        var h = d.getHours();
        if (h <= 6)             rand=random(900000,3600000); //from midnight to 6am
        else {
            if (r <= 10)         rand=random(9000,3600000); // xx%, long wait, more than hour
            else if (r <= 30)   rand=random(6000,1800000); // long but not longest
            else if (r <= 71)   rand=random(3000,1200000); // xx% cases medium
            else                rand=random(500,60000); // xx% cases fast roll
        }
        if (reward.bonustime.current !== 0) { //If promo is active, roll faster
            if (r <= 20)        rand=random(3000,360000); //one time on five it will be slower
            else                rand=random(500,600000); //then faster
        }
        //if (! Boolean(REWARDS) ) rand=rand+random(5000,900000); // human behave
        if (LOGGING > 2) console.log('++++++++++++++++++++++++++++++Will roll in '+rand/1000/60+' minutes;');
        if (LOGGING > 4) console.log('hour:'+h+'; r:'+r);
        setTimeout(function(){ $('.free_play_link').not('.hide_menu').click();},1800);
        setTimeout(function(){
            //Duplicate the visibility chek to avoid error when humans roll and don't refresh.
            if ($('#free_play_form_button').is(':visible') && ! $('#play_without_captchas_button').is(':visible')){
                if (LOGGING > 2) console.log('++++++++++++++++++++++++++++++ROLL!');
                $('#free_play_form_button').click();
                setTimeout(function(){
                    var win_btc = $('#winnings').text();
                    var win_lottery = $('#fp_lottery_tickets_won').text();
                    var win_rp = $('#fp_reward_points_won').text();
                    if (win_btc > 0) {
                        if (LOGGING > 4) console.log(">> DEBUG: "+tot_btc_winning_rolling+" -- "+win_btc+" -- "+parseFloat(tot_btc_winning_rolling));
                        tot_btc_winning_rolling = parseFloat(parseFloat(tot_btc_winning_rolling) + parseFloat(win_btc)).toFixed(8);
                        if (LOGGING > 4) console.log(">> DEBUG: "+tot_btc_winning_rolling);
                        setCookie('tot_btc_winning_rolling', tot_btc_winning_rolling, 365);
                        if (LOGGING > 2) console.log('%cGot '+win_btc+' btc, '+win_lottery+' tickets and '+win_rp+' RP!','font-weight:bold; color:green');
                        if (LOGGING > 2) console.log('%cWon with script %c'+tot_btc_winning_rolling,'color: gray', 'font-weight:bold');
                    } else {
                        if (LOGGING > 1) console.log(''+'%cSome error retrieving Roll Winnings. Winning was: '+win_btc, 'color: red');
                    }
                }, 6999);
            }
            else {
                if (LOGGING > 3) console.log('Already Rolled..');
                setTimeout(function(){ location.reload(); }, 3000);
            }
        },rand);
        var rand1=rand+random(900000,1800000);
        rand=random(0,1000);
        if (rand < 500) {
            if (LOGGING > 2) console.log('Reload page after roll in '+rand1/1000/60+' minutes!');
            setTimeout(function(){ location.reload(); }, rand1);
        } else if (rand > 900 && Boolean(MULTIPLY)) {
            if (LOGGING > 0) console.log('Will multiply in '+rand1/1000/60+' minutes!');
            setTimeout(function(){ multiply(); }, rand1);
        } else {
            if (LOGGING > 2) console.log('No action after roll. Rand was '+rand);
        }
    } else {
        if (LOGGING > 2) console.log("No roll");
    }
}

// Multiply, called after the free roll, sometimes.
function multiply() {
    var balance = parseInt($('#balance').text().split(".")[1]);
    var bonustime_current;
    if ($("#bonus_account_table").length != 0) {
        var bonustime_balance = $('#bonus_account_balance').text().split(" ")[0];
        var bonustime_wager_remaining = $('#bonus_account_wager').text().split(" ")[0];
        bonustime_current = 1;
    } else
        bonustime_current = 0;
    var max_lose = 0; var i=0; var j=0;
    $('.double_your_btc_link').not('.hide_menu').click();
    if ( bonustime_current == 1) {
        // Autobet at "double"
        setTimeout(function(){ $('#auto_bet_on').click(); }, random(2000,2200));
        setTimeout(function(){ $('#autobet_base_bet').val('0.00000001');  }, random(3500,7000));
        //13 rolls loosing in a row, 1 every 4096 games. Every script exec game you win ~500 sat, playing ~500 games.
        setTimeout(function(){ $('#autobet_max_bet').val('0.00004096');  }, random(3500,7000));
        setTimeout(function(){ $('#autobet_roll_count').val(MAX_ROLLS_AT_MULTIPLY);  }, random(3500,7000));
        setTimeout(function(){ $('#autobet_bet_hi').prop('checked', true); $('#autobet_bet_alternate').prop('checked', false);  }, random(3500,7000));
        setTimeout(function(){ $('#show_double_your_btc_auto_bet_on_lose').click();  }, random(7500,9000));
        setTimeout(function(){ $('#autobet_lose_increase_bet').prop('checked', true); $('#autobet_lose_return_to_base').prop('checked', false); }, random(9100,11000));
        setTimeout(function(){ $('#autobet_max_bet_stop').prop('checked', true); $('#autobet_max_bet_reset').prop('checked', false); }, random(9100,11000));
        setTimeout(function(){ $('#autobet_lose_increase_bet_percent').val('100');  }, random(9100,11000));
        setTimeout(function(){ $('#autobet_dnr').prop('checked', true); }, random(11000,12000));
        setTimeout(function(){ $('#start_autobet').click(); }, random(17100,30000));
        if (LOGGING > 2) console.log('bonus balance: '+bonustime_balance+'; wager remaining: '+bonustime_wager_remaining);
    }
    if (LOGGING > 2) console.log('total balance: '+balance);
    setTimeout(function(){ $('.free_play_link').not('.hide_menu').click(); }, random(900000,1200000));
}