Guest User

driver.js

a guest
Dec 15th, 2017
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 105.81 KB | None | 0 0
  1. var config = require('./config');
  2. var fs = require('fs');
  3. var html = '<!DOCTYPE html><html><head> <title>csgoelements - websocket</title> <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css"> <style>html, body{height: 100%;}body{margin: 0; padding: 0; width: 100%; color: #B0BEC5; display: table; font-weight: 100; font-family: \'Lato\';}.container{text-align: center; display: table-cell; vertical-align: middle;}.content{text-align: center; display: inline-block;}.title{font-size: 72px; margin-bottom: 40px;}</style></head><body><div class="container"> <div class="content"> <div class="title">Cookies? Cookies!</div></div></div></body></html>';
  4. var server = require('http').createServer(function(request, response) {
  5. response.writeHeader(200, {"Content-Type": "text/html"});
  6. response.write(html);
  7. response.end();
  8. });
  9. var siteUrl = "http://csgoelements.com";
  10. var io = require('socket.io')(server);
  11. var crypto = require('crypto');
  12. var request = require('request');
  13. var mysql = require('mysql');
  14. var sha256 = require('sha256');
  15. var math = require('mathjs');
  16. var randomstring = require("randomstring");
  17. var http = require('http');
  18. var eyes = require('eyes');
  19. var xml2js = require('xml2js');
  20. var parser = new xml2js.Parser({explicitArray : false});
  21. var connection = mysql.createConnection({
  22. host : config.host,
  23. user : config.user,
  24. password : config.password,
  25. database : config.db
  26. }); //SITE init end
  27.  
  28. //BOT init start
  29. var SteamCommunity = require('steamcommunity');
  30. var community = new SteamCommunity();
  31. var SteamUser = require('steam-user');
  32. var TradeOfferManager = require('steam-tradeoffer-manager');
  33. var SteamTotp = require('steam-totp');
  34. //BOT init stop
  35.  
  36. //SITE SETTINGS
  37. var prices = JSON.parse(fs.readFileSync(__dirname + '/prices.txt'));
  38. var users = {};
  39. var chat_muted = false;
  40. var isSteamRIP = false;
  41. var pause = false;
  42. var lastrolls = [];
  43. var last_message = {};
  44. var usersBr = {};
  45. var chat_history = [];
  46. var currentBets = {'red': [], 'green': [], 'black': []};
  47. var accept = 100;
  48. var wait = 50;
  49. var timer = -1;
  50. var currentRollid = 0;
  51. var winningNumber = 0;
  52. var actual_hash = sha256(generate(64)+'FUCKINGRETARDSINTHISFUCKINGCSGOGAMEXDDD'+sha256('ripGAME')+generate(2));
  53. var xd123;
  54. //COINFLIP
  55. var cfBets = [];
  56. var betUsers = {};
  57.  
  58. //JACKPOT
  59. var jpTime = 20; //POOL TIMELEFT YOU WANT IN SECONDS
  60.  
  61. var jpPool = 0;
  62. var jpTimeleft = -1;
  63. var jpAllow = true;
  64. var jpBets = [];
  65. var jpWinners = [];
  66. var jpUsers = {};
  67.  
  68. //CRASH
  69. var cserverSeed = 'B3YnUvGqUnUWX4Ne+a@qdLvX-SR-6N$AjUh?SWZB^GsN@3_pWNY7Y2+WrK92=H_UM6x=vpJ!vX9z_29MRh-c&d3Y_py4afhnWQQxuJWkHdGxrt@Z2NEX!RabHXy%L@+T7ZN#hgq5fv5s+zxaL-Nv+^Uu*V+Eq+&ApV_!3dp6bFX6%tffps^M%TE%L2=APF%5xnh$9LvMWXh9bq+$xY2VQKbRj7+nbK+YCA?wvs5nJ2*xusY4=Dyf?EGPB!TuMcjD';
  70. var cclientSeed = '7nb53jfbebfx4jhaxqs4hufq9jm68rz65yxw84xa33xwb7wxmersww5t6gp2xdus';
  71. var cstart_in = 5;
  72. var ccurrenthash = 'dog';
  73. var ccrashpoint = 0;
  74. var ctime = 0;
  75. var cgame = 0;
  76. var csecret = '';
  77. var cbets = [];
  78. var players_cashouts = {};
  79. var cgame_history = [];
  80. var cstatus = 'closed';
  81. var play_try = {};
  82. var startTime;
  83.  
  84. function crashGenHash(serverSeed) {
  85. return crypto.createHash('sha256').update(serverSeed).digest('hex');
  86. }
  87.  
  88. function crashPoint(serverSeed) {
  89. var hash = crypto.createHmac('sha256', serverSeed).update(cclientSeed).digest('hex');
  90.  
  91. // In 1 of 25 games the game crashes instantly.
  92. if (divisible(hash, 10))
  93. return 0;
  94.  
  95. // Use the most significant 52-bit from the hash to calculate the crash point
  96. var h = parseInt(hash.slice(0,52/4),16);
  97. var e = Math.pow(2,52);
  98.  
  99. return Math.floor((100 * e - h) / (e - h));
  100. }
  101.  
  102. function divisible(hash, mod) {
  103. // We will read in 4 hex at a time, but the first chunk might be a bit smaller
  104. // So ABCDEFGHIJ should be chunked like AB CDEF GHIJ
  105. var val = 0;
  106.  
  107. var o = hash.length % 4;
  108. for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) {
  109. val = ((val << 16) + parseInt(hash.substring(i, i+4), 16)) % mod;
  110. }
  111.  
  112. return val === 0;
  113. }
  114.  
  115. function cstart_game(){
  116. csecret = crypto.randomBytes(20).toString('hex');
  117. ccurrenthash = crashGenHash(ccurrenthash+csecret+cgame);
  118. ccrashpoint = 0;
  119. ctime = 0;
  120. cstart_in = 5;
  121. cbets = [];players_cashouts={};
  122. cstatus = 'open';
  123. io.sockets.to('crash').emit('crash info', {
  124. hash: ccurrenthash,
  125. players: cbets,
  126. start_in: parseFloat(cstart_in)
  127. });
  128. var cstart_timeout = setInterval(function(){
  129. cstart_in = (cstart_in - 0.01).toFixed(3);
  130. if(cstart_in < 0.00){
  131. clearInterval(cstart_timeout);
  132. cnew_game();
  133. }
  134. },10);
  135. }
  136.  
  137. function cnew_game() {
  138. cgame++;
  139. cstatus = 'closed';
  140. var cdrop = crashPoint(ccurrenthash);
  141. console.log("[CRASH] "+cgame+": "+(cdrop / 100)+""+" (DEBUG: "+cdrop+")");
  142. startTime = new Date(Date.now() + 5000);
  143. io.sockets.to('crash').emit('crash start', {
  144. multiplier: 1,
  145. time: 0,
  146. });
  147. var cgame_timeout = setInterval(function(){
  148. ctime++;
  149. ccrashpoint = Math.floor(100 * growthFunc(ctime));
  150. doCashouts(ccrashpoint/100);
  151. if(ccrashpoint >= cdrop){
  152. cstatus = 'drop';
  153. clearInterval(cgame_timeout);
  154. clearInterval(cshowgame_timeout);
  155. cmultiplier = growthFunc(ctime);
  156. io.sockets.to('crash').emit('crash end', {
  157. bet: 0,
  158. hash: ccurrenthash,
  159. multiplier: cmultiplier,
  160. profit: 0,
  161. secret: csecret
  162. });
  163. crash_limit({
  164. bet: 0,
  165. hash: ccurrenthash,
  166. multiplier: cmultiplier,
  167. profit: 0,
  168. secret: csecret,
  169. time: new Date().getTime()
  170. });
  171. setTimeout(function(){
  172. cstart_game();
  173. },5000);
  174. }
  175. });
  176. var cshowgame_timeout = setInterval(function(){
  177. io.emit('crash tick', {
  178. time: ctime,
  179. multiplier: growthFunc(ctime)
  180. });
  181. },250);
  182. }
  183.  
  184. function crash_limit(wartosc){
  185. if(cgame_history.length==15){
  186. cgame_history.shift();
  187. }
  188. cgame_history.push(wartosc);
  189. }
  190.  
  191. function growthFunc(ms) {
  192. var r = 0.00006;
  193. return Math.pow(Math.E, r * ms);
  194. }
  195.  
  196. function doCashouts(at) {
  197. cbets.forEach(function (play) {
  198. if ((play.done) || (!players_cashouts[play.profile.steamid])) return;
  199. if (players_cashouts[play.profile.steamid] <= at && players_cashouts[play.profile.steamid] <= growthFunc(ctime)) {
  200. console.log('runned cashout at'+at);
  201. crashWithdraw({
  202. steamid: play.profile.steamid
  203. });
  204. }
  205. });
  206. }
  207.  
  208. cstart_game();
  209.  
  210. //BOT SETTINGS
  211. var admin = config.admin;
  212. var botsteamid = config.botsteamid;
  213. var identitysecret = config.identitysecret;
  214. var sharedsecret = config.sharedsecret;
  215. var polling_interval = 5000;
  216. //BOT ACCOUNT DETALIS
  217. var details = {
  218. "accountName" : config.bot_username,
  219. "password" : config.bot_password,
  220. "twoFactorCode" : SteamTotp.generateAuthCode(sharedsecret)
  221. };
  222. //BOT CLIENT INIT
  223. var client = new SteamUser();
  224. //BOT MANAGER INIT
  225. var manager = new TradeOfferManager({
  226. "steam" : client,
  227. "domain" : config.manager_domain,
  228. "language" : config.manager_lang,
  229. "cancelTime" : config.manager_cancelTime
  230. });
  231.  
  232. client.logOn(details); //bot login
  233. connection.connect(); //db connect
  234.  
  235. var site_bots = manager;
  236. var bots_list = {'76561198338314767': manager};
  237.  
  238. /* */
  239. /* SITE PART */
  240. /* */
  241.  
  242. load();
  243. checkTimer();
  244. io.on('connection', function (socket) {
  245. var user = false;
  246. socket.on('init', function (init) {
  247. if(!init) return;
  248. if(init.game === 'roulette') socket.join('roulette');
  249. if(init.game === 'roulette') socket.emit('roulette round',timer/10,currentBets,actual_hash);
  250. if(init.game === 'roulette') socket.emit('roulette history',lastrolls);
  251. if(init.game === 'coinflip') socket.join('coinflip');
  252. if(init.game === 'coinflip') socket.emit('coinflip history',cfBets);
  253. if(init.game === 'jackpot') socket.join('jackpot');
  254. if(init.game === 'jackpot') socket.emit('jackpot round',jpTimeleft,jpBets,jpWinners);
  255. if(init.game === 'crash') socket.join('crash');
  256. if(init.game === 'crash') socket.emit('crash info', {
  257. hash: ccurrenthash,
  258. players: cbets,
  259. start_in: cstart_in
  260. });
  261. if(init.game === 'crash') socket.emit('crash history', cgame_history);
  262. if(init.game === 'crash') socket.emit('crash settings', {
  263. maxBet: 250000,
  264. minBet: 100
  265. });
  266. if(init.game === 'crash' && init.logged) {
  267. var find = cbets.find(x => x.profile.steamid == init.steamid);
  268. if(find){
  269. socket.emit('crash my bet',parseInt(find.bet));
  270. }
  271. }
  272.  
  273. var online = Object.keys(users).length;
  274. function firstTimeEmitGAAmount() {
  275. connection.query('SELECT * FROM `GA`', function(errGA, rowGA) {
  276. var giveAwayAmountOfTickets = rowGA.length;
  277. var giveAwayAmountToWin = giveAwayAmountOfTickets * 500 * 0.95;
  278. io.sockets.emit('giveaway amount', giveAwayAmountToWin);
  279. io.sockets.emit('giveaway tickets', giveAwayAmountOfTickets);
  280. });
  281. connection.query('SELECT COUNT(DISTINCT `steamid`) FROM `GA`', function(errGAU, rowGAU) {
  282. var giveAwayAmountOfUsers = rowGAU.length;
  283. io.sockets.emit('giveaway users', giveAwayAmountOfUsers);
  284. });
  285. }
  286. socket.emit('users online', online);
  287. socket.emit('chat', chat_history);
  288. if(init.logged){
  289. connection.query('SELECT * FROM `users` WHERE `steamid`='+connection.escape(init.steamid)+' AND `token_time`='+connection.escape(init.time)+' AND `token`='+connection.escape(init.token)+' LIMIT 1', function(err, rows) {
  290. if((err) || (!rows.length)) {
  291. socket.disconnect();
  292. console.log('auth failed.');
  293. return;
  294. }
  295. else if(rows) {
  296. if(rows[0].logged_in) return;
  297. if(rows[0].banned) return;
  298. connection.query('UPDATE `users` SET `logged_in` = 1 WHERE `steamid`='+connection.escape(init.steamid)+' AND `token_time`='+connection.escape(init.time)+' AND `token`='+connection.escape(init.token)+' LIMIT 1', function(err1, rows1) {
  299. if(err1) return;
  300. user = rows[0];
  301. if(!users[rows[0].steamid]) {
  302. users[rows[0].steamid] = {
  303. socket: [],
  304. }
  305. }
  306. users[rows[0].steamid]['socket'].push(socket.id);
  307. });
  308. } else {
  309. return;
  310. }
  311. });
  312. }
  313. });
  314. socket.on('disconnect', function() {
  315. var index = -1;
  316. if(users[user.steamid])
  317. index = users[user.steamid]['socket'].indexOf(socket.id);
  318. if (index > -1) {
  319. users[user.steamid]['socket'].splice(index, 1);
  320. }
  321. if(users[user.steamid]) { if(Object.keys(users[user.steamid]['socket']).length == 0) delete users[user.steamid]; }
  322. });
  323. socket.on('trade token', function(token) {
  324. if(!user) return socket.emit('notify','error','notLoggedIn');
  325. if(!token) return socket.emit('notify','error','tradeTokenFailed');
  326. if(typeof token != 'string') return socket.emit('notify','error','tradeTokenFailed');
  327. if(/^(.{4,8})$/.test(token)){
  328. connection.query('UPDATE `users` SET `tradeurl` = '+connection.escape(token)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err, row) {
  329. if(err) {
  330. socket.emit('notify','error','tradeTokenFailed');
  331. console.log(err);
  332. return;
  333. }
  334. socket.emit('notify','success','tradeTokenSuccess',[token]);
  335. });
  336. } else {
  337. socket.emit('notify','error','tradeTokenFailed');
  338. }
  339. });
  340. socket.on('request inventory', function(force) {
  341. if(!user) return socket.emit('notify','error','notLoggedIn');
  342. if(!force) var force = false;
  343. if(typeof force != 'boolean') var force = false;
  344. if ((fs.existsSync('cache/'+user.steamid+'.txt')) && (force == false)) {
  345. var inventory = JSON.parse(fs.readFileSync('cache/'+user.steamid+'.txt'));
  346. socket.emit('inventory',{inventory: inventory.inventory, prices: inventory.prices});
  347. socket.emit('notify','','loadInventoryCached');
  348. } else {
  349. var steamid_substr = ''+user.steamid;
  350. steamid_substr = steamid_substr.substr(7);
  351. steamid_substr = parseInt(steamid_substr);
  352. var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728);
  353. var app = manager.createOffer(tradelink);
  354. app.getPartnerInventoryContents('730','2',function(get_err,inventory) {
  355. if(get_err){
  356. console.log('error occured while deposit');
  357. console.log(get_err);
  358. socket.emit('notify','error','loadInventoryError');
  359. return;
  360. } else {
  361. var output_prices = [];
  362. for(key in inventory){
  363. var obj = inventory[key];
  364. if(prices[obj['market_hash_name']])
  365. var a_price = prices[obj['market_hash_name']]*1000;
  366. else var a_price = 0;
  367. if(a_price < 500){
  368. a_price = 0;
  369. }
  370. output_prices.push({
  371. market_hash_name: obj['market_hash_name'],
  372. price: ''+a_price
  373. })
  374. }
  375. fs.writeFile('cache/'+user.steamid+'.txt', JSON.stringify({inventory: inventory, prices: output_prices}), function(fserr) {
  376. if(fserr) {
  377. socket.emit('notify','error','loadSiteInventoryError');
  378. return console.log(fserr);
  379. }
  380. });
  381. socket.emit('inventory',{inventory: inventory, prices: output_prices});
  382. socket.emit('notify','success','loadInventorySuccess');
  383. }
  384. });
  385. }
  386. });
  387. socket.on('update ref', function(code) {
  388. if(!user) return socket.emit('notify','error','notLoggedIn');
  389. var code123 = randomstring.generate({
  390. length: 7,
  391. charset: 'alphabetic',
  392. capitalization: 'uppercase'
  393. });
  394. console.log('code123');
  395. connection.query('SELECT `code` FROM `users` WHERE `code` = \''+code123+'\' LIMIT 1', function(codes_error, codes){
  396. if(codes_error){
  397. console.log('suck');
  398. socket.emit('notify','error','updateRefFail');
  399. } else {
  400. if(codes.length > 0){
  401. socket.emit('notify','error','updateRefAlreadyTaken');
  402. } else {
  403. console.log(code123);
  404. connection.query('UPDATE `users` SET `code` = \''+code123+'\' WHERE `steamid` = '+connection.escape(user.steamid), function(codes_update_error){
  405. if(codes_update_error){
  406. console.log(codes_update_error);
  407. return socket.emit('notify','error','updateRefFail');
  408. } else {
  409. socket.emit('notify','success','updateRefSuccess');
  410. }
  411. });
  412. }
  413. }
  414. });
  415. });
  416. socket.on('deposit items', function(items) {
  417. if(!user) return [ socket.emit('notify','error','notLoggedIn'), socket.emit('deposit error') ];
  418. if(items.length < 1) return [ socket.emit('notify','error','depositNoItemsRequested'), socket.emit('deposit error') ];
  419. if(Object.prototype.toString.call(items) !== '[object Array]') return [ socket.emit('notify','error','depositNoItemsRequested'), socket.emit('deposit error') ];
  420. if(user.transfer_banned) return [ socket.emit('notify','error','withdrawSendError15'), socket.emit('deposit error') ];
  421. if(isSteamRIP === false){
  422. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  423. if((err) || (!row.length)) {
  424. console.log(err);
  425. socket.emit('notify','error','serverError');
  426. socket.emit('deposit error');
  427. return;
  428. }
  429. if(row[0].tradeurl.length < 3) return [ socket.emit('notify','error','noTradeToken'), socket.emit('deposit error') ];
  430. else if(row[0].deposit_ban == 1) return [ socket.emit('notify','error','depositBanned'), socket.emit('deposit error') ];
  431. else {
  432. connection.query('SELECT * FROM `trade_history` WHERE `offer_partner` = '+connection.escape(user.steamid)+' AND (`offer_state` = \'sent\' OR `offer_state` = \'pending\' OR `offer_state` = \'2\' OR `offer_state` = \'9\')', function(offer_err, offers) {
  433. if(offer_err){
  434. console.log(offer_err);
  435. socket.emit('notify','error','serverError');
  436. socket.emit('deposit error');
  437. return;
  438. } else if(offers.length > 0){
  439. socket.emit('notify','error','pendingOffer');
  440. socket.emit('deposit error');
  441. return;
  442. } else {
  443. var steamid_substr = ''+user.steamid;
  444. steamid_substr = steamid_substr.substr(7);
  445. steamid_substr = parseInt(steamid_substr);
  446. var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728)+'&token='+row[0].tradeurl;
  447. var app = manager.createOffer(tradelink);
  448. app.getPartnerInventoryContents('730','2',function(get_err,inventory) {
  449. if(get_err){
  450. console.log('error occured while deposit');
  451. console.log(get_err);
  452. socket.emit('notify','error','depositFailed');
  453. socket.emit('deposit error');
  454. return;
  455. } else {
  456. var names = [];
  457. var hacker = false;
  458. items.forEach(function(item) {
  459. for(key in inventory){
  460. var object = inventory[key];
  461. if(object.id == item){
  462. if(prices[object.market_hash_name])
  463. var a_price = prices[object.market_hash_name]*1000;
  464. else var a_price = 0;
  465. if(a_price < 500){
  466. hacker = true;
  467. }
  468. names.push({
  469. market_hash_name: object.market_hash_name,
  470. id: parseInt(object.id),
  471. price: a_price
  472. });
  473. }
  474. }
  475. });
  476. var total_price = 0;
  477. var after_items = [];
  478. names.forEach(function(name) {
  479. total_price+=name.price;
  480. after_items.push(name.id);
  481. });
  482. after_items.sort(function (a, b) { return a - b; });
  483. items.sort(function (a, b) { return a - b; });
  484. if (items.length == after_items.length
  485. && items.every(function(u, i) {
  486. return u === after_items[i];
  487. })
  488. ) {
  489. if((total_price < 500) || (hacker)){
  490. socket.emit('notify','error','depositFailed');
  491. socket.emit('deposit error');
  492. return;
  493. } else {
  494. console.log(total_price);
  495. items.forEach(function(target) {
  496. app.addTheirItem({
  497. appid: appid,
  498. contextid: contextid,
  499. amount: 1,
  500. assetid: myItem.assetid
  501. });
  502. });
  503. app.setToken(row[0].tradeurl);
  504. app.getUserDetails(function(a_err,me,them) {
  505. if(a_err){
  506. console.log('error occured while deposit');
  507. console.log(a_err);
  508. socket.emit('notify','error','depositFailed');
  509. socket.emit('deposit error');
  510. return;
  511. } else {
  512. if(them.escrowDays == 0){
  513. app.send(function(error, status) {
  514. if(error){
  515. console.log('error occured while deposit');
  516. console.log(error);
  517. socket.emit('notify','error','depositFailed');
  518. socket.emit('deposit error');
  519. return;
  520. } else {
  521. console.log('Deposit request, items: '+items);
  522. connection.query('INSERT INTO `trade_history` SET `offer_id`='+connection.escape(app.id)+',`offer_partner`='+connection.escape(user.steamid)+',`offer_state`='+connection.escape(status)+',`worth`='+total_price+',`action`=\'deposit\'', function(err1) {
  523. if(err1){
  524. console.log('error occured while deposit');
  525. console.log(err1);
  526. socket.emit('notify','error','depositFailed');
  527. socket.emit('deposit error');
  528. return;
  529. } else {
  530. socket.emit('notify','success','depositOfferSent',[app.id]);
  531. }
  532. });
  533. }
  534. });
  535. } else {
  536. socket.emit('notify','error','escrowError');
  537. socket.emit('deposit error');
  538. }
  539. }
  540. });
  541. } } else {
  542. if(items.length == after_items.length){
  543. console.log('error here');
  544. console.log(items);
  545. console.log(after_items);
  546. }
  547. socket.emit('notify','error','withdrawItemsUnavailable');
  548. socket.emit('deposit error');
  549. return;
  550. }
  551. }
  552. });
  553. } });
  554. }
  555. });
  556. } else {
  557. socket.emit('notify','error','withdrawSendError20');
  558. socket.emit('deposit error');
  559. }
  560. });
  561. socket.on('withdraw items', function(items) {
  562. if(!user) return socket.emit('notify','error','notLoggedIn');
  563. if(items.length < 1) return [ socket.emit('notify','error','withdrawNoItemsRequested'),socket.emit('withdraw error') ];
  564. if(Object.prototype.toString.call(items) !== '[object Array]') return [ socket.emit('notify','error','withdrawNoItemsRequested'),socket.emit('withdraw error') ];
  565. if(user.transfer_banned) return [ socket.emit('notify','error','withdrawSendError15'),socket.emit('withdraw error') ];
  566. if(isSteamRIP === false){
  567. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  568. if((err) || (!row.length)) {
  569. console.log(err);
  570. socket.emit('notify','error','serverError');
  571. socket.emit('withdraw error');
  572. return;
  573. }
  574. if(row[0].tradeurl.length < 3) return [ socket.emit('notify','error','noTradeToken'),socket.emit('withdraw error') ];
  575. else {
  576. connection.query('SELECT * FROM `trade_history` WHERE `offer_partner` = '+connection.escape(user.steamid)+' AND (`offer_state` = \'sent\' OR `offer_state` = \'pending\' OR `offer_state` = \'2\' OR `offer_state` = \'9\')', function(offer_err, offers) {
  577. if(offer_err){
  578. console.log(offer_err);
  579. socket.emit('notify','error','serverError');
  580. socket.emit('withdraw error');
  581. return;
  582. } else if(offers.length > 0){
  583. socket.emit('notify','error','pendingOffer');
  584. socket.emit('withdraw error');
  585. return;
  586. } else {
  587. var steamid_substr = ''+user.steamid;
  588. steamid_substr = steamid_substr.substr(7);
  589. steamid_substr = parseInt(steamid_substr);
  590. var tradelink = 'https://steamcommunity.com/tradeoffer/new/?partner='+(steamid_substr - 7960265728)+'&token='+row[0].tradeurl;
  591. connection.query('SELECT * FROM `inventory` WHERE `in_trade` = \'0\'', function(inv_err, my_inv) {
  592. if(inv_err){
  593. console.log('error occured while withdraw');
  594. console.log(inv_err);
  595. socket.emit('notify','error','withdrawFailed');
  596. socket.emit('withdraw error');
  597. return;
  598. } else {
  599. var names = [];
  600. var problem = false;
  601. var more_bots = false;
  602. items.forEach(function(item) {
  603. for(key in my_inv){
  604. var object = my_inv[key];
  605. if(object.id == item){
  606. if(object.bot_id !== my_inv[0]['bot_id']) more_bots = true;
  607. if(prices[object.market_hash_name])
  608. var a_price = prices[object.market_hash_name]*1000;
  609. else {
  610. var a_price = 0;
  611. problem = true;
  612. }
  613. names.push({
  614. market_hash_name: object.market_hash_name,
  615. id: parseInt(object.id),
  616. price: a_price
  617. });
  618. }
  619. }
  620. });
  621. if(more_bots) return [ socket.emit('notify','error','withdrawMultipleBots'),socket.emit('withdraw error') ];
  622. if(!problem){
  623. var total_price = 0;
  624. var after_items = [];
  625. names.forEach(function(name) {
  626. total_price+=name.price;
  627. after_items.push(name.id);
  628. });
  629. after_items.sort(function (a, b) { return a - b; });
  630. items.sort(function (a, b) { return a - b; });
  631. if (items.length == after_items.length
  632. && items.every(function(u, i) {
  633. return u === after_items[i];
  634. })
  635. ) {
  636. if(row[0].wager < total_price) {
  637. socket.emit('notify','error','withdrawNotEnoughWagered');
  638. socket.emit('withdraw error');
  639. }
  640. else if(row[0].deposit_sum / 2 > row[0].total_bet) {
  641. socket.emit('notify','error','withdrawNotEnoughPlayed');
  642. socket.emit('withdraw error');
  643. }
  644. else if((total_price > 1000) && (row[0].deposit_sum < 2500)) {
  645. socket.emit('notify','error','withdrawNotEnoughDeposit');
  646. socket.emit('withdraw error');
  647. } else {
  648. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(wallet_err, balance) {
  649. if(wallet_err){
  650. console.log('error occured while withdraw');
  651. console.log(wallet_err);
  652. socket.emit('notify','error','withdrawFailed');
  653. socket.emit('withdraw error');
  654. return;
  655. } else {
  656. if(balance[0].wallet >= total_price){
  657. if(!my_inv[0]) return;
  658. var app = bots_list[my_inv[0]['bot_id']].createOffer(tradelink);
  659. items.forEach(function(target) {
  660. app.addMyItem({
  661. appid: appid,
  662. contextid: contextid,
  663. amount: 1,
  664. assetid: myItem.assetid
  665. });
  666. });
  667. app.setToken(row[0].tradeurl);
  668. app.getUserDetails(function(a_err,me,them) {
  669. if(a_err){
  670. console.log('error occured while withdraw');
  671. console.log(a_err);
  672. socket.emit('notify','error','withdrawFailed');
  673. socket.emit('withdraw error');
  674. return;
  675. } else {
  676. if(them.escrowDays == 0){
  677. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(total_price)+',`wager` = `wager` - '+parseInt(total_price)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err3) {
  678. if(err3){
  679. console.log('error occured while withdraw, balance change, user: '+user.steamid);
  680. console.log(err3);
  681. socket.emit('notify','error','notEnoughCoins');
  682. socket.emit('withdraw error');
  683. return;
  684. } else {
  685. items.forEach(function(update_item) {
  686. connection.query('UPDATE `inventory` SET `in_trade` = \'1\''+' WHERE `id` = '+connection.escape(update_item), function(err6) {
  687. if(err6) {
  688. console.log('error at updating in trade items status. id:'+update_item);
  689. console.log(err6);
  690. }
  691. });
  692. });
  693. app.send(function(error, status) {
  694. if(error){
  695. items.forEach(function(update_item) {
  696. connection.query('UPDATE `inventory` SET `in_trade` = \'0\''+' WHERE `id` = '+connection.escape(update_item), function(err9) {
  697. if(err9) {
  698. console.log('error at updating in trade items status. id:'+update_item);
  699. console.log(err9);
  700. }
  701. });
  702. });
  703. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+parseInt(total_price)+',`wager` = `wager` + '+parseInt(total_price)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err4) {
  704. if(err4){
  705. console.log('FUCK ERROR WHILE RETURNING BALANCE, error occured while withdraw, user: '+user.steamid);
  706. console.log(err4);
  707. }
  708. });
  709. console.log('error occured while withdraw, user: '+user.steamid);
  710. console.log(error);
  711. socket.emit('notify','error','withdrawFailed');
  712. socket.emit('withdraw error');
  713. return;
  714. } else {
  715. console.log('Withdraw request, items: '+items);
  716. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = '+connection.escape('-'+total_price)+', `reason` = \'Withdraw\'', function(err_wallet_hist) {
  717. if(err_wallet_hist){
  718. console.log('database error at wallet_change');
  719. console.log(err_wallet_hist);
  720. }
  721. });
  722. connection.query('INSERT INTO `trade_history` SET `offer_id`='+connection.escape(app.id)+',`offer_partner`='+connection.escape(user.steamid)+',`offer_state`='+connection.escape(status)+',`worth`='+total_price+',`action`=\'withdraw\'', function(err1) {
  723. if(err1){
  724. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+parseInt(total_price)+',`wager` = `wager` + '+parseInt(total_price)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err5) {
  725. if(err5){
  726. console.log('error occured while withdraw, user: '+user.steamid);
  727. console.log(err5);
  728. }
  729. });
  730. console.log('error occured while withdraw, user: '+user.steamid);
  731. console.log(err1);
  732. socket.emit('notify','error','withdrawFailed');
  733. socket.emit('withdraw error');
  734. return;
  735. } else {
  736. if(users[user.steamid])
  737. users[user.steamid].socket.forEach(function(asocket) {
  738. if(io.sockets.connected[asocket])
  739. io.sockets.connected[asocket].emit('balance change', parseInt('-'+total_price));
  740. if(io.sockets.connected[asocket])
  741. io.sockets.connected[asocket].emit('notify','success','withdrawOfferSent',[app.id]);
  742. });
  743. }
  744. });
  745. }
  746. });
  747. }
  748. });
  749. } else {
  750. socket.emit('notify','error','escrowError');
  751. socket.emit('withdraw error');
  752. }
  753. }
  754. });
  755. } else {
  756. socket.emit('notify','error','notEnoughCoins');
  757. socket.emit('withdraw error');
  758. }
  759. }
  760. });
  761. }
  762. } else {
  763. socket.emit('notify','error','withdrawItemsUnavailable');
  764. socket.emit('withdraw error');
  765. return;
  766. }
  767. } else {
  768. socket.emit('notify','error','withdrawFailed');
  769. socket.emit('withdraw error');
  770. return;
  771. }
  772. }
  773. });
  774. }
  775. });
  776. }
  777. });
  778. } else {
  779. socket.emit('notify','error','withdrawSendError20');
  780. socket.emit('withdraw error');
  781. }
  782. });
  783.  
  784.  
  785. socket.on('giveaway play', function (amount) {
  786. if(!user) return socket.emit('notify','error','notLoggedIn');
  787. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(user.steamid), function(err, row) {
  788. if(err) return;
  789. if(!/bob1k|csgoclique.com|/.exec(row[0].username)) {
  790. socket.emit('notify','error','giveawayNotInName');
  791. console.log('Emited giveawayNotInName');
  792. return;
  793. } else {
  794. var totalTickets = parseInt(amount);
  795. var ticketCost = 500;
  796. var totalTicketCost = ticketCost * totalTickets;
  797. if (totalTickets > 1000) return socket.emit('notify','error','giveawayTooManyTickets');
  798. if(row[0].wallet >= totalTicketCost) {
  799. var i = 0;
  800. while (i < totalTickets) {
  801. connection.query('INSERT INTO `GA` SET `steamid` = '+connection.escape(user.steamid));
  802. connection.query('UPDATE `users` SET `wallet` = `wallet` - 500 WHERE `steamid` = '+connection.escape(user.steamid));
  803. i++;
  804. }
  805. socket.emit('notify','success','giveawayJoined', [totalTickets]);
  806. console.log('Emited giveawayJoined');
  807. users[user.steamid].socket.forEach(function(asocket) {
  808. if(io.sockets.connected[asocket])
  809. io.sockets.connected[asocket].emit('balance change', parseInt('-'+totalTicketCost));
  810. });
  811. } else {
  812. socket.emit('notify','error','giveawayNotEnoughCoins');
  813. console.log('Emited giveawayNotEnoughCoins', [totalTickets]);
  814. }
  815. };
  816. });
  817. });
  818. socket.on('roulette play', function(play, color) {
  819. if(!user) return socket.emit('notify','error','notLoggedIn');
  820. if((!play) || (!color)) return socket.emit('notify','error','roulettePlayFailed');
  821. if((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify','error','roulettePlayFailed');
  822. if(typeof color != 'string') return socket.emit('notify','error','roulettePlayFailed');
  823. if((usersBr[user.steamid] !== undefined) && (usersBr[user.steamid] == 3)) {
  824. socket.emit('notify','error','rouletteMaxBets',[3]);
  825. return;
  826. }
  827. play = parseInt(play);
  828. if(isNaN(play)) return socket.emit('notify','error','cannotParseValue');
  829. play = ''+play;
  830. play = play.replace(/\D/g,'');
  831. if(color !== 'green' && color !== 'red' && color !== 'black') return socket.emit('notify','error','rouletteUnknownColor');
  832. if(play < 1) return socket.emit('notify','error','rouletteMinBet', [play,1]);
  833. if(play > 1000000) return socket.emit('notify','error','rouletteMaxBet', [play,1000000]);
  834. if(!pause) {
  835. connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  836. if((err) || (!row.length)) {
  837. console.log(err);
  838. socket.emit('notify','error','roulettePlayFailed');
  839. return;
  840. }
  841. if(row[0].wallet >= play) {
  842. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play)+', `total_bet` = `total_bet` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
  843. if(row[0].deposit_sum >= 2500){
  844. connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid));
  845. }
  846. if(err2) {
  847. console.log(err2);
  848. socket.emit('notify','error','roulettePlayFailed');
  849. return;
  850. }
  851. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play)+', `reason` = \'Roulette #'+currentRollid+' '+color+'\'', function(err3, row3) {
  852. if(err3) {
  853. console.log('important error at wallet_change');
  854. console.log(err3);
  855. socket.emit('notify','error','serverError');
  856. return;
  857. }
  858. if(usersBr[user.steamid] === undefined) {
  859. usersBr[user.steamid] = 1;
  860. } else {
  861. usersBr[user.steamid]++;
  862. }
  863. io.sockets.to('roulette').emit('roulette player',{
  864. amount: play,
  865. player: {
  866. avatar: user.avatar,
  867. steamid: user.steamid,
  868. username: user.username
  869. }
  870. }, color);
  871. currentBets[color].push({
  872. amount: play,
  873. player: {
  874. avatar: user.avatar,
  875. steamid: user.steamid,
  876. username: user.username
  877. }
  878. });
  879. if(users[user.steamid])
  880. users[user.steamid].socket.forEach(function(asocket) {
  881. if(io.sockets.connected[asocket])
  882. io.sockets.connected[asocket].emit('balance change', parseInt('-'+play));
  883. if(io.sockets.connected[asocket])
  884. io.sockets.connected[asocket].emit('notify','success','roulettePlaySuccess',[play,color,usersBr[user.steamid],3]);
  885. });
  886. });
  887. });
  888. } else {
  889. socket.emit('notify','error','notEnoughCoins');
  890. }
  891. });
  892. } else
  893. socket.emit('notify','error','roulettePlayFailed');
  894. });
  895. socket.on('coinflip play', function(play, color) {
  896. if(!user) return socket.emit('notify','error','notLoggedIn');
  897. if((!play) || (!color)) return socket.emit('notify','error','coinflipPlayFailed');
  898. if((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify','error','coinflipPlayFailed');
  899. if(typeof color != 'string') return socket.emit('notify','error','coinflipPlayFailed');
  900. play = parseInt(play);
  901. if(isNaN(play)) return socket.emit('notify','error','cannotParseValue');
  902. play = ''+play;
  903. play = play.replace(/\D/g,'');
  904. if(color !== 'ct' && color !== 't') return socket.emit('notify','error','coinflipUnknownColor');
  905. if(play < 10) return socket.emit('notify','error','coinflipMinBet', [play,10]);
  906. if(play > 1000000) return socket.emit('notify','error','coinflipMaxBet', [play,1000000]);
  907. if(betUsers[user.steamid]) return socket.emit('notify','error','coinflipPending');
  908. connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  909. if((err) || (!row.length)) {
  910. console.log(err);
  911. socket.emit('notify','error','coinflipPlayFailed');
  912. return;
  913. }
  914. if(row[0].wallet >= play) {
  915. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play)+', `total_bet` = `total_bet` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
  916. if(row[0].deposit_sum >= 2500){
  917. connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid));
  918. }
  919. if(err2) {
  920. console.log(err2);
  921. socket.emit('notify','error','coinflipPlayFailed');
  922. return;
  923. }
  924. var cfUnique = 'a'+generate(20);
  925. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play)+', `reason` = \'Coinflip #'+cfUnique+' '+color.toUpperCase()+'\'', function(err3, row3) {
  926. if(err3) {
  927. console.log('important error at wallet_change');
  928. console.log(err3);
  929. socket.emit('notify','error','serverError');
  930. return;
  931. }
  932. io.sockets.to('coinflip').emit('coinflip game',{
  933. amount: play,
  934. player: {
  935. avatar: user.avatar,
  936. steamid: user.steamid,
  937. username: user.username
  938. },
  939. status: 'open',
  940. side: color,
  941. hash: cfUnique
  942. });
  943. cfBets.push({
  944. amount: play,
  945. player: {
  946. avatar: user.avatar,
  947. steamid: user.steamid,
  948. username: user.username
  949. },
  950. status: 'open',
  951. side: color,
  952. hash: cfUnique,
  953. left: 10
  954. });
  955. betUsers[user.steamid] = 1;
  956. if(users[user.steamid])
  957. users[user.steamid].socket.forEach(function(asocket) {
  958. if(io.sockets.connected[asocket])
  959. io.sockets.connected[asocket].emit('balance change', parseInt('-'+play));
  960. if(io.sockets.connected[asocket])
  961. io.sockets.connected[asocket].emit('notify','success','coinflipPlaySuccess',[play,color.toUpperCase()]);
  962. });
  963. });
  964. });
  965. } else {
  966. socket.emit('notify','error','notEnoughCoins');
  967. }
  968. });
  969. });
  970. socket.on('coinflip join', function(gameID) {
  971. if(!user) return socket.emit('notify','error','notLoggedIn');
  972. if(!gameID) return socket.emit('notify','error','coinflipPlayFailed');
  973. if(typeof gameID != 'string') return socket.emit('notify','error','coinflipPlayFailed');
  974. var index = cfBets.map(function(e) { return e.hash; }).indexOf(gameID);
  975. if(index > -1){
  976. if(!cfBets[index]) return;
  977. if(cfBets[index].status === 'closed') return socket.emit('notify','error','coinflipAlreadyJoined');
  978. if(cfBets[index].player.steamid == user.steamid) return socket.emit('notify','error','coinflipOwner');
  979. var play = cfBets[index].amount;
  980. if(cfBets[index].side === 'ct'){
  981. var color = 't';
  982. } else {
  983. var color = 'ct';
  984. }
  985. connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  986. if((err) || (!row.length)) {
  987. console.log(err);
  988. socket.emit('notify','error','coinflipPlayFailed');
  989. return;
  990. }
  991. if(row[0].wallet >= play) {
  992. cfBets[index].status = 'closed';
  993. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play)+', `total_bet` = `total_bet` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
  994. if(row[0].deposit_sum >= 2500){
  995. connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid));
  996. }
  997. if(err2) {
  998. cfBets[index].status = 'open';
  999. console.log(err2);
  1000. socket.emit('notify','error','coinflipPlayFailed');
  1001. return;
  1002. }
  1003. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play)+', `reason` = \'Coinflip #'+cfBets[index].hash+' '+color.toUpperCase()+'\'', function(err3, row3) {
  1004. if(err3) {
  1005. cfBets[index].status = 'open';
  1006. console.log('important error at wallet_change');
  1007. console.log(err3);
  1008. socket.emit('notify','error','serverError');
  1009. return;
  1010. }
  1011. cfBets[index].opponent = {
  1012. avatar: user.avatar,
  1013. steamid: user.steamid,
  1014. username: user.username
  1015. };
  1016. if(users[user.steamid])
  1017. users[user.steamid].socket.forEach(function(asocket) {
  1018. if(io.sockets.connected[asocket])
  1019. io.sockets.connected[asocket].emit('balance change', parseInt('-'+play));
  1020. if(io.sockets.connected[asocket])
  1021. io.sockets.connected[asocket].emit('notify','success','coinflipJoin');
  1022. });
  1023. if(users[cfBets[index].player.steamid])
  1024. users[cfBets[index].player.steamid].socket.forEach(function(asocket) {
  1025. if(io.sockets.connected[asocket])
  1026. io.sockets.connected[asocket].emit('notify','success','coinflipJoined');
  1027. });
  1028. io.sockets.to('coinflip').emit('coinflip update',cfBets[index].hash,{
  1029. avatar: user.avatar,
  1030. steamid: user.steamid,
  1031. username: user.username,
  1032. side: color
  1033. });
  1034. var countDown = setInterval(function() {
  1035. cfBets[index].left -= 1;
  1036. if (cfBets[index].left === 0) {
  1037. clearInterval(countDown);
  1038. }
  1039. },1000);
  1040. setTimeout(function() {
  1041. delete betUsers[cfBets[index].player.steamid];
  1042. var possible = ['ct','t'];
  1043. var wonSide = possible[Math.floor(Math.random() * possible.length)];
  1044. var wonAmount = parseInt(play)*2;
  1045. wonAmount = Math.floor(wonAmount - (wonAmount*0.05));
  1046. rakeAmount = Math.floor(wonAmount - (wonAmount*0.95));
  1047. if(wonSide == color){
  1048. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+wonAmount+', `total_won` = `total_won` + '+wonAmount+' WHERE `steamid` = '+connection.escape(user.steamid), function(err69, row69) {
  1049. if(err69){
  1050. return;
  1051. } else {
  1052. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = '+connection.escape(wonAmount)+', `reason` = \'Coinflip #'+cfBets[index].hash+' '+'winning!'+'\'', function(err70) {
  1053. connection.query('UPDATE `rake` SET `coinflip` = `coinflip` + '+rakeAmount+'');
  1054. if(err70){
  1055. console.log('database error at wallet_change');
  1056. console.log(err70);
  1057. }
  1058. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+play+' WHERE `steamid` = '+connection.escape(cfBets[index].player.steamid), function(err71) {
  1059. if(err71) console.log('error at total lose increase');
  1060. });
  1061. setTimeout(function(){
  1062. if (users[user.steamid]) {
  1063. users[user.steamid].socket.forEach(function(asocket) {
  1064. if(io.sockets.connected[asocket])
  1065. io.sockets.connected[asocket].emit('balance change', wonAmount);
  1066. if(io.sockets.connected[asocket])
  1067. io.sockets.connected[asocket].emit('notify','success','coinflipWon',[wonAmount]);
  1068. });
  1069. }
  1070. if (users[cfBets[index].player.steamid]) {
  1071. users[cfBets[index].player.steamid].socket.forEach(function(asocket) {
  1072. if(io.sockets.connected[asocket])
  1073. io.sockets.connected[asocket].emit('notify','error','coinflipLost',[wonAmount]);
  1074. });
  1075. }
  1076. }, 3600);
  1077. });
  1078. }
  1079. });
  1080. } else {
  1081. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+wonAmount+', `total_won` = `total_won` + '+wonAmount+' WHERE `steamid` = '+connection.escape(cfBets[index].player.steamid), function(err69, row69) {
  1082. if(err69){
  1083. return;
  1084. } else {
  1085. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(cfBets[index].player.steamid)+', `change` = '+connection.escape(wonAmount)+', `reason` = \'Coinflip #'+cfBets[index].hash+' '+'winning!'+'\'', function(err70) {
  1086. if(err70){
  1087. console.log('database error at wallet_change');
  1088. console.log(err70);
  1089. }
  1090. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+play+' WHERE `steamid` = '+connection.escape(user.steamid), function(err71) {
  1091. if(err71) console.log('error at total lose increase');
  1092. });
  1093. setTimeout(function(){
  1094. if (users[cfBets[index].player.steamid]) {
  1095. users[cfBets[index].player.steamid].socket.forEach(function(asocket) {
  1096. if(io.sockets.connected[asocket])
  1097. io.sockets.connected[asocket].emit('balance change', wonAmount);
  1098. if(io.sockets.connected[asocket])
  1099. io.sockets.connected[asocket].emit('notify','success','coinflipWon',[wonAmount]);
  1100. });
  1101. }
  1102.  
  1103. if (users[user.steamid]) {
  1104. users[user.steamid].socket.forEach(function(asocket) {
  1105. if(io.sockets.connected[asocket])
  1106. io.sockets.connected[asocket].emit('notify','error','coinflipLost',[wonAmount]);
  1107. });
  1108. }
  1109. }, 3600);
  1110. });
  1111. }
  1112. });
  1113. }
  1114. setTimeout(function(){
  1115. delete cfBets[index];
  1116. }, 60000);
  1117. io.sockets.to('coinflip').emit('coinflip win',cfBets[index].hash,{
  1118. won: wonSide
  1119. });
  1120. }, 10000);
  1121. });
  1122. });
  1123. } else {
  1124. socket.emit('notify','error','notEnoughCoins');
  1125. }
  1126. });
  1127. } else {
  1128. return socket.emit('notify','error','coinflipPlayFailed');
  1129. }
  1130. });
  1131. socket.on('crash bet', function(play) {
  1132. if(!user) return socket.emit('notify','error','notLoggedIn');
  1133. if(play_try[user.steamid]) return;
  1134. if(cstatus === 'closed' || cstatus === 'drop') return socket.emit('notify','error','crashPlayFailed');
  1135. if(!play) return socket.emit('notify','error','crashPlayFailed');
  1136. if(!play.bet) return socket.emit('notify','error','crashPlayFailed');
  1137. if(typeof play.cashout === 'undefined') return socket.emit('notify','error','crashPlayFailed');
  1138. if(play.cashout !== '' && typeof play.cashout !== 'number') return socket.emit('notify','error','crashPlayFailed');
  1139. if(typeof play.bet !== 'number') return socket.emit('notify','error','crashPlayFailed');
  1140. play.bet = parseInt(play.bet);
  1141. if(isNaN(play.bet)) return socket.emit('notify','error','cannotParseValue');
  1142. play.bet = ''+play.bet;
  1143. play.bet = play['bet'].replace(/\D/g,'');
  1144. if(play.bet < 10) return socket.emit('notify','error','crashMinBet', [play.bet,10]);
  1145. if(play.bet > 250000) return socket.emit('notify','error','crashMaxBet', [play.bet,250000]);
  1146. play_try[user.steamid] = 1;
  1147. connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  1148. if((err) || (!row.length)) {
  1149. return [socket.emit('notify','error','crashPlayFailed'),console.log(err),delete play_try[user.steamid]];
  1150. }
  1151. if(row[0].wallet >= play.bet) {
  1152. var find = cbets.find(x => x.profile.steamid == user.steamid);
  1153. if(find != undefined) return [socket.emit('notify','error','crashPlayFailed'),delete play_try[user.steamid]];
  1154. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play.bet)+', `total_bet` = `total_bet` + '+parseInt(play.bet)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
  1155. if(row[0].deposit_sum >= 2500){
  1156. connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(play.bet)+' WHERE `steamid` = '+connection.escape(user.steamid));
  1157. }
  1158. if(err2) {
  1159. return [socket.emit('notify','error','crashPlayFailed'),console.log(err2),delete play_try[user.steamid]];
  1160. } else {
  1161. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play.bet)+', `reason` = \'Crash #'+cgame+' - cashout at '+play.cashout+'\'', function(err3, row3) {
  1162. if(err3) {
  1163. return [console.log('important error at wallet_change'),console.log(err3),socket.emit('notify','error','serverError'),delete play_try[user.steamid]];
  1164. } else {
  1165. cbets.push({
  1166. bet: play.bet,
  1167. profile: {
  1168. avatar: user.avatar,
  1169. steamid: user.steamid,
  1170. username: user.username
  1171. }
  1172. });
  1173. players_cashouts[user.steamid] = play.cashout;
  1174. io.sockets.to('crash').emit('player new',[{
  1175. bet: play.bet,
  1176. profile: {
  1177. avatar: user.avatar,
  1178. steamid: user.steamid,
  1179. username: user.username
  1180. }
  1181. }]);
  1182. delete play_try[user.steamid];
  1183. if(users[user.steamid])
  1184. users[user.steamid].socket.forEach(function(asocket) {
  1185. if(io.sockets.connected[asocket])
  1186. io.sockets.connected[asocket].emit('balance change', parseInt('-'+play.bet));
  1187. if(io.sockets.connected[asocket])
  1188. io.sockets.connected[asocket].emit('notify','success','crashPlaySuccess',[play.bet]);
  1189. });
  1190. }
  1191. });
  1192. }
  1193. });
  1194. } else {
  1195. delete play_try[user.steamid];
  1196. return socket.emit('notify','error','notEnoughCoins');
  1197. }
  1198. });
  1199. });
  1200. socket.on('crash withdraw', function(){
  1201. if(!user) return socket.emit('notify','error','notLoggedIn');
  1202. crashWithdraw(user);
  1203. });
  1204. socket.on('jackpot play', function(play) {
  1205. if(!user) return socket.emit('notify','error','notLoggedIn');
  1206. if(!play) return socket.emit('notify','error','jackpotPlayFailed');
  1207. if((typeof play != 'string') && (typeof play != 'number')) return socket.emit('notify','error','jackpotPlayFailed');
  1208. play = parseInt(play);
  1209. if(isNaN(play)) return socket.emit('notify','error','cannotParseValue');
  1210. play = ''+play;
  1211. play = play.replace(/\D/g,'');
  1212. if(play < 10) return socket.emit('notify','error','jackpotMinBet', [play,10]);
  1213. if(play > 1000000) return socket.emit('notify','error','jackpotMaxBet', [play,1000000]);
  1214. if(jpUsers[user.steamid]) return socket.emit('notify','error','jackpotPending');
  1215. if(!jpAllow) return socket.emit('notify','error','jackpotTime');
  1216. jpUsers[user.steamid] = 1;
  1217. connection.query('SELECT `wallet`,`deposit_sum` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  1218. if((err) || (!row.length)) {
  1219. delete jpUsers[user.steamid];
  1220. return [socket.emit('notify','error','jackpotPlayFailed'),console.log(err)];
  1221. }
  1222. if(row[0].wallet >= play) {
  1223. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+parseInt(play)+', `total_bet` = `total_bet` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid), function(err2, row2) {
  1224. if(row[0].deposit_sum >= 2500){
  1225. connection.query('UPDATE `users` SET `wager` = `wager` + '+parseInt(play)+' WHERE `steamid` = '+connection.escape(user.steamid));
  1226. }
  1227. if(err2) {
  1228. delete jpUsers[user.steamid];
  1229. return [socket.emit('notify','error','jackpotPlayFailed'),console.log(err2)];
  1230. } else {
  1231. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = -'+connection.escape(play)+', `reason` = \'Jackpot '+'play'+'\'', function(err3, row3) {
  1232. if(err3) {
  1233. delete jpUsers[user.steamid];
  1234. return [console.log('important error at wallet_change'),console.log(err3),socket.emit('notify','error','serverError')];
  1235. } else {
  1236. if(jpTimeleft == -1) jackpotTimer();
  1237. jpBets.push({
  1238. amount: play,
  1239. player: {
  1240. avatar: user.avatar,
  1241. steamid: user.steamid,
  1242. username: user.username
  1243. },
  1244. rangeMin: jpPool+1,
  1245. rangeMax: jpPool+parseInt(play),
  1246. total: jpPool+parseInt(play)
  1247. });
  1248. jpPool += parseInt(play);
  1249. io.sockets.to('jackpot').emit('jackpot new bet',{
  1250. amount: play,
  1251. player: {
  1252. avatar: user.avatar,
  1253. steamid: user.steamid,
  1254. username: user.username
  1255. },
  1256. total: jpPool
  1257. });
  1258. if(users[user.steamid])
  1259. users[user.steamid].socket.forEach(function(asocket) {
  1260. if(io.sockets.connected[asocket])
  1261. io.sockets.connected[asocket].emit('balance change', parseInt('-'+play));
  1262. if(io.sockets.connected[asocket])
  1263. io.sockets.connected[asocket].emit('notify','success','jackpotPlaySuccess',[play]);
  1264. });
  1265. }
  1266. });
  1267. }
  1268. });
  1269. } else {
  1270. delete jpUsers[user.steamid];
  1271. return socket.emit('notify','error','notEnoughCoins');
  1272. }
  1273. });
  1274. });
  1275. socket.on('chat message', function(chat) {
  1276. if((!chat.message) || (!chat.type)) return;
  1277. if((typeof chat.message != 'string') || (typeof chat.type != 'string')) return;
  1278. if(last_message[user.steamid]+1 >= time()) {
  1279. return;
  1280. } else {
  1281. last_message[user.steamid] = time();
  1282. }
  1283. if(!user) return socket.emit('notify','error','notLoggedIn');
  1284. if(chat && chat.message){
  1285. if(chat.message.indexOf('/') === 0){
  1286. var res = null;
  1287. if(chat.message.indexOf('/send') === 0){
  1288. if (res = /^\/send ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
  1289. if((res[2] < 1) || (res[2] > 100000)){
  1290. return socket.emit('notify','error','chatSendOutOfRange');
  1291. } else {
  1292. var send_amount = parseInt(res[2]);
  1293. if(isNaN(send_amount)) return socket.emit('notify','error','cannotParseValue');
  1294. connection.query('SELECT `wallet`,`total_bet`,`deposit_sum`,`transfer_banned` FROM `users` WHERE `steamid` = '+user.steamid+' LIMIT 1',function(error, ppl) {
  1295. if(error){
  1296. console.log(error);
  1297. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  1298. } else {
  1299. if(ppl[0].total_bet < 1000){
  1300. return socket.emit('notify','error','chatSendNotEnoughCoins',[1000]);
  1301. }/* else if(ppl[0].deposit_sum < 1000) {
  1302. return socket.emit('notify','error','chatSendNotEnoughDeposit',[1000]);
  1303. } */ else if(ppl[0].wallet < send_amount){
  1304. return socket.emit('notify','error','chatSendOutOfRange');
  1305. } else if(ppl[0].transfer_banned){
  1306. return socket.emit('notify','error','chatSendUnavailable');
  1307. } else {
  1308. connection.query('SELECT * FROM `users` WHERE `steamid` = '+res[1], function(error_2, receiver) {
  1309. if(error_2){
  1310. console.log(error_2);
  1311. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  1312. } else {
  1313. if((!receiver) || (!receiver.length)){
  1314. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  1315. } else {
  1316. connection.query('UPDATE `users` SET `wallet` = `wallet` - '+send_amount+' WHERE `steamid` = '+connection.escape(user.steamid), function(error_3){
  1317. if(error_3){
  1318. console.log(error_3);
  1319. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  1320. } else {
  1321. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+send_amount+' WHERE `steamid` = '+connection.escape(res[1]), function(error_4) {
  1322. if(error_4){
  1323. console.log('error. cant give coins to receiver! '+res[1]);
  1324. console.log(error_4);
  1325. return socket.emit('notify','error','chatSendFail',[res[2],res[1]]);
  1326. } else {
  1327. connection.query('INSERT INTO `wallet_change` SET `change` = '+connection.escape('-'+send_amount)+',`reason` = '+connection.escape('Sent '+send_amount+' coins to '+res[1])+',`user` = '+connection.escape(user.steamid), function(error_5){
  1328. if(error_5){
  1329. console.log('error. not inserted wallet change for sender.');
  1330. console.log(error_5);
  1331. } else {
  1332. connection.query('INSERT INTO `wallet_change` SET `change` = '+connection.escape(send_amount)+',`reason` = '+connection.escape('Received '+send_amount+' coins from '+user.steamid)+',`user` = '+connection.escape(res[1]), function(error_6) {
  1333. if(error_6){
  1334. console.log('error. not inserted wallet change for receiver.');
  1335. console.log(error_6);
  1336. }
  1337. });
  1338. }
  1339. });
  1340. if(users[user.steamid])
  1341. users[user.steamid].socket.forEach(function(asocket) {
  1342. if(io.sockets.connected[asocket]) {
  1343. io.sockets.connected[asocket].emit('balance change', parseInt('-'+send_amount));
  1344. io.sockets.connected[asocket].emit('notify','success','chatSendSuccess', [send_amount, res[1]]);
  1345. }
  1346. });
  1347. if(users[res[1]])
  1348. users[res[1]].socket.forEach(function(asocket) {
  1349. if(io.sockets.connected[asocket]) {
  1350. io.sockets.connected[asocket].emit('balance change', send_amount);
  1351. io.sockets.connected[asocket].emit('notify','success','chatSendReceived', [send_amount, res[1]]);
  1352. }
  1353. });
  1354. }
  1355. });
  1356. }
  1357. });
  1358. }
  1359. }
  1360. });
  1361. }
  1362. }
  1363. });
  1364. }
  1365. } else {
  1366. socket.emit('notify','error','chatMissingParameters');
  1367. }
  1368. } else if(chat.message.indexOf('/ref') === 0) {
  1369. if(res = /^\/ref (.)/.exec(chat.message)){
  1370. if (res = /^\/ref (.{5,254})/.exec(chat.message)) {
  1371. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(user_error, ouruser){
  1372. if((user_error) || (ouruser.length !== 1)){
  1373. console.log('cannot get user from referral');
  1374. console.log(user_error);
  1375. return;
  1376. } else if((ouruser) && (ouruser.length === 1) && (ouruser[0].inviter.length > 0)) {
  1377. return socket.emit('notify','error','chatReferralAlreadyUsed');
  1378. } else {
  1379. if(user.csgo == 'true'){
  1380. connection.query('SELECT * FROM `users` WHERE `code` = '+connection.escape(res[1].toUpperCase())+' LIMIT 1', function(codes_error, codes){
  1381. if(codes_error){
  1382. socket.emit('notify','error','chatReferralFailed');
  1383. } else if((codes[0]) && (codes[0].steamid == user.steamid)) {
  1384. socket.emit('notify','error','chatReferralOwnCode');
  1385. } else {
  1386. if(codes.length > 0){
  1387. connection.query('UPDATE `users` SET `inviter` = '+connection.escape(codes[0].steamid)+', `wallet` = `wallet` + 100 WHERE `steamid` = '+connection.escape(user.steamid), function(update_code_error, update_code){
  1388. if(update_code_error){
  1389. console.log('error while referal');
  1390. console.log(update_code_error);
  1391. socket.emit('notify','error','chatReferralFailed');
  1392. return;
  1393. } else {
  1394. connection.query('INSERT INTO `wallet_change` SET `change` = \'100\',`reason` = \'Referral - free\',`user` = '+connection.escape(user.steamid));
  1395. }
  1396. });
  1397. socket.emit('notify','success','chatReferralSuccess',[res[1],100]);
  1398. if(users[user.steamid])
  1399. users[user.steamid].socket.forEach(function(asocket) {
  1400. if(io.sockets.connected[asocket]) {
  1401. io.sockets.connected[asocket].emit('balance change', 100);
  1402. }
  1403. });
  1404. } else {
  1405. socket.emit('notify','error','chatReferralUnknown');
  1406. }
  1407. }
  1408. });
  1409. } else {
  1410. socket.emit('notify','error','chatReferralNoCSGO');
  1411. }
  1412. }
  1413. });
  1414. } else {
  1415. socket.emit('notify','error','chatReferralUnknown');
  1416. }
  1417. } else {
  1418. socket.emit('notify','error','chatMissingParameters');
  1419. }
  1420. } else if(chat.message.indexOf('/muteChat') === 0){
  1421. if((user.rank === 'siteAdmin') || (user.rank === 'root')){
  1422. chat_muted = true;
  1423. socket.emit('notify','success','chatMuted');
  1424. } else {
  1425. socket.emit('notify','error','chatAdminAccess');
  1426. }
  1427. } else if(chat.message.indexOf('/unmuteChat') === 0){
  1428. if((user.rank === 'siteAdmin') || (user.rank === 'root')){
  1429. chat_muted = false;
  1430. socket.emit('notify','success','chatUnmuted');
  1431. } else {
  1432. socket.emit('notify','error','chatAdminAccess');
  1433. }
  1434. } else if(chat.message.indexOf('/access') === 0){
  1435. if(user.rank === 'root'){
  1436. if (res = /^\/access ([0-9]{17}) (.{1,})/.exec(chat.message)) {
  1437. if((res[2] == 'user') || (res[2] == 'siteAdmin') || (res[2] == 'siteMod')){
  1438. connection.query('UPDATE `users` SET `rank` = '+connection.escape(res[2])+' WHERE `steamid` = '+connection.escape(res[1]), function(access_err) {
  1439. var levels = {user:1,siteMod:2,siteAdmin:3,root:4};
  1440. if(access_err){
  1441. return socket.emit('notify','error','chatAccessLevelFailed',[levels[res[2]],res[1]]);
  1442. } else {
  1443. return socket.emit('notify','success','chatAccessLevelSuccess',[levels[res[2]],res[1]]);
  1444. }
  1445. });
  1446. } else {
  1447. return socket.emit('notify','error','chatAccessLevelOutOfRange');
  1448. }
  1449. } else {
  1450. socket.emit('notify','error','chatMissingParameters');
  1451. }
  1452. } else {
  1453. socket.emit('notify','error','chatRootAccess');
  1454. }
  1455. } else if(chat.message.indexOf('/give') === 0){
  1456. if(user.rank === 'root'){
  1457. if (res = /^\/give ([0-9]{17}) ([0-9]{1,})/.exec(chat.message)) {
  1458. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+connection.escape(res[2])+' WHERE `steamid` = '+connection.escape(res[1]), function(give_error) {
  1459. if(give_error){
  1460. console.log(give_error);
  1461. socket.emit('notify','error','chatGiveFail');
  1462. } else {
  1463. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(res[1])+', `change` = '+connection.escape(res[2])+', `reason` = \'Received from server\'');
  1464. if (users[res[1]]) {
  1465. users[res[1]].socket.forEach(function(asocket) {
  1466. if(io.sockets.connected[asocket])
  1467. io.sockets.connected[asocket].emit('balance change',parseInt(res[2]));
  1468. });
  1469. }
  1470. socket.emit('notify','success','chatGiveSuccess',[res[2],res[1]]);
  1471. }
  1472. });
  1473. } else {
  1474. socket.emit('notify','error','chatMissingParameters');
  1475. }
  1476. } else {
  1477. socket.emit('notify','error','chatRootAccess');
  1478. }
  1479. } else if(chat.message.indexOf('/coins') === 0){
  1480. if((user.rank === 'siteAdmin') || (user.rank === 'root')) {
  1481. connection.query('SELECT SUM(`roulette`) AS `rrake`, SUM(`coinflip`) AS `crake`, SUM(`jackpot`) AS `jrake` FROM `rake`', function(rake_error,rake_total) {
  1482. if(rake_error) {
  1483. return;
  1484. } else {
  1485. var rake = rake_total[0].rrake + rake_total[0].crake + rake_total[0].jrake;
  1486. connection.query('SELECT SUM(`wallet`) AS `sum` FROM `users`', function(error,total) {
  1487. if(error) {
  1488. return;
  1489. } else {
  1490. var total = total[0].sum;
  1491. var total_inv = 0;
  1492. connection.query('SELECT * FROM `inventory`', function(inv_err, inventory) {
  1493. if(inv_err){
  1494. return;
  1495. } else {
  1496. for(key in inventory){
  1497. var obj = inventory[key];
  1498. if(prices[obj['market_hash_name']])
  1499. var a_price = prices[obj['market_hash_name']]*1000;
  1500. else var a_price = 0;
  1501. total_inv += a_price;
  1502. }
  1503. console.log('Successfull transfer');
  1504. socket.emit('notify','success','chatCoinsBalance',[rake,total_inv,total]);
  1505. }
  1506. });
  1507. }
  1508. });
  1509. }
  1510. })
  1511. } else {
  1512. socket.emit('notify','error','chatRootAccess');
  1513. }
  1514. } else if(chat.message.indexOf('/mute') === 0){
  1515. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  1516. if (res = /^\/mute ([0-9]{17})/.exec(chat.message)) {
  1517. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(res[1])+' LIMIT 1', function(mute_err, mute_callback){
  1518. if(mute_err){
  1519. return socket.emit('notify','error','chatMuteFail',[res[1]]);
  1520. } else {
  1521. if((mute_callback) && (mute_callback.length)){
  1522. if(mute_callback[0].rank == 'user'){
  1523. connection.query('UPDATE `users` SET `muted` = 1 WHERE `steamid` = '+connection.escape(res[1]),function(mute_err1) {
  1524. if(mute_err1){
  1525. return socket.emit('notify','error','chatMuteFail',[res[1]]);
  1526. } else {
  1527. return socket.emit('notify','success','chatMuteSuccess',[res[1]]);
  1528. }
  1529. });
  1530. } else {
  1531. return socket.emit('notify','error','chatMuteStaff');
  1532. }
  1533. } else {
  1534. return socket.emit('notify','error','chatMuteFail',[res[1]]);
  1535. }
  1536. }
  1537. });
  1538. } else {
  1539. socket.emit('notify','error','chatMissingParameters');
  1540. }
  1541. } else {
  1542. socket.emit('notify','error','chatModAccess');
  1543. }
  1544. } else if(chat.message.indexOf('/unmute') === 0){
  1545. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  1546. if (res = /^\/unmute ([0-9]{17})/.exec(chat.message)) {
  1547. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(res[1])+' LIMIT 1', function(unmute_err, unmute_callback){
  1548. if(unmute_err){
  1549. return socket.emit('notify','error','chatUnmuteFail',[res[1]]);
  1550. } else {
  1551. if((unmute_callback) && (unmute_callback.length)){
  1552. if(unmute_callback[0].rank == 'user'){
  1553. if(unmute_callback[0].muted == 1){
  1554. connection.query('UPDATE `users` SET `muted` = 0 WHERE `steamid` = '+connection.escape(res[1]),function(unmute_err1) {
  1555. if(unmute_err1){
  1556. return socket.emit('notify','error','chatUnmuteFail',[res[1]]);
  1557. } else {
  1558. return socket.emit('notify','success','chatUnmuteSuccess',[res[1]]);
  1559. }
  1560. });
  1561. } else {
  1562. return socket.emit('notify','error','chatUnmuteNotMuted',[res[1]]);
  1563. }
  1564. } else {
  1565. return socket.emit('notify','error','chatUnmuteStaff');
  1566. }
  1567. } else {
  1568. return socket.emit('notify','error','chatUnmuteFail',[res[1]]);
  1569. }
  1570. }
  1571. });
  1572. } else {
  1573. socket.emit('notify','error','chatMissingParameters');
  1574. }
  1575. } else {
  1576. socket.emit('notify','error','chatModAccess');
  1577. }
  1578. } else if(chat.message.indexOf('/removeMessages') === 0){
  1579. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  1580. if (res = /^\/removeMessages ([0-9]{17})/.exec(chat.message)) {
  1581. chat_history = chat_history.filter(function(obj) {
  1582. return obj.profile.steamid !== res[1];
  1583. });
  1584. } else {
  1585. socket.emit('notify','error','chatMissingParameters');
  1586. }
  1587. } else {
  1588. socket.emit('notify','error','chatModAccess');
  1589. }
  1590. } else if(chat.message.indexOf('/removeMessage') === 0){
  1591. if((user.rank === 'siteAdmin') || (user.rank === 'root') || (user.rank === 'siteMod')){
  1592. if (res = /^\/removeMessage (.{1,})/.exec(chat.message)) {
  1593. var index = chat_history.map(function(e) { return e.uniqueID; }).indexOf(res[1]);
  1594. if (index > -1) {
  1595. chat_history.splice(index, 1);
  1596. }
  1597. } else {
  1598. socket.emit('notify','error','chatMissingParameters');
  1599. }
  1600. } else {
  1601. socket.emit('notify','error','chatModAccess');
  1602. }
  1603. } else {
  1604. return socket.emit('notify','error','chatUnknownCommand');
  1605. }
  1606. } else {
  1607. if(((chat_muted === false) && (user.muted == 0)) || (user.rank != 'user')){
  1608. connection.query('SELECT `total_bet` FROM `users` WHERE `steamid` = '+connection.escape(user.steamid)+' LIMIT 1', function(err, row) {
  1609. if(err) {
  1610. socket.emit('notify','error','serverError');
  1611. return;
  1612. } else {
  1613. if((row[0].total_bet < 1000) && (user.rank == 'user')) {
  1614. socket.emit('notify','error','chatNotEnoughBets',[row[0].total_bet, 1000]);
  1615. return;
  1616. } else {
  1617. chat.message = chat.message.replace(/<\/?[^>]+(>|$)/g, "");
  1618. var uniqueID = generate(20);
  1619. io.sockets.emit('chat message', {
  1620. message: chat.message,
  1621. profile: {
  1622. avatar: user.avatar,
  1623. rank: user.rank,
  1624. steamid: user.steamid,
  1625. username: user.username
  1626. },
  1627. time: time(),
  1628. uniqueID: uniqueID
  1629. });
  1630. array_limit({
  1631. message: chat.message,
  1632. profile: {
  1633. avatar: user.avatar,
  1634. rank: user.rank,
  1635. steamid: user.steamid,
  1636. username: user.username
  1637. },
  1638. time: time(),
  1639. uniqueID: uniqueID
  1640. });
  1641. }
  1642. }
  1643. });
  1644. } else {
  1645. return socket.emit('notify','error','chatIsMuted');
  1646. }
  1647. }
  1648. }
  1649. });
  1650. });
  1651.  
  1652. setInterval(function() {
  1653.  
  1654. var online = Object.keys(users).length;
  1655. io.sockets.emit('users online', online);
  1656. },5000);
  1657.  
  1658. setInterval(function() {
  1659. connection.query('SELECT * FROM `GA`', function(errGA, rowGA) {
  1660. var giveAwayAmountOfTickets = rowGA.length;
  1661. var giveAwayAmountToWin = giveAwayAmountOfTickets * 500 * 0.95;
  1662. io.sockets.emit('giveaway amount', giveAwayAmountToWin);
  1663. io.sockets.emit('giveaway tickets', giveAwayAmountOfTickets);
  1664. });
  1665. connection.query('SELECT COUNT(DISTINCT `steamid`) FROM `GA`', function(errGAU, rowGAU) {
  1666. var giveAwayAmountOfUsers = rowGAU.length;
  1667. io.sockets.emit('giveaway users', giveAwayAmountOfUsers);
  1668. });
  1669. },5000);
  1670.  
  1671. var steam_check_interval = 5000;
  1672. setInterval(function() {
  1673. request('http://is.steam.rip/api/v1/?request=IsSteamRip', function(rip_error, response, body) {
  1674. if(rip_error){
  1675. return;
  1676. } else {
  1677. if(body){
  1678. if(body.result){
  1679. if(body.result.success === true){
  1680. if(body.result.isSteamRip === true){
  1681. isSteamRIP = true; //o nie! Steam nie zyje!
  1682. steam_check_interval = 20000;
  1683. } else {
  1684. isSteamRIP = false; //uff. Steam zyje!
  1685. }
  1686. }
  1687. }
  1688. }
  1689. }
  1690. });
  1691. },steam_check_interval);
  1692.  
  1693. function crashWithdraw(user){
  1694. if(cstatus === 'closed'){
  1695. var find = cbets.find(x => x.profile.steamid == user.steamid);
  1696. if(find == undefined) return;
  1697. if(find.done) return;
  1698. find.done = 1;
  1699. var multiplier = growthFunc(ctime);
  1700. var profit = Math.floor(find.bet * multiplier);
  1701. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+profit+', `total_won` = `total_won` + '+profit+' WHERE `steamid` = '+connection.escape(user.steamid), function(err) {
  1702. if(err){
  1703. console.log('important error at wallet increase');
  1704. console.log(err);
  1705. if (users[user.steamid]) {
  1706. users[user.steamid].socket.forEach(function(asocket) {
  1707. if(io.sockets.connected[asocket])
  1708. io.sockets.connected[asocket].emit('notify','error','serverError');
  1709. });
  1710. }
  1711. return;
  1712. } else {
  1713. if (users[user.steamid]) {
  1714. users[user.steamid].socket.forEach(function(asocket) {
  1715. if(io.sockets.connected[asocket])
  1716. io.sockets.connected[asocket].emit('balance change', profit);
  1717. });
  1718. }
  1719. io.sockets.to('crash').emit('player drop',{
  1720. bet: find.bet,
  1721. multiplier: multiplier.toFixed(2).toString(),
  1722. profile: {
  1723. avatar: find.profile.avatar,
  1724. steamid: find.profile.steamid,
  1725. username: find.profile.username
  1726. },
  1727. profit: profit
  1728. });
  1729. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(user.steamid)+', `change` = '+connection.escape(profit)+', `reason` = \'Crash #'+cgame+' '+'winning - '+multiplier.toFixed(2)+'\'', function(err2) {
  1730. if(err2){
  1731. console.log('database error at wallet_change');
  1732. console.log(err2);
  1733. return;
  1734. }
  1735. });
  1736. }
  1737. });
  1738. } else return;
  1739. }
  1740.  
  1741. function jackpotTimer(){
  1742. jpTimeleft = jpTime;
  1743. jpAllow = true;
  1744. io.sockets.to('jackpot').emit('jackpot new',jpTime);
  1745. var _timeleft = setInterval(function(){
  1746. --jpTimeleft;
  1747. if(jpTimeleft == 5) jpAllow = false;
  1748. else if(jpTimeleft == 0) {
  1749. var winnerNumber = getRandomInt(1,jpPool);
  1750. var winnerObject = jpBets.find(x => x.rangeMin <= winnerNumber && x.rangeMax >= winnerNumber);
  1751. var winner = winnerObject.player.steamid;
  1752. var winSum = (jpPool-parseInt(winnerObject.amount))-Math.floor((jpPool-parseInt(winnerObject.amount))*0.10)+parseInt(winnerObject.amount);
  1753. rakeSum = (jpPool-parseInt(winnerObject.amount))-Math.floor((jpPool-parseInt(winnerObject.amount))*0.90)+parseInt(winnerObject.amount);
  1754. if(jpBets.length >= 2) {
  1755. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+winSum+', `total_won` = `total_won` + '+winSum+' WHERE `steamid` = '+connection.escape(winner), function(err69, row69) {
  1756. if(err69){
  1757. return;
  1758. } else {
  1759. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(winner)+', `change` = '+connection.escape(winSum)+', `reason` = \'Jackpot winning!'+'\'', function(err70) {
  1760. connection.query('UPDATE `rake` SET `jackpot` = `jackpot` + '+rakeSum+'');
  1761. if(err70){
  1762. console.log('database error at wallet_change');console.log(err70);
  1763. }
  1764. jpBets.forEach(function(obj) {
  1765. if(JSON.stringify(obj) !== JSON.stringify(winnerObject)){
  1766. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+obj.amount+' WHERE `steamid` = '+connection.escape(obj.player.steamid), function(err71) {
  1767. if(err71) console.log('error at total lose increase');
  1768. });
  1769. if (users[obj.player.steamid]) {
  1770. users[obj.player.steamid].socket.forEach(function(asocket) {
  1771. if(io.sockets.connected[asocket])
  1772. io.sockets.connected[asocket].emit('notify','error','jackpotLost',[obj.amount]);
  1773. });
  1774. }
  1775. }
  1776. });
  1777. jp_limit(winnerObject);
  1778. if (users[winner]) {
  1779. users[winner].socket.forEach(function(asocket) {
  1780. if(io.sockets.connected[asocket])
  1781. io.sockets.connected[asocket].emit('balance change', winSum);
  1782. if(io.sockets.connected[asocket])
  1783. io.sockets.connected[asocket].emit('notify','success','jackpotWon',[winSum]);
  1784. });
  1785. }
  1786. var avatars = [];
  1787. jpBets.forEach(function(obj) {avatars.push(obj.player)});
  1788. io.sockets.to('jackpot').emit('jackpot end',{
  1789. winner: winnerObject.player,
  1790. players: avatars,
  1791. won: winSum
  1792. });
  1793. clearInterval(_timeleft);
  1794. jpPool = 0; jpBets = []; jpUsers = []; jpAllow = true; jpTimeleft = -1;
  1795. });
  1796. }
  1797. });
  1798. } else {
  1799. connection.query('SELECT * FROM `users` WHERE `steamid` = '+connection.escape(winner)+' LIMIT 1', function(jperror, jpuserour){
  1800. if(jperror){
  1801. return;
  1802. } else {
  1803. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+winSum+', `wager` = `wager` - '+winSum+', `total_bet` = `total_bet` - '+winSum+' WHERE `steamid` = '+connection.escape(winner), function(err69, row69) {
  1804. if(err69){
  1805. return;
  1806. } else {
  1807. if(jpuserour[0].deposit_sum <= 2500) {
  1808. connection.query('UPDATE `users` SET `wager` = `wager` + '+winSum+' WHERE `steamid` = '+connection.escape(winner));
  1809. }
  1810. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(winner)+', `change` = '+connection.escape(winSum)+', `reason` = \'Jackpot winning!'+'\'', function(err70) {
  1811. connection.query('UPDATE `rake` SET `jackpot` = `jackpot` + '+rakeSum+'');
  1812. if(err70){
  1813. console.log('database error at wallet_change');console.log(err70);
  1814. }
  1815. jpBets.forEach(function(obj) {
  1816. if(JSON.stringify(obj) !== JSON.stringify(winnerObject)){
  1817. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+obj.amount+' WHERE `steamid` = '+connection.escape(obj.player.steamid), function(err71) {
  1818. if(err71) console.log('error at total lose increase');
  1819. });
  1820. if (users[obj.player.steamid]) {
  1821. users[obj.player.steamid].socket.forEach(function(asocket) {
  1822. if(io.sockets.connected[asocket])
  1823. io.sockets.connected[asocket].emit('notify','error','jackpotLost',[obj.amount]);
  1824. });
  1825. }
  1826. }
  1827. });
  1828. jp_limit(winnerObject);
  1829. if (users[winner]) {
  1830. users[winner].socket.forEach(function(asocket) {
  1831. if(io.sockets.connected[asocket])
  1832. io.sockets.connected[asocket].emit('balance change', winSum);
  1833. if(io.sockets.connected[asocket])
  1834. io.sockets.connected[asocket].emit('notify','success','jackpotWon',[winSum]);
  1835. });
  1836. }
  1837. var avatars = [];
  1838. jpBets.forEach(function(obj) {avatars.push(obj.player)});
  1839. io.sockets.to('jackpot').emit('jackpot end',{
  1840. winner: winnerObject.player,
  1841. players: avatars,
  1842. won: winSum
  1843. });
  1844. clearInterval(_timeleft);
  1845. jpPool = 0; jpBets = []; jpUsers = []; jpAllow = true; jpTimeleft = -1;
  1846. });
  1847. }
  1848. });
  1849. }
  1850. });
  1851. }
  1852. }
  1853. },1000);
  1854. }
  1855.  
  1856. function checkTimer() {
  1857. if((timer == -1) && (!pause)) {
  1858. timer = accept+wait;
  1859. timerID = setInterval(function() {
  1860. //console.log(timer);
  1861. if (timer == 0) {
  1862. away();
  1863. lastrolls.push(winningNumber);
  1864. }
  1865. if(timer == -100) {
  1866. currentBets = {'red': [], 'green': [], 'black': []};
  1867. usersBr = {};
  1868. timer = accept+wait;
  1869. currentRollid = currentRollid+1;
  1870. pause = false;
  1871. actual_hash = sha256(generate(118)+'FUCKINGRETARDSINTHISFUCKINGCSGOGAMEXDDD'+sha256('ripGAME')+getRandomInt(1,100));
  1872. io.sockets.to('roulette').emit('roulette new round', 15, actual_hash);
  1873. }
  1874. timer = timer-1;
  1875. }, 100);
  1876. }
  1877. }
  1878.  
  1879. function away() {
  1880. pause = true;
  1881. var secret = generate(20);
  1882. var sh = sha256(sha256(actual_hash)+'WHATTHEFUCK'+currentRollid+'sweetcat'+secret);
  1883. winningNumber = sh.substr(0, 8);
  1884. winningNumber = parseInt(winningNumber, 16);
  1885. winningNumber = math.abs(winningNumber) % 15;
  1886. console.log('Rolled: '+winningNumber);
  1887. console.log('Round #'+currentRollid+' secret: '+secret);
  1888. io.sockets.to('roulette').emit('roulette ends', {
  1889. id: currentRollid,
  1890. winningNumber: winningNumber,
  1891. secret: secret,
  1892. hash: actual_hash,
  1893. shift: Math.random()
  1894. });
  1895. setTimeout(function() {
  1896. if((winningNumber >= 1) && (winningNumber <= 7)) {
  1897. currentBets['red'].forEach(function(itm) {
  1898. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+itm.amount*2+', `total_won` = `total_won` + '+itm.amount*2+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1899. if(err){
  1900. console.log('important error at wallet increase');
  1901. console.log(err);
  1902. if (users[itm.player.steamid]) {
  1903. users[itm.player.steamid].socket.forEach(function(asocket) {
  1904. if(io.sockets.connected[asocket])
  1905. io.sockets.connected[asocket].emit('notify','error','serverError');
  1906. });
  1907. }
  1908. return;
  1909. } else {
  1910. if (users[itm.player.steamid]) {
  1911. users[itm.player.steamid].socket.forEach(function(asocket) {
  1912. if(io.sockets.connected[asocket])
  1913. io.sockets.connected[asocket].emit('balance change', itm.amount*2);
  1914. });
  1915. }
  1916. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(itm.player.steamid)+', `change` = '+connection.escape(itm.amount*2)+', `reason` = \'Roulette #'+currentRollid+' '+'winning!'+'\'', function(err2) {
  1917. if(err2){
  1918. console.log('database error at wallet_change');
  1919. console.log(err2);
  1920. return;
  1921. }
  1922. });
  1923. }
  1924. });
  1925. });
  1926. currentBets['black'].forEach(function(itm) {
  1927. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+itm.amount+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1928. connection.query('UPDATE `rake` SET `roulette` = `roulette` + '+itm.amount+'');
  1929. if(err) console.log('error at total lose increase');
  1930. });
  1931. });
  1932. currentBets['green'].forEach(function(itm) {
  1933. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+itm.amount+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1934. connection.query('UPDATE `rake` SET `roulette` = `roulette` + '+itm.amount+'');
  1935. if(err) console.log('error at total lose increase');
  1936. });
  1937. });
  1938. }
  1939. if((winningNumber >= 8) && (winningNumber <= 14)) {
  1940. currentBets['black'].forEach(function(itm) {
  1941. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+itm.amount*2+', `total_won` = `total_won` + '+itm.amount*2+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1942. if(err){
  1943. console.log('important error at wallet increase');
  1944. console.log(err);
  1945. if (users[itm.player.steamid]) {
  1946. users[itm.player.steamid].socket.forEach(function(asocket) {
  1947. if(io.sockets.connected[asocket])
  1948. io.sockets.connected[asocket].emit('notify','error','serverError');
  1949. });
  1950. }
  1951. return;
  1952. } else {
  1953. if (users[itm.player.steamid]) {
  1954. users[itm.player.steamid].socket.forEach(function(asocket) {
  1955. if(io.sockets.connected[asocket])
  1956. io.sockets.connected[asocket].emit('balance change', itm.amount*2);
  1957. });
  1958. }
  1959. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(itm.player.steamid)+', `change` = '+connection.escape(itm.amount*2)+', `reason` = \'Roulette #'+currentRollid+' '+'winning!'+'\'', function(err2) {
  1960. if(err2){
  1961. console.log('database error at wallet_change');
  1962. console.log(err2);
  1963. return;
  1964. }
  1965. });
  1966. }
  1967. });
  1968. });
  1969. currentBets['red'].forEach(function(itm) {
  1970. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+itm.amount+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1971. connection.query('UPDATE `rake` SET `roulette` = `roulette` + '+itm.amount+'');
  1972. if(err) console.log('error at total lose increase');
  1973. });
  1974. });
  1975. currentBets['green'].forEach(function(itm) {
  1976. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+itm.amount+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1977. connection.query('UPDATE `rake` SET `roulette` = `roulette` + '+itm.amount+'');
  1978. if(err) console.log('error at total lose increase');
  1979. });
  1980. });
  1981. }
  1982. if((winningNumber >= 0) && (winningNumber <= 0)) {
  1983. currentBets['green'].forEach(function(itm) {
  1984. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+itm.amount*14+', `total_won` = `total_won` + '+itm.amount*14+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  1985. if(err){
  1986. console.log('important error at wallet increase');
  1987. console.log(err);
  1988. if (users[itm.player.steamid]) {
  1989. users[itm.player.steamid].socket.forEach(function(asocket) {
  1990. if(io.sockets.connected[asocket])
  1991. io.sockets.connected[asocket].emit('notify','error','serverError');
  1992. });
  1993. }
  1994. return;
  1995. } else {
  1996. if (users[itm.player.steamid]) {
  1997. users[itm.player.steamid].socket.forEach(function(asocket) {
  1998. if(io.sockets.connected[asocket])
  1999. io.sockets.connected[asocket].emit('balance change', itm.amount*14);
  2000. });
  2001. }
  2002. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(itm.player.steamid)+', `change` = '+connection.escape(itm.amount*14)+', `reason` = \'Roulette #'+currentRollid+' '+'winning!'+'\'', function(err2) {
  2003. if(err2){
  2004. console.log('database error at wallet_change');
  2005. console.log(err2);
  2006. return;
  2007. }
  2008. });
  2009. }
  2010. });
  2011. });
  2012. currentBets['black'].forEach(function(itm) {
  2013. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+itm.amount+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  2014. connection.query('UPDATE `rake` SET `roulette` = `roulette` + '+itm.amount+'');
  2015. if(err) console.log('error at total lose increase');
  2016. });
  2017. });
  2018. currentBets['red'].forEach(function(itm) {
  2019. connection.query('UPDATE `users` SET `total_lose` = `total_lose` + '+itm.amount+' WHERE `steamid` = '+connection.escape(itm.player.steamid), function(err) {
  2020. connection.query('UPDATE `rake` SET `roulette` = `roulette` + '+itm.amount+'');
  2021. if(err) console.log('error at total lose increase');
  2022. });
  2023. });
  2024. }
  2025. console.log('Done.');
  2026. }, 7000);
  2027. connection.query('INSERT INTO `roll_history` SET `roll` = '+connection.escape(winningNumber)+', `time` = '+connection.escape(time())+', `hash` = '+connection.escape(actual_hash));
  2028. }
  2029.  
  2030. /* */
  2031. /* BOT PART */
  2032. /* */
  2033.  
  2034. client.on("loggedOn", function(dataAndEvents) {
  2035. console.log("[BOT] Signed in!");
  2036. });
  2037. client.on("webSession", function(dataAndEvents, depName) {
  2038. manager.setCookies(depName, function(reply) {
  2039. if (reply) {
  2040. // return console.log("Error setting cookies/cache: " + reply), void process.exit(1);
  2041. }
  2042. var cb = manager.apiKey;
  2043. community.setCookies(depName);
  2044. community.startConfirmationChecker(polling_interval, identitysecret);
  2045. console.log("[BOT] Session cookies set!");
  2046. });
  2047. });
  2048. manager.on("sentOfferChanged", function(data,oldState) {
  2049. console.log("[BOT] Status of the trade offer #"+data.id+" from user: "+data.partner+" changed to: " + data.state + " from: " + oldState);
  2050. var string_state = {1:'Invalid',2:'Active',3:'Accepted',4:'Countered',5:'Expired',6:'Canceled',7:'Declined',8:'InvalidItems',9:'Needs Confirmation',10:'Canceled',11:'In Escrow'};
  2051. if (users[data.partner]) {
  2052. users[data.partner].socket.forEach(function(asocket) {
  2053. if(io.sockets.connected[asocket])
  2054. io.sockets.connected[asocket].emit('notify', '', 'offerStateChange',[data.id,string_state[oldState],string_state[data.state]]);
  2055. io.sockets.connected[asocket].emit('notify', '', 'offerStateChange',[data.id,string_state[oldState],string_state[data.state]]);
  2056. });
  2057. }
  2058. connection.query('SELECT * FROM `trade_history` WHERE `offer_id` = '+data.id, function(err,rows){
  2059. if(err){
  2060. console.log('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
  2061. console.log(err);
  2062. return;
  2063. } else if(rows.length < 1){
  2064. return;
  2065. } else {
  2066. connection.query('UPDATE `trade_history` SET `offer_state` = '+data.state+' WHERE `offer_id` = '+data.id, function(error){
  2067. if(error){
  2068. console.log('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT');
  2069. console.log(error);
  2070. return;
  2071. }
  2072. });
  2073. if(data.state == 3){
  2074. if(rows[0].action == 'deposit'){
  2075. data.getReceivedItems(function(items_error, receiveditems) {
  2076. if(items_error){
  2077. console.log('IMPORTANT ERROR AT DEPOSIT getReceivedItems, USER: '+rows[0].offer_partner);
  2078. console.log(items_error);
  2079. } else {
  2080. receiveditems.forEach(function(itemToReceive) {
  2081. connection.query('INSERT INTO `inventory` SET `id` = '+connection.escape(itemToReceive.id)+', `market_hash_name` = '+connection.escape(itemToReceive.market_hash_name)+', `classid` = '+connection.escape(itemToReceive.classid)+', `bot_id` = '+connection.escape(botsteamid['bot1'])+', `in_trade` = \'0\'', function(errorXD) {
  2082. if(errorXD) {
  2083. console.log('FUCKING IMPORTANT ERROR OCCURED ON ITEM ID: '+itemToReceive.id+" ("+itemToReceive.market_hash_name+")");
  2084. console.log(errorXD);
  2085. }
  2086. });
  2087. });
  2088. connection.query('UPDATE `users` SET `deposit_sum` = `deposit_sum` + '+rows[0].worth+', `wallet` = `wallet` + '+rows[0].worth+' WHERE `steamid` = '+connection.escape(rows[0].offer_partner), function(error1){
  2089. if(error1){
  2090. console.log('IMPORTANT ERROR AT SENT OFFER CHANGED EVENT, user:'+data.partner);
  2091. console.log(error1);
  2092. return;
  2093. } else {
  2094. connection.query('INSERT INTO `wallet_change` SET `user` = '+connection.escape(rows[0].offer_partner)+', `change` = '+connection.escape(rows[0].worth)+', `reason` = \'Deposit\'', function(err2) {
  2095. if(err2){
  2096. console.log('database error at wallet_change');
  2097. console.log(err2);
  2098. }
  2099. });
  2100. if (users[data.partner]) {
  2101. users[data.partner].socket.forEach(function(asocket) {
  2102. if(io.sockets.connected[asocket]) {
  2103. io.sockets.connected[asocket].emit('notify', 'success', 'depositOfferAccepted',[data.id,rows[0].worth]);
  2104. io.sockets.connected[asocket].emit('balance change', rows[0].worth);
  2105. }
  2106. });
  2107. }
  2108. }
  2109. });
  2110. }
  2111. });
  2112. } else if(rows[0].action == 'withdraw') {
  2113. if(data.itemsToGive){
  2114. data.itemsToGive.forEach(function(itemToGive) {
  2115. connection.query('DELETE FROM `inventory` WHERE `id` = '+itemToGive.id, function(errorAeh) {
  2116. if(errorAeh) {
  2117. console.log('error while deleting items on item ID: '+itemToGive.id+" ("+itemToGive.market_hash_name+")");
  2118. console.log(errorAeh);
  2119. }
  2120. });
  2121. });
  2122. if (users[data.partner]) {
  2123. users[data.partner].socket.forEach(function(asocket) {
  2124. if(io.sockets.connected[asocket]) {
  2125. io.sockets.connected[asocket].emit('notify', 'success', 'withdrawOfferAccepted',[data.id]);
  2126. }
  2127. });
  2128. }
  2129. }
  2130. }
  2131. } else if((data.state == 7) || (data.state == 5) || (data.state == 6) || (data.state == 1) || (data.state == 4) || (data.state == 8) || (data.state == 10)){
  2132. if(rows[0].action == 'withdraw') {
  2133. if(data.itemsToGive){
  2134. data.itemsToGive.forEach(function(update_item) {
  2135. connection.query('UPDATE `inventory` SET `in_trade` = \'0\''+' WHERE `id` = '+connection.escape(update_item.assetid), function(err6) {
  2136. if(err6) {
  2137. console.log('error at updating in trade items status. id:'+update_item.assetid);
  2138. console.log(err6);
  2139. }
  2140. });
  2141. });
  2142. connection.query('UPDATE `users` SET `wallet` = `wallet` + '+parseInt(rows[0].worth)+',`wager` = `wager` + '+parseInt(rows[0].worth)+' WHERE `steamid` = '+connection.escape(rows[0].offer_partner), function(err7) {
  2143. if(err7) {
  2144. console.log('IMPORTANT error at updating in trade items status. steamid:'+rows[0].offer_partner);
  2145. console.log(err7);
  2146. }
  2147. });
  2148. if (users[data.partner]) {
  2149. users[data.partner].socket.forEach(function(asocket) {
  2150. if(io.sockets.connected[asocket]) {
  2151. io.sockets.connected[asocket].emit('balance change', rows[0].worth);
  2152. }
  2153. });
  2154. }
  2155. }
  2156. }
  2157. }
  2158. }
  2159. });
  2160. });
  2161. manager.on("newOffer", function(oferta) {
  2162. console.log('Otrzymano nowa oferte #'+oferta.id+' od '+oferta.partner.toString());
  2163. if(oferta.partner.toString() == admin){
  2164. oferta.accept(true, function(blad, status){
  2165. if(blad){
  2166. console.log("[BOT] Error accepting the trade: " + blad);
  2167. } else console.log('[BOT] Accepted the trade of '+oferta.partner.toString()+' ('+status+').');
  2168. });
  2169. } else {
  2170. oferta.decline(function(blad){
  2171. if(blad){
  2172. console.log('[BOT] Error while canceling the trade of: '+oferta.partner.toString()+' ('+blad+').');
  2173. } else console.log('[BOT] Canceled trade from '+oferta.partner.toString());
  2174. });
  2175. }
  2176. });
  2177. community.on("newConfirmation", function(d) {
  2178. var time = Math.round(Date.now() / 1E3);
  2179. var data = SteamTotp.getConfirmationKey(identitysecret, time, "allow");
  2180. community.respondToConfirmation(d.id, d.key, time, data, true, function(error) {
  2181. console.log("[BOT] Outgoing confirmation for the trade: "+ d.key);
  2182. if (error) {
  2183. console.log("[BOT] Error while confirming the trade: " + error);
  2184. client.webLogOn();
  2185. }
  2186. });
  2187. });
  2188. community.on("confKeyNeeded", function(deepDataAndEvents, updateFunc) {
  2189. console.log("confKeyNeeded");
  2190. var progressContexts = Math.floor(Date.now() / 1E3);
  2191. updateFunc(null, progressContexts, SteamTotp.getConfirmationKey(identitysecret, progressContexts, deepDataAndEvents));
  2192. });
  2193. community.on("sessionExpired", function(err) {
  2194. if(err) return;
  2195. console.log('session expired, logging in...');
  2196. client.webLogOn();
  2197. });
  2198. /* */
  2199. /* FUNCTIONS PART */
  2200. /* */
  2201.  
  2202. function load() {
  2203. connection.query('SET NAMES utf8');
  2204. connection.query('SELECT `id` FROM `roll_history` ORDER BY `id` DESC LIMIT 1', function(err, row) {
  2205. if(err) {
  2206. console.log('Can not get number from the last game');
  2207. console.log(err);
  2208. process.exit(0);
  2209. }
  2210. if(!row.length) {
  2211. currentRollid = 1;
  2212. } else {
  2213. currentRollid = parseInt(row[0].id)+1;
  2214. }
  2215. });
  2216. loadHistory();
  2217. }
  2218.  
  2219. function loadHistory() {
  2220. connection.query('SELECT * FROM `roll_history` ORDER BY `id` LIMIT 10', function(err, row) {
  2221. if(err) {
  2222. console.log('Error while loading last rolls history');
  2223. console.log(err);
  2224. process.exit(0);
  2225. }
  2226. row.forEach(function(itm) {
  2227. lastrolls.push(itm.roll);
  2228. });
  2229. });
  2230. server.listen(8080);
  2231. }
  2232.  
  2233. function time() {
  2234. return parseInt(new Date().getTime()/1000)
  2235. }
  2236.  
  2237. function generate(count) {
  2238. return crypto.randomBytes(count).toString('hex');
  2239. }
  2240.  
  2241. function array_limit(wartosc){
  2242. if(chat_history.length==25){
  2243. chat_history.shift();
  2244. chat_history.shift();
  2245. }
  2246. chat_history.push(wartosc);
  2247. }
  2248.  
  2249. function jp_limit(wartosc){
  2250. if(jpWinners.length==10){
  2251. jpWinners.shift();
  2252. }
  2253. jpWinners.push(wartosc);
  2254. }
  2255.  
  2256. function getRandomInt(min, max) {
  2257. return Math.floor(Math.random() * (max - min + 1)) + min;
  2258. }
Add Comment
Please, Sign In to add comment