Guest User

Untitled

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