View difference between Paste ID: xk5hD4an and QtVsFV6s
SHOW: | | - or go back to the newest paste.
1
/*
2
* VoxelLoop Gaming BustaBit Bot (VLG-BB)
3
* Developed by CurtisVL
4
*/
5
6
//Version
7
var version = 1.73;
8
9
//----------Site----------//
10
var BustaBit = true; 
11
// true = using BustaBit - false = using CS:GO Crash
12
13
14
//----------Bet amount----------//
15
var autoBaseBetEnabled = true; 
16
// Default: false - Enable/Disable auto base bet. Described below.
17
18
var maxLossCount = 8;
19
// Default: 5 - Max amount of loses to account for with autoBaseBetEnabled set to true.
20
21
var percentageOfTotal = 100;
22
// Default: 100 - Percentage of total balance to use when max loss is hit. (100 = 100%)
23
24
var baseBet = 10; 
25
// Default: 100 - Manual base bet, only used when autoBaseBetEnabled is false.
26
27
var cashOut = 1.50; 
28
// Default: 1.13 - Cash out at this amount. Some modes will have a locked cash out.
29
30
var maxBet = 99999999; 
31
// The max amount to bet - The lower this number, the slower you will earn back your loses.
32
33
34
//----------Crash Average----------//
35
//(Only used in modes 1)
36
37
var highAverage = 1.85; 
38
// Default: 1.85 - Average multiplier to use the highAverageMultiplier.
39
40
var highAverageMultiplier = 2.0;
41
// Default: 2.0 - Multiplier to use when crash average is above highAverage.
42
43
var lowAverage = 1.70;
44
// Default: 1.70 - Average multiplier to use the lowAverageMultiplier.
45
46
var lowAverageMultiplier = 1.02;
47
// Default: 1.05 - Multiplier to use when crash average is below lowAverage.
48
49
var waitForBeforeRecoveryEnabled = false;
50
// Default: false - Wait for x multiplier to hit before placing the recovery bet.
51
52
var waitForBeforeRecovery = 1.30;
53
// Default: 1.30 - Amount to wait for before placing recovery bet.
54
55
//----------Mode 2 Settings----------//
56
var mode2multiplyBy = 1.16;
57
// Default: 1.16 - Amount to multiply the base by on each loss.
58
59
var mode2waitAfterWin = 8;
60
// Default: 8 - How many rounds to wait after a win before placing again. (0 to disable)
61
62
//----------Mode 3 Settings----------//
63
var mode3cashOut = 2.1;
64
// Default: 2.1 - Amount to cash out in mode 3.
65
66
//----------Misc----------//
67
var maxNegative = 99999999; 
68
// The max amount to allow the profit to drop to before the bot will stop.
69
70
var randomBreak = 0; 
71
// Default: 0 - When a round starts, the bot will generate a number between 1 and 100.
72
// If the generated number is smaller than the randomBreak, the bot will wait a game before betting.
73
74
var clearConsole = true;
75
// Default: true - Clear the console after 500 minutes, usefull for running the bot on systems with low RAM.
76
77
var limitedConsole = false;
78
// Default: false - Limited console output, useful for running the bot 24/7, helps keep the browser responsive.
79
80
var reserveAmount = 10000;
81
// Default: 10000 - Amount to reserve after profiting.
82
83
//----------Modes----------//
84
var mode = 4; 
85
86
// 1 = Default - Mode will place a bet at the base amount and base multiplier. On loss, it will raise the bet by 4x and increase the multiplier to a max of 1.33x.
87
// *Deprecated* 2 = 9x Seeker - Mode will place the base amount and 9x multiplier. On loss, it will raise the bet by mode2multiplyBy until a 10x is reached.
88
// *Deprecated* 3 = Martingale - Multiplies on loss.
89
// 4 = Modified Pluscoup - The real deal.
90
91
//Do not edit below this line!
92
93
var user;
94
var startBalance = engine.getBalance();
95
var currentGame = -1;
96
var currentBet;
97
var lastBet;
98
var gameResult;
99
var gameInside;
100
var random;
101
var takingBreak = false;
102
var firstGame = true;
103
var lossCount = 0;
104
var winCount = 0;
105
var currentMultiplier;
106
var lossBalance = 0;
107
var firstLoss = true;
108
var lastResult;
109
var currency;
110
var useCrashAverage = true;
111
var startup = true;
112
var d = new Date();
113
var startTime = d.getTime();
114
var newdate;
115
var timeplaying;
116
var lastCrash;
117
var betPlaced = false;
118
var tempBet;
119
var tempCrash;
120
var gameAverage = 0;
121
var currentGame = 0;
122
var game1;
123
var game2;
124
var game3;
125
var game4;
126
var resetLoss;
127
var waitTime = -1;
128
var lossStreak;
129
var temptime = 120;
130
var firstGrab = true;
131
var recovering = false;
132
var excludeAmount = 0;
133
134
if(startup == true){
135
	if(mode == 2 || mode == 3){
136
		window.alert("These modes have been removed! Please use modes 1 or 4.");
137
		engine.stop();
138
	}
139
	
140
    printStartup();
141
	startup = false;
142
}
143
144
if(BustaBit == true){
145
	user = engine.getUsername();
146
	currency = "bits";
147
}
148
else{
149
	user = engine.getSteamID();
150
	currency = "coins";
151
}
152
153
//Game Starting
154
engine.on('game_starting', function(info){
155
	currentGameID = info.game_id;
156
	var random = randNum(1,100);
157
	
158
	if(game4 != null){
159
		gameAverage = (((game1 + game2) + (game3 + game4)) / 4);
160
	}
161
	else{
162
		gameAverage = 0;
163
	}
164
	
165
	if(random < randomBreak){
166
		takingBreak = true;
167
		console.log("Taking a random break this round!");
168
	}
169
	else{
170
		takingBreak = false;
171
	}
172
	
173
	if(gameAverage != 0 && mode == 1){
174
		console.log("Crash average: " + gameAverage + "x");
175
	}
176
	
177
	//Mode 4 Exclude
178
	if(mode == 4 & firstGame == true){
179
		if((engine.getBalance() - (excludeAmount * 100)) >= ((reserveAmount * 2) * 100)){
180
			mode4Exclude();
181
		}
182
	}
183
	
184
	function mode4Exclude(){
185
		if((engine.getBalance() - (excludeAmount * 100)) >= ((reserveAmount * 2) * 100)){
186
			console.log("Doubled exclude balance! Reserving balance for bust.");
187
			excludeAmount += reserveAmount;
188
		}
189
		if((engine.getBalance() - (excludeAmount * 100)) >= ((reserveAmount * 2) * 100)){
190
			mode4Exclude();
191
		}
192
	}
193
	
194
	//Auto base bet
195
	if(autoBaseBetEnabled == true && lastResult == "WON" && mode != 4 || firstGame == true && mode != 4){
196
		var divider = 100;
197
		for (i = 0; i < maxLossCount; i++) {
198
			if(mode == 1){
199
				divider += (100 * Math.pow(4, (i + 1)));
200
			}
201
			if(mode == 2){
202
				divider += (100 * Math.pow(mode2multiplyBy, (i + 1)));
203
			}
204
			if(mode == 3 || mode == 4){
205
				divider += (100 * Math.pow(2, (i + 1)));
206
			}
207
		}
208
		baseBet = Math.min(Math.max(1, Math.floor((percentageOfTotal/100) * engine.getBalance() / divider)), maxBet * 100);
209
	}
210
	
211
	//Mode 4 Auto base bet
212
	if(autoBaseBetEnabled == true && lastResult == "WON" && mode == 4 || firstGame == true && mode == 4){
213
		//var tempBalance = (engine.getBalance() - (excludeAmount * 100));
214
		var divider = 100;
215
		for (i = 0; i < maxLossCount; i++) {
216
			if(mode == 4){
217
				divider += (100 * Math.pow(2, (i + 1)));
218
			}
219
		}
220
		baseBet = Math.min(Math.max(1, Math.floor((percentageOfTotal/100) * (engine.getBalance() - (excludeAmount * 100)) / divider)), maxBet * 100);
221
	}
222
	
223
	if(takingBreak == false){
224
		
225
		//Gamemode 1 (Default)
226
		if(mode == 1){
227
			
228
			//Shutdown on max loss
229
			if(lossCount > maxLossCount){
230
				console.log("Max loss count reached! Shutting down...");
231
				engine.stop();
232
			}
233
			
234
			//Reset cooldown
235
			if (resetLoss == true) {
236
				if (lossCount == 0) {
237
				resetLoss = false;
238
			}
239
			else {
240
				lossCount--;
241
				console.log('Waiting a few games! Games remaining: ' + lossCount);
242
				return;
243
				}
244
			}
245
			
246
			//First Game
247
			if(firstGame == true && betPlaced == false){
248
				currentBet = baseBet;
249
				currentMultiplier = cashOut;
250
				if(game4 == null){
251
					currentMultiplier = 1.02;
252
				}
253
				firstGame = false;
254
				placeBet();
255
				newdate = new Date();
256
				timeplaying = ((newdate.getTime() - startTime) / 1000) / 60;
257
				betPlaced = true;
258
			}
259
			
260
			//On Lost
261
			if(lastResult == "LOST" && betPlaced == false && firstGame == false){
262
				
263
				if(firstLoss == true){
264
					lossBalance = 0;
265
					lossStreak = 0;
266
					firstLoss = false;
267
				}
268
				
269
				if(lastCrash >= waitForBeforeRecovery && waitForBeforeRecoveryEnabled == true){
270
					var lastLoss = currentBet;
271
					lossBalance += lastLoss;
272
					lastLoss /= 4;
273
					lossStreak++;
274
					
275
					currentBet *= 4;
276
					currentMultiplier = 1 + (lossBalance / currentBet);
277
					console.log("Bet changed to: " + currentBet);
278
					if(game4 == null){
279
						currentMultiplier = 1.02;
280
					}
281
					placeBet();
282
					betPlaced = true;
283
				}
284
				else if (waitForBeforeRecoveryEnabled == true){
285
					console.log("Waiting for " + waitForBeforeRecovery + "x before placing recovery bet.");
286
					console.log("----------------------------");
287
				}
288
				else if (waitForBeforeRecoveryEnabled == false){
289
					var lastLoss = currentBet;
290
					lossBalance += lastLoss;
291
					lastLoss /= 4;
292
					lossStreak++;
293
					
294
					currentBet *= 4;
295
					currentMultiplier = 1 + (lossBalance / currentBet);
296
					console.log("Bet changed to: " + currentBet);
297
					if(game4 == null){
298
						currentMultiplier = 1.02;
299
					}
300
					placeBet();
301
					betPlaced = true;
302
				}
303
			}
304
			
305
			//On Win
306
			if(lastResult == "WON" && betPlaced == false){
307
				
308
				currentBet = baseBet;
309
				currentMultiplier = cashOut;
310
				firstLoss = true;
311
				
312
				if(lossCount == 0 && useCrashAverage == true && gameAverage != 0){
313
					if(gameAverage < highAverage){
314
						currentMultiplier = cashOut;
315
					}
316
					if(gameAverage >= highAverage){
317
						currentMultiplier = highAverageMultiplier;
318
					}
319
					
320
					if(gameAverage < lowAverage){
321
						currentMultiplier = lowAverageMultiplier;
322
					}
323
				}
324
				
325
				if(game4 == null){
326
					currentMultiplier = 1.02;
327
				}
328
			
329
				placeBet();
330
				betPlaced = true;
331
			}
332
		}
333
		
334
		//Gamemode 4 (Pluscoup Modified)
335
		if(mode == 4){
336
			//Shutdown on max loss
337
			if(lossCount > maxLossCount){
338
				console.log("Max loss count reached! Shutting down...");
339
				engine.stop();
340
			}
341
			
342
			//Reset cooldown
343
			if (resetLoss == true) {
344
				if (lossCount == 0) {
345
				resetLoss = false;
346
			}
347
			else {
348
				lossCount--;
349
				console.log('Waiting a few games! Games remaining: ' + lossCount);
350
				return;
351
				}
352
			}
353
			
354
			//First Game
355
			if(firstGame == true && betPlaced == false){
356
				currentBet = baseBet;
357
				currentMultiplier = cashOut;
358
				firstGame = false;
359
				placeBet();
360
				newdate = new Date();
361
				timeplaying = ((newdate.getTime() - startTime) / 1000) / 60;
362
				betPlaced = true;
363
			}
364
			
365
			//On Lost
366
			if(lastResult == "LOST" && betPlaced == false){
367
				if(firstLoss == true){
368
					lossBalance = 0;
369
					firstLoss = false;
370
					recovering = true;
371
				}
372
				lossBalance += lastBet;
373
				Math.ceil(lossBalance);
374
				placeBet();
375
				betPlaced = true;
376
				console.log("Amount to recover: " + lossBalance);
377
			}
378
			
379
			//On Win
380
			if(lastResult == "WON" && betPlaced == false){
381
				if(excludeAmount < 0){
382
					excludeAmount = 0;
383
				}
384
				
385
				if (recovering == true && lossBalance > 0){
386
					lossBalance -= ((currentBet * cashOut) - currentBet);
387
					Math.ceil(lossBalance);
388
					console.log("Amount to recover: " + lossBalance);
389
					currentBet *= 2;
390
					if((lossBalance * 2) < currentBet && lossBalance != 0){
391
						currentBet = (lossBalance * 2);
392
					}
393
					if (lossBalance <= 0) {
394
					    currentBet = baseBet;
395
					}
396
				}
397
				else if(lossBalance <= 0 && recovering == true){
398
					lossBalance = 0;
399
					console.log("Loss recovered!");
400
					firstLoss = true;
401
					currentBet = baseBet;
402
					recovering = false;
403
					
404
					if((engine.getBalance() - (excludeAmount * 100)) >= ((reserveAmount * 2) * 100)){
405
						console.log("Doubled start balance! Reserving balance for bust.");
406
						excludeAmount += reserveAmount;
407
					}
408
				}
409
				
410
				if(currentBet >= ((engine.getBalance() / 100) - excludeAmount)){
411
					console.log("Not enough balance to place next recovery bet!");
412
					if(excludeAmount > 0){
413
						excludeAmount -= reserveAmount;
414
						console.log("Using reserve balance...");
415
					}
416
					currentBet = baseBet;
417
					recovering = false;
418
					firstLoss = true;
419
					lossBalance = 0;
420
					placeBet();
421
					betPlaced = true;
422
				}
423
				
424
				else{
425
					placeBet();
426
					betPlaced = true;
427
				}
428
			}
429
		}
430
	}
431
});
432
433
engine.on('cashed_out', function(data){
434
	
435
});
436
437
engine.on('game_crash', function(data){
438
	betPlaced = false;
439
	gameResult = engine.lastGamePlay();
440
	gameInside = engine.lastGamePlayed();
441
	lastCrash = (data.game_crash / 100);
442
	
443
	newdate = new Date();
444
	timeplaying = ((newdate.getTime() - startTime) / 1000) / 60;
445
	
446
	if(takingBreak == true)
447
	{
448
		takingBreak = false;
449
	}
450
	
451
	if(mode == 4 && gameResult == "WON"){
452
		if((engine.getBalance() - (excludeAmount * 100)) >= ((reserveAmount * 2) * 100)){
453
			console.log("Doubled exclude balance! Reserving balance for bust.");
454
			excludeAmount += reserveAmount;
455
		}
456
	}
457
	
458
	if(gameResult == "WON" && gameInside == true){
459
		lastResult = "WON";
460
		winCount += 1;
461
		lossCount = 0;
462
		printResults();
463
	}
464
	else if(gameResult == "LOST" && gameInside == true){
465
		lastResult = "LOST";
466
		lossCount += 1;
467
		winCount = 0;
468
		printResults();
469
	}
470
	
471
	if(clearConsole == true){
472
		if(timeplaying == temptime){
473
			temptime += 120;
474
			console.clear();
475
		}
476
	}
477
	
478
	currentGame++;
479
	tempCrash = (data.game_crash / 100);
480
	if (tempCrash >= 2.0){
481
		tempCrash = 2.0;
482
	}
483
	if (tempCrash < 1.0){
484
		tempCrash = 1.0;
485
	}
486
	if (currentGame == 1){
487
		game1 = tempCrash;
488
	}
489
	else if(currentGame == 2){
490
		game2 = tempCrash;
491
	}
492
	else if(currentGame == 3){
493
		game3 = tempCrash;
494
	}
495
	else if(currentGame == 4){
496
		game4 = tempCrash;
497
	}
498
	else if(currentGame >= 5){
499
		currentGame = 1;
500
		game1 = tempCrash;
501
	}
502
});
503
504
function placeBet(){
505
	if(((engine.getBalance() / 100) - currentBet) < ((startBalance / 100) - maxNegative)){
506
		console.log('Max negative reached! Stopping bot.');
507
		engine.stop();
508
	}
509
	if(currentBet > maxBet){
510
		console.log("Max bet reached!");
511
		currentBet = maxBet;
512
	}
513
	engine.placeBet(currentBet * 100, Math.round(currentMultiplier * 100), false);
514
	console.log("----------------------------");
515
	console.log("Betting " + currentBet + " " + currency + ", cash out at " + currentMultiplier + "x");
516
	lastBet = currentBet;
517
}
518
519
function printStartup(){
520
	console.log("Bot started!");
521
	console.log(" ");
522
	console.log("VoxelLoop Bet-Bot");
523
	console.log("Version " + version);
524
	console.log("Start balance: ", (startBalance / 100));
525
	console.log(" ");
526
}
527
528
function printResults(){
529
	if(limitedConsole == false){
530
		if(currentGameID != null){
531
			console.log("Game ID: ", currentGameID);
532
		}
533
		console.log("Crashed at: " + lastCrash + "x"); 
534
		if(lastResult == "LOST"){
535
			console.log("Result: %c LOST", 'background: #ffffff; color: #ff0000');
536
		}
537
		else{
538
			console.log("Result: %c WON", 'background: #ffffff; color: #339933');
539
		}
540
		console.log("Win Count: ", winCount);
541
		console.log("Loss Count: ", lossCount);
542
		console.log(" ");
543
		console.log('Session profit: ' + ((engine.getBalance() - startBalance) / 100).toFixed(2) + ' ' + currency + ' in ' + Math.round(timeplaying) + ' minutes.');
544
		console.log(" ");
545
		if(mode == 4 && excludeAmount != 0){
546
			console.log("Reserve balance: " + excludeAmount);
547
		}
548
	}
549
	else{
550
		if(currentGameID != null){
551
			console.log("Game ID: ", currentGameID);
552
		}
553
		console.log('Session profit: ' + ((engine.getBalance() - startBalance) / 100).toFixed(2) + ' ' + currency + ' in ' + Math.round(timeplaying) + ' minutes.');
554
		if(mode == 4 && excludeAmount != 0){
555
			console.log("Reserve balance: " + excludeAmount);
556
		}
557
	}
558
}
559
560
function randNum(min,max)
561
{
562
    return Math.floor(Math.random()*(max-min+1)+min);
563
}