Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.22 KB | None | 0 0
  1. //customizable variables;
  2.  
  3. ////////////////////////////////
  4. //
  5. var stopLoss = 0;
  6. var bonusPercentRequired = 1.1;
  7. var BonusPredictionErrorThreshold = 0.2;
  8. var cashout = 220;
  9. var skipGamesWhereMaxBetIsOver = 2000000;
  10. // ignore the 2nd two. ^
  11.  
  12. var basebet = 28;
  13.  
  14. ////////////////////////////////
  15.  
  16. var bets=[];
  17. var highestBetUser=null;
  18. var highestBetAmount=0;
  19. var ManualTarget='';
  20. var People={};
  21. var TotalRecorderdUsers=0;
  22. var NewUsersAddedThisRound=0;
  23. var TotalPlayersLastGame=0;
  24. var TotalPlayersPlaying=0;
  25. var sumaveragebetamount=0;
  26. var gameBonus=0;
  27. var largestBet=0;
  28. var Sumofbets=0;
  29. var AverageBetSize=0;
  30. var IncreaseArray={}
  31. var ActualBonusSum=0;
  32. var betSize=5;
  33. var basebet=5;
  34. var HighestBonusRecorded=0;
  35. var cashedout=false;
  36. var betPlaced=false;
  37. var ActualgameBeta=0;
  38. var TotalBonusEarned=0;
  39. var emergencycashout=false;
  40. var WonAmt=0;
  41. var LostAmt=0;
  42. var HighestBetCount=0;
  43. var HighestBetUsers=[];
  44. var lastgamestatus='';
  45. var difference=0;
  46. var lostcount=0;
  47.  
  48. var crashedat=0;
  49.  
  50. var highestBetUser=null;
  51. var highestBetAmount=0;
  52. var lost=0;
  53.  
  54. var PendingCashoutsValue=0;//so lets call the sum of all the bets that have not cashed out pending Cashouts
  55.  
  56. var ThisGamesUserInfo=[];
  57. var CashedOutUsers=[];
  58. var cashedoutat=0;
  59. var ExpectedBonus=0;
  60.  
  61. var dontAdd=false;
  62.  
  63. engine.on('player_bet',function (data){
  64.  
  65. TotalPlayersPlaying++;
  66. dontAdd=false;
  67. var target = data.username;
  68.  
  69. if(target == engine.getUsername()){
  70. console.log("our bet confirmed");
  71. } else{
  72.  
  73. //console.log(GetAverageBetAmount(target));
  74.  
  75. //if we have the user in our object,sum their bets.
  76. //Sum the average bet amount for each user to get this games total expected value in bits
  77. if(target in People){
  78. sumaveragebetamount+=GetAverageBetAmount(target);
  79. }
  80. }
  81.  
  82. if((sumaveragebetamount/100) >= HighestBonusRecorded){
  83. HighestBonusRecorded = sumaveragebetamount/100;
  84. }
  85.  
  86. if(TotalPlayersPlaying >= TotalPlayersLastGame-7){
  87. console.clear();
  88. var gameBonus = (sumaveragebetamount)/100;
  89. var gameBeta = gameBonus/(highestBetAmount*100);
  90.  
  91. var estimatedbonus = (betSize*100)*gameBeta;
  92. //console.log("[Prediction-GameValue] " + numberWithCommas(parseInt(sumaveragebetamount)));
  93. //console.log("[GameBeta]" + gameBeta);
  94. console.log("[Prediction-HighestBet] " + numberWithCommas(parseInt(highestBetAmount)) +
  95. // " [Prediction-Bonus-Pot] " + numberWithCommas(parseInt(gameBonus)) +
  96. " [Estimated Bonus In Bits] " + parseFloat(estimatedbonus).toFixed(2) +
  97. " [Required to bet] " + parseFloat((bonusPercentRequired / 100) * betSize).toFixed(2));
  98.  
  99. if(highestBetAmount < skipGamesWhereMaxBetIsOver){
  100. betSize = highestBetAmount / getRandomInt(minBetSizeDivider,maxBetSizeDivider);
  101. console.log("Bet " + betSize + " bits cash out at " + cashout);
  102.  
  103. if(betPlaced != true && (estimatedbonus >= (bonusPercentRequired / 100) * betSize)){
  104.  
  105. engine.placeBet(Math.round(betSize)*100,cashout,false);
  106. console.log("bet placed for " + betSize + " bits cash out at"+cashout);
  107. betPlaced=true;
  108. }else{
  109. console.log("[Skipping Game] Not enough bonus.");
  110. }
  111.  
  112. }else{
  113. console.log("[Skipped Game] highestBetAmount is too great (skipGamesWhereMaxBetIsOver)");
  114.  
  115. }
  116. }
  117. });
  118.  
  119. engine.on('game_started',function (data){
  120. cashedout = false;
  121. emergencycashout = false;
  122. cashedOutUsersCount = 0;
  123. CashedOutUsers = [];
  124. RemaindingUsers = [];
  125. HighestBetUsers = [];
  126. ThisGamesUserInfo = data;
  127.  
  128. //console.log("[GAME-STARTED]")
  129. GetTheHighestBetAmount(data);
  130. console.log("[GAME-STARTED] - Users betting the same betting amount " + HighestBetCount + " [User(S)] " + highestBetUser );
  131. //console.log("Highest Bet Users Array Below");
  132. //console.log(highestBetUser);
  133. CleanUpvars();
  134.  
  135. var GameValueBits = CalculateGamesActualValueInBits(data);
  136. pendingCashoutsValue = GameValueBits;
  137.  
  138. //console.log("[CHECK!]" + pendingCashoutsValue);
  139. gameBonus = GameValueBits / 100;
  140. var gameBeta=gameBonus/(highestBetAmount*100);
  141. ActualgameBeta = gameBeta;
  142. ExpectedBonus=((betSize*100)) * gameBeta;
  143. //console.log("[ACTUAL-GameValue] " + numberWithCommas(parseInt(GameValueBits)));
  144. console.log( "[ACTUAL-HighestBet] " + numberWithCommas(parseInt(highestBetAmount)) +
  145. " [ACTUAL-BonusAmount] " + numberWithCommas(parseInt(gameBonus)) +
  146. " [Expected Bonus] " + parseFloat(ExpectedBonus).toFixed(2));
  147.  
  148. // if(ExpectedBonus < (1.6 / 100) * betSize){
  149.  
  150. if(ExpectedBonus < ((bonusPercentRequired - BonusPredictionErrorThreshold) / 100) * betSize){
  151. if(betPlaced == true){
  152. engine.cashOut();
  153. console.log("[Cashing Out Early] Prediction wrong.");
  154. dontAdd=true;
  155. }
  156. }
  157.  
  158. ActualBonusSum = gameBonus;
  159. CreateUpdateUserHistory(data);
  160. console.log("Won " + WonAmt + " Lost " + LostAmt);
  161.  
  162. //People array has now been populated with all the bets that the user has made.
  163.  
  164. //loop through all the players that are playing this game and sum their average bet amount in an attempt to determine the games value.
  165.  
  166. sumaveragebetamount=0;
  167. Sumofbets=0;
  168.  
  169. });
  170.  
  171. var tempBonusPot = 0;
  172. var cashedOutUsersCount = 0;
  173. var FinalUserBonusObject ={};
  174. var CurrentPayout = 0;
  175. var HighestBetUserCashedOut = false;
  176.  
  177. engine.on('cashed_out',function (data){
  178.  
  179. cashedOutUsersCount++;
  180.  
  181. var user = data.username;
  182. var index = HighestBetUsers.indexOf(user);
  183. if(index >- 1){
  184. HighestBetUsers.splice(index,1);
  185. console.log("A highest better cashed out, highest betters remainding -> " + HighestBetUsers);
  186. }
  187.  
  188. if(user == highestBetUser){
  189. HighestBetUserCashedOut = true;
  190. }
  191.  
  192. CashedOutUsers[CashedOutUsers.length]={
  193. name:user,
  194. bet:ThisGamesUserInfo[user].bet,
  195. bonus:ThisGamesUserInfo[user].bet*ActualgameBeta
  196. };
  197.  
  198. //console.clear();
  199. //console.log('LastCashoutbet'+CashedOutUsers[CashedOutUsers.length-1].bet);
  200. var i = CashedOutUsers.length;
  201.  
  202. var UsersBonus=0;
  203. var TempBonusSum = ActualBonusSum;
  204. //console.log("[BonusTotal]"+ActualBonusSum);
  205. var thisbet=0;
  206.  
  207. do{
  208. i--;
  209. thisbet=CashedOutUsers[i].bet;
  210.  
  211. if(thisbet>0){
  212. UsersBonus=thisbet*ActualgameBeta;
  213. TempBonusSum-=UsersBonus;
  214. }
  215. //console.log('[USER]'+CashedOutUsers[i].name+"[BET]"+CashedOutUsers[i].bet+"[BONUS]"+UsersBonus+"[ReminingBonus]"+TempBonusSum);
  216.  
  217. //console.log("[ReminingBonus] " + TempBonusSum + " [Original] " + ActualBonusSum);
  218. }while(CashedOutUsers > 0);
  219. //console.log("[ReminingBonus] " + TempBonusSum + " [Original] " + ActualBonusSum);
  220.  
  221. if(emergencycashout == false && betPlaced == true){
  222. //if(TempBonusSum < ExpectedBonus && HighestBetUsers.length <= 0){
  223. if(HighestBetUsers.length <= 0 && TempBonusSum < ExpectedBonus && betPlaced == true){
  224.  
  225. console.log("[Highest Better CashedOut] Attempting Bonus Steal!")
  226. emergencycashout=true;
  227. setTimeout(function (){engine.cashOut();},10);
  228.  
  229. }
  230.  
  231. if(TempBonusSum < ExpectedBonus && betPlaced == true){
  232. console.log("[Optimum bonus Amount] Attempting Bonus Steal!")
  233. emergencycashout=true;
  234. setTimeout(function (){engine.cashOut();},10);
  235.  
  236. }
  237.  
  238.  
  239. var remaindingUsers = document.getElementsByClassName("user-playing").length;
  240. if(remaindingUsers <= 10 && betPlaced==true){
  241. if(engine.getCurrentPayout()> 1.3){
  242. console.log("Emergency Cashout not enough users playing!!!!!")
  243. emergencycashout=true;
  244. engine.cashOut();
  245. }
  246. }
  247. }
  248.  
  249.  
  250. if(user == engine.getUsername()){
  251. cashedoutat=data.stopped_at;
  252. cashedout=true;
  253. }
  254.  
  255. });
  256.  
  257. var won = 0;
  258. var max = 20;
  259.  
  260. engine.on('game_crash',function (data){
  261.  
  262. HighestBetUserCashedOut = false;
  263. HighestBetCount = 0;
  264. betPlaced = false;
  265.  
  266. var balance = engine.getBalance() / 100;
  267. console.log("balance is " + balance);
  268. if(balance - betSize <= stopLoss){
  269. engine.stop();
  270. console.log("Safety stop loss triggered");
  271. betSize=0;
  272.  
  273. }
  274. if(engine.lastGamePlay()== "LOST"){
  275. lastgamestatus = "LOST";
  276. }else if(engine.lastGamePlay()== "WON"){
  277. lastgamestatus = "WON";
  278. }
  279.  
  280. if(lastgamestatus == "LOST"){
  281. LostAmt += betSize;
  282. difference += betSize;
  283. //betSize = calcBet(LostAmt,cashout);
  284.  
  285. console.log("BetSize calculated to " + betSize);
  286. lostcount++;
  287.  
  288.  
  289. }else if(lastgamestatus == "WON"){
  290.  
  291. var wonamtcalc = betSize*(cashedoutat / 100);
  292. wonamtcalc = wonamtcalc - betSize;
  293.  
  294. if(LostAmt>0){
  295. difference -= wonamtcalc;
  296. WonAmt += wonamtcalc;
  297.  
  298.  
  299. if(WonAmt>=LostAmt){
  300. WonAmt = 0;
  301. LostAmt = 0;
  302. betSize = basebet;
  303. basebet += 0.25;
  304. lostcount = 0;
  305. minBetSizeDivider-=1;
  306. minBetSizeDivider-=1;
  307. }
  308. }else{
  309. betSize = basebet;
  310. }
  311. }else{
  312. betSize=5;
  313. }
  314.  
  315. console.log("[PLAYED]["+engine.lastGamePlay()+"][LOSS_AMT] " + LostAmt + " [WON_AMT] " + WonAmt + " [Differnce] " + difference);
  316.  
  317. console.log("[WonAmt] " + WonAmt + " [Lost Amt] " + LostAmt);
  318. remaindingUsers=0;
  319.  
  320. crashedat = data.game_crash;
  321. console.log("[GAME-CRASHED]" + crashedat);
  322. ActualBonusSum = 0;
  323.  
  324. var lastbonus = data.bonuses;
  325. var ourbonus = parseFloat(lastbonus[engine.getUsername()] / 100);
  326. console.log("OurBonus " + ourbonus);
  327. if(LostAmt > 0 && ourbonus > 0){
  328. WonAmt += ourbonus;
  329. }
  330.  
  331. for(var key in lastbonus){
  332. lastbonus[key] = lastbonus[key]/100;
  333. ActualBonusSum += lastbonus[key];
  334. }
  335.  
  336. if(emergencycashout == true){
  337. console.log("EMERGENCY CASHOUT");
  338. }
  339. //console.log(lastbonus);
  340. //console.log("[CONFIRM]ActualBonusSumwas"+numberWithCommas(parseInt(ActualBonusSum)));
  341.  
  342. });
  343.  
  344.  
  345. function CleanUpvars(){
  346. NewUsersAddedThisRound=0;
  347. TotalPlayersLastGame=0;
  348. //TotalPlayersPlaying=0;
  349. gameBonus=0;
  350. //console.clear();
  351. }
  352.  
  353. //Get the average bet amount for the user that is passed to this function
  354. function GetAverageBetAmount(user){
  355.  
  356. Sumofbets = 0;
  357. Averagebetincrease = 0;
  358. averagebetdecrease = 0;
  359. AverageBetSize = 0;
  360. var userbetcount = Object.keys(People[user]).length;
  361.  
  362. //loop through the bets the user has made
  363. for(i=0;i<userbetcount;i++){
  364.  
  365. //Sumallthebets-
  366. if(People[user][i]>0){
  367. Sumofbets+=People[user][i];
  368. }
  369. }
  370.  
  371. //calculatethemeanaveragebetsizeforthisuserinbits
  372. AverageBetSize=Sumofbets/userbetcount;
  373.  
  374. return AverageBetSize;
  375. }
  376.  
  377. function CreateUpdateUserHistory(data){
  378.  
  379. //TODO be able to set to history to last N bets.
  380.  
  381. //Loop through the data from bustabit
  382. var i = 0;
  383. for(i = 0; i < Object.keys(data).length; i++){
  384.  
  385. //Check that the user is already in our object
  386. if(data[Object.keys(data)[i]].username in People){
  387. //The userisinourobject,findthelenngthoftheobject,incrementitandaddthebettotheendofthelist
  388. People[data[Object.keys(data)[i]].username][Object.keys(People[data[Object.keys(data)[i]].username]).length]=data[Object.keys(data)[i]].bet/100;
  389. }else{
  390. //Theuserisnotinourobjectlist,initaliseanewobjectwiththeusernameasthekey
  391. People[data[Object.keys(data)[i]].username]={};
  392.  
  393. //addthebetamountdividedby100tothenewlyinitiatedusernameobject
  394. People[data[Object.keys(data)[i]].username][Object.keys(People[data[Object.keys(data)[i]].username]).length]=data[Object.keys(data)[i]].bet/100;
  395.  
  396. NewUsersAddedThisRound++;
  397. }
  398.  
  399. }
  400. TotalPlayersLastGame=i;
  401.  
  402. //console.log(People);
  403. //console.log('LastPlayerCount'+TotalPlayersLastGame);
  404. //console.log('ThisPlayerCount'+TotalPlayersPlaying);
  405. //console.log('TotalRecordedusers'+Object.keys(People).length);
  406. //console.log('Newusersaddedthisround'+NewUsersAddedThisRound);
  407.  
  408. }
  409.  
  410. //Post game starting
  411. function CalculateGamesActualValueInBits(data){
  412. var ActualGameValue=0;
  413.  
  414. for(i=0;i<Object.keys(data).length;i++){
  415. ActualGameValue+=data[Object.keys(data)[i]].bet/100;
  416. }
  417.  
  418. return ActualGameValue;
  419. }
  420.  
  421. function GetTheHighestBetAmount(data){
  422.  
  423. bets=[];//Resetbets
  424. for(var i=0;i<Object.keys(data).length;i++){
  425. bets.push(data[Object.keys(data)[i]].bet);//Getallbets
  426. }
  427.  
  428. for(var i=0;i<Object.keys(data).length;i++){
  429. if(data[Object.keys(data)[i]].bet==bets.max()){
  430. HighestBetCount++;
  431. highestBetUser=data[Object.keys(data)[i]].username;
  432. highestBetAmount=data[Object.keys(data)[i]].bet/100;
  433. HighestBetUsers.push(highestBetUser);
  434. }
  435. }
  436.  
  437. }
  438.  
  439. function numberWithCommas(x){
  440. return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",");
  441. }
  442.  
  443. function calcBet(LostAmt,cashout){
  444. var bet=0;
  445. var lost;
  446. if(lostcount >= 2){
  447. lost = lostcount;
  448. }else{
  449. lost = 2;
  450. }
  451. do{ bet++;
  452. var wonamtcalc=bet*(cashout/100);
  453. wonamtcalc=wonamtcalc-bet;
  454.  
  455. }while(wonamtcalc<=LostAmt/lost);
  456.  
  457. return bet;
  458. }
  459.  
  460.  
  461. //Someuselessfunction :
  462. Array.prototype.max=function (){
  463. return Math.max.apply(null,this);
  464. };
  465.  
  466. function getRandomInt(min,max){
  467. return Math.floor(Math.random()*(max-min+1))+min;
  468. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement