Madwin74

006 - Scripts Found - Bustabit *** Fly

Apr 21st, 2017
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ================================================================
  2. var enableBetting = true;               // Режим ставок вкл/выкл
  3. var baseBet = getBaseBet();             // Базовая ставка в битсах
  4. var GI_bet = baseBet;                   // Базовая ставка GI в битсах
  5. var PI_bet = baseBet;                   // Базовая ставка PI в битсах
  6. var FLY_bet = baseBet;                  // Базовая ставка FLY в битсах
  7. var FLY_crash = 10;                  // Базовая ставка FLY в битсах
  8. var baseStop = 10;                      // Базовый % выигрыша для остановки
  9. // ================================================================
  10. var round = 0;                          // Раунд игры
  11. var last;                               // Сыгравший коэфициент в предыдущей игре
  12. // ================================================================
  13. var cashedOut = true;                   // Коэфициент
  14. // ================================================================
  15. var lastGamePlay;                       // Результат предыдущей игры
  16. var startBR = engine.getBalance();      // Изначальный банкролл
  17. var maxBR = startBR;                    // Максимальный банкролл за игру
  18. var minBR = startBR;                    // Минимальный банкролл за игру
  19. var curBR = startBR;                    // Текущий банкролл
  20. var userName = engine.getUsername();    // Имена текущих игроков
  21. var gamesWon = 0;                       // Количество выиграных ставок
  22. var gamesLost = 0;                      // Количество проигранных ставок
  23. var unplayed = 0;                       // Количество пропущеных игр
  24. var net = 0;                            // Профит
  25. var loseGames = 0;                      // Череда проигрышей
  26. var winGames = 0;                       // Череда выигрышей
  27. var maxBet = 0;                         // Максимальная ставка за игру
  28. var winProc = 0;                        // Выигрыш в процентах
  29. var timeStart = Date.now();             // Время начала работы бота
  30. var timeToMaxBet = 0;                   // Время максимальной ставки
  31. var timeToloseGames = 0;                // Время максимальной череды неудач
  32. var timeTowinGames = 0;                 // Время максимальной череды удач
  33. // ================================================================
  34. var busts = new Array();                // Массив сыгравших ставок
  35. var losePeriods = new Array();          // Массив времен для проигрышей
  36. var winsPeriods = new Array();          // Массив времен для выигрышей
  37. // ================================================================
  38. var dataCollection = false;             // Флаг сбора данных
  39. var Strategy = false;                   // Стратегия
  40. // ================================================================
  41. var falseGames = 0;                     // Счетчик пропуска раундов
  42. var wins = 0;                           // Счетчик выигрышей
  43. var loses = 0;                          // Счетчик проигрышей
  44. var procStop = baseStop;                // Счетчик % выигрыша для остановки
  45. // ================================================================
  46. var h = 0;                              // часы
  47. var m = 0;                              // минуты
  48. var s = 0;                              // секунды
  49. var stopped = 0;                        // время остновки
  50. // ================================================================
  51. engine.on('game_starting', function (data) {
  52.     StartGame();
  53. });
  54. // ================================================================
  55. engine.on('game_started', function (data) {
  56.  
  57. });
  58. // ================================================================
  59. engine.on('game_crash', function (data) {
  60.     console.clear();
  61.     lastGamePlay = engine.lastGamePlay();
  62.     round += 1;
  63.     last = data.game_crash / 100;
  64.     busts.unshift(last);
  65.     curBR = engine.getBalance();
  66.     if (curBR < minBR) {
  67.         minBR = curBR;
  68.     } else if (curBR > maxBR) {
  69.         maxBR = curBR;
  70.     }
  71.     net = curBR - startBR;
  72.     if (lastGamePlay == "WON") {
  73.         gamesWon += 1;
  74.     } else if (lastGamePlay == "LOST") {
  75.         gamesLost += 1;
  76.     } else {
  77.         unplayed += 1;
  78.     }
  79.     logRound();
  80. });
  81. // ================================================================
  82. engine.on('cashed_out', function (data) {
  83.     if (data.username == userName) {
  84.         cashedOut = true;
  85.     } else {
  86.         // Здесь будем собирать коэфициенты других игроков
  87.     }
  88. });
  89. // ================================================================
  90. engine.on('player_bet', function (data) {
  91.     if (data.username == userName) {
  92.         cashedOut = false;
  93.     } else {
  94.         // Здесь будем собирать ставки других игроков
  95.     }
  96. });
  97. // ================================================================
  98. engine.on('msg', function (data) {
  99.  
  100. });
  101. // ================================================================
  102. engine.on('connect', function (data) {
  103.  
  104. });
  105. // ================================================================
  106. engine.on('disconnect', function (data) {
  107.  
  108. });
  109. // ================================================================
  110. function getTime(timeStop) {
  111.     if (!timeStop) {
  112.         var timeStop = Date.now();
  113.     }
  114.     var timer = new Date(timeStop - timeStart);
  115.     h = (timer.getHours() - 3);
  116.     m = (timer.getMinutes());
  117.     s = (timer.getSeconds());
  118.     return  h + ":" + m + ":" + s;
  119. }
  120. // ================================================================
  121. function getBaseBet(proc) {
  122.     if (!proc) {
  123.         return 1;
  124.     } else {
  125.         return (Math.floor(engine.getBalance() / 100 / proc));
  126.     }
  127. }
  128. // ================================================================
  129. function cashOut() {
  130.     if (!cashedOut) {
  131.         engine.cashOut();
  132.         cashedOut = true;
  133.     }
  134. }
  135. // ================================================================
  136. function placeBet(bet, cash, autoCash) {
  137.     if (bet) {
  138.         if (bet > 0) {
  139.             if (cash) {
  140.                 if (cash >= 1) {
  141.                     if (enableBetting) {
  142.                         cashedOut = false;
  143.                         cash = parseInt(cash * 100);
  144.                         engine.placeBet(bet * 100, cash, autoCash);
  145.                     }
  146.                 }
  147.             }
  148.         }
  149.     }
  150. }
  151. // ================================================================
  152. function getProc() {
  153.     return ((net / (startBR / 100)).toFixed(2));
  154. }
  155. // ================================================================
  156. function getWinsPeriod() {
  157.     if (winsPeriods.length > 0) {
  158.         return "\nСредний период стека выигрыша: " + getTime(median(winsPeriods));
  159.     } else {
  160.         return "";
  161.     }
  162. }
  163. function getLosePeriod() {
  164.     if (losePeriods.length > 0) {
  165.         return "\nСредний период стека проигрыша: " + getTime(median(losePeriods));
  166.     } else {
  167.         return "";
  168.     }
  169. }
  170. // ================================================================
  171. function logRound() {
  172.     var timer = getTime();
  173.     var m1Busts = busts.slice();
  174.     var m2Busts = busts.slice();
  175.     var m3Busts = busts.slice();
  176.     var botTitleStr = "Afodar's BustaBitBot\n";
  177.     var timeStr = "\nВремя работы: " + getTime(false);
  178.     var enableBettingStr = "\nСтавки включены: " + enableBetting;
  179.     var baseBetStr = "\nБазовая ставка: " + baseBet;
  180.     var roundStr = "\nРаунд: " + round;
  181.     var lastStr = "\nСыграло в предыдущей игре: " + last;
  182.     // ================================================================
  183.     var lastGamePlayStr = "\nПредыдущая игра: " + lastGamePlay;
  184.     var startBRStr = "\nСтартовый банкролл: " + startBR;
  185.     var maxBRStr = "\nМаксимальный банкролл: " + maxBR;
  186.     var minBRStr = "\nМинимальный банкролл: " + minBR;
  187.     var curBRStr = "\nТекущий банкролл: " + curBR;
  188.     var balanceProcStr = "\nВыиграно % от банкролла: " + getProc();
  189.     var userNameStr = "\nАккаунт: " + userName;
  190.     var gamesWonStr = "\nВыигано раудов: " + gamesWon;
  191.     var gamesLostStr = "\nПроиграно раундов: " + gamesLost;
  192.     var unplayedStr = "\nНе сыграно раундов: " + unplayed;
  193.     var wonsStr = "\nЧереда выигрышей макс.: " + winGames + " [" + getTime(timeTowinGames) + "] назад";
  194.     var lostsStr = "\nЧереда проигрышей макс.: " + loseGames + " [" + getTime(timeToloseGames) + "] назад";
  195.     var maxBetStr = "\nМаксимальная ставка: " + maxBet + " [" + getTime(timeToMaxBet) + "] назад";
  196.     var meanStr = "\nСредняя по коэфициентам: " + mean(m1Busts).toFixed(2);
  197.     var medianStr = "\nЭкспоненциональная по коэфициентам: " + median(m2Busts).toFixed(2);
  198.     var modeStr = "\nНаиболее часто играющий коэфициент: " + mode(m3Busts).toFixed(2);
  199.     var netStr = "\nПрофит: " + net;
  200.     console.log("\n" +
  201.             botTitleStr +
  202.             timeStr +
  203.             enableBettingStr +
  204.             baseBetStr +
  205.             roundStr +
  206.             lastStr +
  207.             lastGamePlayStr +
  208.             startBRStr +
  209.             maxBRStr +
  210.             minBRStr +
  211.             curBRStr +
  212.             balanceProcStr +
  213.             userNameStr +
  214.             gamesWonStr +
  215.             gamesLostStr +
  216.             unplayedStr +
  217.             wonsStr +
  218.             getWinsPeriod() +
  219.             lostsStr +
  220.             getLosePeriod() +
  221.             maxBetStr +
  222.             meanStr +
  223.             medianStr +
  224.             modeStr +
  225.             netStr +
  226.             "\n"
  227. //            busts
  228.             );
  229. }
  230. // Для сортировки массива
  231. // ================================================================
  232. numberSort = function (a, b) {
  233.     return a - b;
  234. };
  235.  
  236. // Средняя из массива
  237. // ================================================================
  238. function mean(arr) {
  239.     if (arr) {
  240.         if (arr.constructor === Array) {
  241.             if (arr.length >= 1) {
  242.                 var sum = 0;
  243.                 for (var i = 0; i < arr.length; i++) {
  244.                     sum += arr[i];
  245.                 }
  246.                 return (sum / arr.length);
  247.             }
  248.         }
  249.     }
  250.     return -1;
  251. }
  252.  
  253. // Экспоненциональная средняя из массива
  254. // =======================================================
  255. function median(arr) {
  256.     if (arr) {
  257.         if (arr.constructor === Array) {
  258.             if (arr.length >= 1) {
  259.                 arr = arr.sort(numberSort);
  260.                 if ((arr.length % 2) == 0) {
  261.                     // Even
  262.                     return (((arr[arr.length / 2] + arr[(arr.length / 2) - 1])) / 2);
  263.                 } else {
  264.                     // Odd
  265.                     return (arr[Math.floor(arr.length / 2)])
  266.                 }
  267.             }
  268.         }
  269.     }
  270.     return -1;
  271. }
  272.  
  273. // Подсчет экспоненциональная средней разрыва между коэфициентами
  274. // =======================================================
  275. function stepMA(arr, cr) {
  276.     if (arr) {
  277.         if (arr.constructor === Array) {
  278.             if (arr.length >= 1) {
  279.                 var stepsMA = [];
  280.                 var stepInc = 0;
  281.                 for (var i = 0; i < arr.length; i++) {
  282.                     stepInc++;
  283.                     if (((arr[i] >= cr) && (arr[i] < (cr + 1))) || ((arr[i] >= cr) && (cr == 5))) {
  284.                         stepsMA.push(stepInc);
  285.                         stepInc = 0;
  286.                     }
  287.                 }
  288.                 var sArr = stepsMA.sort();
  289.                 return mean(sArr);
  290.             }
  291.         }
  292.     }
  293.     return -1;
  294. }
  295.  
  296. // Подсчет количества коэфициентов с начала массива до запрашиваемого коэфицента
  297. // =======================================================
  298. function stepCR(arr, cr) {
  299.     if (arr) {
  300.         if (arr.constructor === Array) {
  301.             if (arr.length >= 1) {
  302.                 for (var i = 0; i < arr.length; i++) {
  303.                     if (((arr[i] >= cr) && (arr[i] < (cr + 1))) || ((arr[i] >= cr) && (cr == 5))) {
  304.                         return (i + 1);
  305.                     }
  306.                 }
  307.             }
  308.         }
  309.     }
  310.     return -1;
  311. }
  312.  
  313. // Поиск наиболее встречающегося элемента в массиве
  314. // =======================================================
  315. function mode(arr) {
  316.     if (arr) {
  317.         if (arr.constructor === Array) {
  318.             if (arr.length < 1) {
  319.                 return -2;
  320.             } else {
  321.                 var modeMap = {};
  322.                 var maxEl = arr[0], maxCount = 1;
  323.                 for (var i = 0; i < arr.length; i++) {
  324.                     var el = arr[i];
  325.                     if (modeMap[el] == null) {
  326.                         modeMap[el] = 1;
  327.                     } else {
  328.                         modeMap[el]++;
  329.                     }
  330.                     if (modeMap[el] > maxCount) {
  331.                         maxEl = el;
  332.                         maxCount = modeMap[el];
  333.                     }
  334.                 }
  335.                 if (maxCount == 1) {
  336.                     return -3;
  337.                 }
  338.                 return maxEl;
  339.             }
  340.         }
  341.     }
  342.     return -1;
  343. }
  344. function StartGame() {
  345. // Сбор данных до начала игры
  346. // =======================================================
  347.     function DataCollection(sample) {
  348.         if (round < sample) {
  349.             console.log("======Сбор данных======");
  350.             console.log("Осталось сборать " + (sample - round));
  351.             console.log(" ");
  352.         } else {
  353.             console.log("======Данные собраны включаем тактику PI======");
  354.             console.log(" ");
  355.             dataCollection = true;
  356.             Strategy = "FLY";
  357.         }
  358.     }
  359. // Стратегия GI(1-10)
  360. // =======================================================
  361.     function GI() {
  362.         lastGamePlay = engine.lastGamePlay();
  363.         console.log("Последние два коэфициента " + busts[0] + " / " + busts[1]);
  364.         if (lastGamePlay == "LOST") {
  365.             GI_bet = GI_bet * 2;
  366.             if (GI_bet > maxBet) {
  367.                 maxBet = GI_bet;
  368.             }
  369.             if (loseGames > 6) {
  370.                 loseGames = 0;
  371.                 GI_bet = baseBet;
  372.             }
  373.         } else if (lastGamePlay == "WON") {
  374.             GI_bet = baseBet;
  375.             loseGames = 0;
  376.         }
  377.         if ((busts[0] < 1.97) && (busts[1] < 1.97)) {
  378.             falseGames++;
  379.             if (falseGames > 3) {
  380.                 GI_crash = 0;
  381.                 for (i = 5; i >= 2; i--) {
  382.                     var arrL = busts;
  383.                     var s_CR = stepCR(arrL, i);
  384.                     var arrL = busts;
  385.                     var s_MA = stepMA(arrL, i);
  386.                     if (((s_CR > 0) && (s_MA > 0)) && (s_CR > s_MA)) {
  387.                         GI_crash = i;
  388.                         break;
  389.                     }
  390.                 }
  391.                 if (GI_crash > 0) {
  392.                     console.log("======GI 2R======");
  393.                     console.log("   Ставка: " + GI_bet);
  394.                     console.log("   Коэфициент: " + GI_crash);
  395.                     console.log(" ");
  396.                     placeBet(GI_bet, GI_crash, false);
  397.                 }
  398.                 falseGames = 0;
  399.             } else {
  400.                 console.log("Условие на 2 красных выполнено. Осталось дождаться ещё " + (3 - falseGames) + " совпадений данного условия.");
  401.             }
  402.         } else {
  403.             console.log("Условие на 2 красных не выполнено. Ждем.");
  404.         }
  405.     }
  406. // Стратегия FLY(1.05)
  407. // =======================================================
  408.     function FLY() {
  409.         if (lastGamePlay == "LOST") {
  410.             loses++;
  411.             if (loses % 2) {
  412.                 FLY_bet++;
  413.             }
  414.             FLY_crash = FLY_crash + (0.3 + (loses / 100));
  415.         } else if (lastGamePlay == "WON") {
  416.             loses = 0;
  417.             FLY_bet = 1;
  418.             FLY_crash = 10;
  419.         }
  420.         placeBet(FLY_bet, FLY_crash, false);
  421.     }
  422. // Стратегия PI(1.37)
  423. // =======================================================
  424.     function PI() {
  425.         if (lastGamePlay == "LOST") {
  426.             var multiple = 2.3;
  427.             loses++;
  428.             if (loses > 3) {
  429.                 var t_s = (losePeriods.length > 0) ? losePeriods[0] : timeStart;
  430.                 var t_e = Date.now();
  431.                 losePeriods.push(t_e - t_s);
  432.             }
  433.             wins = 0;
  434.             if (loses > loseGames) {
  435.                 loseGames = loses;
  436.                 timeToloseGames = Date.now();
  437.             }
  438.             if (loses > 4) {
  439.                 PI_bet = 1;
  440.             } else {
  441.                 if (busts[0] != 0) {
  442.                     PI_bet = Math.floor(PI_bet * multiple * busts[0]);
  443.                 } else {
  444.                     PI_bet = Math.floor(PI_bet * 3);
  445.                 }
  446.             }
  447.             if (PI_bet > maxBet) {
  448.                 maxBet = PI_bet;
  449.                 timeToMaxBet = Date.now();
  450.             }
  451.         } else if (lastGamePlay == "WON") {
  452.             wins++;
  453.             if (wins > 3) {
  454.                 var t_s = (winsPeriods.length > 0) ? winsPeriods[0] : timeStart;
  455.                 var t_e = Date.now();
  456.                 winsPeriods.push(t_e - t_s);
  457.             }
  458.             if (wins > winGames) {
  459.                 winGames = wins;
  460.                 timeTowinGames = Date.now();
  461.             }
  462.             PI_bet = baseBet;
  463.             loses = 0;
  464.         }
  465.         var PI_crash = 0;
  466.         var m1Busts = busts.slice();
  467.         var m2Busts = busts.slice();
  468.         var m3Busts = busts.slice();
  469.         var sa = parseFloat(mean(m1Busts).toFixed(2));
  470.         var se = parseFloat(median(m2Busts).toFixed(2));
  471.         var chi = parseFloat(mode(m3Busts).toFixed(2));
  472.         if (sa > 0 && se > 0 && chi > 0) {
  473.             if ((se * 2 < sa) && (se > chi) && (se > 1.1)) {
  474.                 if (getProc() > procStop && lastGamePlay != "LOST") {
  475.                     if (stopped == 0) {
  476.                         stopped = Date.now() + parseInt(Math.random() * 10800000 + 1);
  477.                     }
  478.                     var lastTime = new Date(stopped - Date.now());
  479.                     if (lastTime > 0) {
  480.                         console.log("======PI T1======");
  481.                         console.log("Игра окончена. Следующий старт игры через [" + getTime(lastTime) + "]");
  482.                         console.log(" ");
  483.                     } else {
  484.                         stopped = 0;
  485.                         procStop += baseStop;
  486.                     }
  487.                 }
  488.                 PI_crash = parseFloat(((Math.random() * (se - chi)) + chi).toFixed(2));
  489.                 console.log("======PI T1======");
  490.                 console.log("   Ставка: " + PI_bet);
  491.                 console.log("   Коэфициент: " + PI_crash);
  492.                 console.log(" ");
  493.                 placeBet(PI_bet, PI_crash, false);
  494.             }
  495.             console.log("======PI T1======");
  496.             console.log("   SA: " + sa);
  497.             console.log("   SE: " + se);
  498.             console.log("   CHI: " + chi);
  499.             console.log(" ");
  500.         } else {
  501.             console.log("======PI T1======");
  502.             console.log("   SA: " + sa);
  503.             console.log("   SE: " + se);
  504.             console.log("   CHI: " + chi);
  505.             console.log(" ");
  506.         }
  507.     }
  508. // Стратегия PlusCoup
  509. // =======================================================
  510.     function PlusCoup() {
  511.         console.log("======PlusCoup IS NOT DEFINED MODE======");
  512.         console.log("======END GAME PLEASE======");
  513.     }
  514.     if (!dataCollection) {
  515.         DataCollection(0);
  516.     } else {
  517.         switch (Strategy) {
  518.             case "GI":
  519.                 GI();
  520.                 break;
  521.             case "FLY":
  522.                 FLY();
  523.                 break;
  524.             case "PI":
  525.                 PI();
  526.                 break;
  527.             case "PlusCoup":
  528.                 PlusCoup();
  529.                 break;
  530.         }
  531.     }
  532. }
Advertisement
Add Comment
Please, Sign In to add comment