Guest User

Untitled

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