Guest User

Untitled

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