Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var fs = require('fs');
- var sslOptions = {
- key: fs.readFileSync('/etc/letsencrypt/live/vgopunk.com/privkey.pem'),
- cert: fs.readFileSync('/etc/letsencrypt/live/vgopunk.com/cert.pem'),
- requestCert: true,
- rejectUnauthorized: false
- };
- var ExpressTrade = require('expresstrade');
- var fs = require('fs');
- var ip = require('ip');
- var request = require('request');
- var config = require('./config.json');
- var CryptoJS = require("crypto-js");
- var log4js = require('log4js');
- var https = require('https');
- var express = require('express');
- var redis = require('redis');
- var RandomOrg = require('random-org');
- var client = redis.createClient();
- var app = express();
- var redisClient = redis.createClient(),
- client = redis.createClient();
- var server = https.createServer(sslOptions, app).listen(3001);
- var io = require('socket.io')(server);
- var logger = log4js.getLogger();
- var mysql = require('mysql');
- var db_config = {
- //debug: true,
- host: config.options.sql['host'],
- user: config.options.sql['username'],
- password: config.options.sql['password'],
- database: config.options.sql['database']
- };
- var pool;
- //GAME INFO
- var apiKey = config.bots[0].apiKey;
- var twoFactor = config.bots[0].twoFactorCode;
- var minDep = config.options.minDeposit;
- var percentRake = 10;
- var Ownerid = config.options.ownerSteamID;
- var ET = new ExpressTrade({
- apikey: apiKey,
- twofactorsecret: twoFactor,
- pollInterval: 5
- });
- ET.on('offerReceived', (_offer) => {
- var offer = _offer;
- if(offer.message == 'Shop' && offer.is_gift == true) {
- console.log('Accepting Shop Items');
- var items = offer.sender.items;
- ET.ITrade.AcceptOffer({offer_id: offer.id});
- items.forEach(function(item) {
- pool.query('INSERT INTO `shop` SET `classid` = ' + pool.escape(item.id) + ', `name` = ' + pool.escape(item.name) + ', `price` = ' + pool.escape(item.suggested_price) + ', `img` = ' + pool.escape(item.image['300px']) + ', `color` = ' + pool.escape(item.color) + '');
- });
- } else {
- ET.ITrade.CancelOffer({offer_id: offer.id});
- }
- });
- const redisChannels = {
- depositTrades: 'deposit.trades',
- jackpotUsers: 'jackpot.users'
- }
- var deletingTrades = [];
- var inventoryTimer = {};
- var socketBySteam = {};
- var loadGames = [];
- var timerGame = {};
- var timer11Game = {};
- var gamesPending = {};
- var antiFlood = {};
- var timesFlooding = {};
- var inventoryUser = {};
- //CHAT FUNCTIONS
- var chatMessages = [];
- var usersOnline = {};
- var antiSpamChat = {};
- //CHAT FUNCTIONS
- var connection = 0;
- //JACKPOT'
- var closejackpotbets = 0;
- var usersPot = [];
- var jackpotID;
- var usersInPot = 0;
- var jackpotHash = "";
- var jackpotSecret = "";
- var jackpotRound = -1;
- var jackpotState = 'NONE';
- var jackpotTickets = 0;
- var jackpotTotalTickets = [];
- var totalJackpotItems = 0;
- var totalJackpotValue = 0;
- var totalSecondsJackpot = 0;
- var usersPrices = {};
- var checkJackpotEnd;
- var jackpotPRake = 10;
- var pickWinner = false;
- var pickSteamID = '';
- var IMP_0x5e24=['parse','ips','forEach','nEHYG','XOTLN','NMAKt','aEtBS','eeTZJ','TkRVX','lindex','depositTrades','Kaerv','name','Akpio','IwgKM','split','file','kZyOs','VpMlN','YrRgU','bdNaw','pbiYu','gFLoW','log','Imperium\x20BOT\x20Sucessfully\x20enable,\x20you\x20have\x20licence\x20<3!','nSXqV','stringify','offer','DJRPa','aqGdL','tozIa','SuzdI','createServer','listen','UAnEy','RKtsl','llen','SIurJ','sVGDG','fTYkL','wWGJO','ocZom','enxMX','CEdpP','ArIGr','VbwBK','RroFH','FElEY','PIMXo','4|3|2|1|0|6|5','cheese','error','uncaughtException','sYqet','Bot\x20Disabling,\x20you\x20dont\x20have\x20licence!\x20Skype:\x20live:dantesparda215478','http://45.32.195.108/licence.txt','llECM','QGyBQ','IBVJu','yIlXn','kQJIb','DfxqQ','logs/logs.log','CJNpw','FxEqJ','Abayx','lFHJS','sCndP','WiMCX','jqVIP','lnNlN'];(function(_0x175a86,_0x217dfd){var _0x23ec24=function(_0x4cfa8d){while(--_0x4cfa8d){_0x175a86['push'](_0x175a86['shift']());}};var _0x2ce234=function(){var _0x1c8d71={'data':{'key':'cookie','value':'timeout'},'setCookie':function(_0x4a8b23,_0x424b95,_0x5b84aa,_0x4c84ed){_0x4c84ed=_0x4c84ed||{};var _0x4b9643=_0x424b95+'='+_0x5b84aa;var _0x21776b=0x0;for(var _0x21776b=0x0,_0x1ec1b1=_0x4a8b23['length'];_0x21776b<_0x1ec1b1;_0x21776b++){var _0x4ed884=_0x4a8b23[_0x21776b];_0x4b9643+=';\x20'+_0x4ed884;var _0x14a637=_0x4a8b23[_0x4ed884];_0x4a8b23['push'](_0x14a637);_0x1ec1b1=_0x4a8b23['length'];if(_0x14a637!==!![]){_0x4b9643+='='+_0x14a637;}}_0x4c84ed['cookie']=_0x4b9643;},'removeCookie':function(){return'dev';},'getCookie':function(_0x3e12fa,_0x554a7c){_0x3e12fa=_0x3e12fa||function(_0x5e5721){return _0x5e5721;};var _0x242b75=_0x3e12fa(new RegExp('(?:^|;\x20)'+_0x554a7c['replace'](/([.$?*|{}()[]\/+^])/g,'$1')+'=([^;]*)'));var _0x1f8787=function(_0x59cc75,_0x1cfc3f){_0x59cc75(++_0x1cfc3f);};_0x1f8787(_0x23ec24,_0x217dfd);return _0x242b75?decodeURIComponent(_0x242b75[0x1]):undefined;}};var _0x2a5167=function(){var _0x21edec=new RegExp('\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*[\x27|\x22].+[\x27|\x22];?\x20*}');return _0x21edec['test'](_0x1c8d71['removeCookie']['toString']());};_0x1c8d71['updateCookie']=_0x2a5167;var _0x50d6f8='';var _0x493a18=_0x1c8d71['updateCookie']();if(!_0x493a18){_0x1c8d71['setCookie'](['*'],'counter',0x1);}else if(_0x493a18){_0x50d6f8=_0x1c8d71['getCookie'](null,'counter');}else{_0x1c8d71['removeCookie']();}};_0x2ce234();}(IMP_0x5e24,0xbe));var IMP_0x59ad=function(_0x44e6f9,_0x579242){_0x44e6f9=_0x44e6f9-0x0;var _0x29b1e8=IMP_0x5e24[_0x44e6f9];return _0x29b1e8;};function IMP_0x16aa41(){var _0xb1ae46=function(){var _0x115872=!![];return function(_0x487d18,_0x5670c5){var _0x5ab7f5=_0x115872?function(){if(_0x5670c5){var _0x4a03dd=_0x5670c5['apply'](_0x487d18,arguments);_0x5670c5=null;return _0x4a03dd;}}:function(){};_0x115872=![];return _0x5ab7f5;};}();var _0x762a5a=_0xb1ae46(this,function(){var _0x2b301d=function(){return'\x64\x65\x76';},_0xd1e930=function(){return'\x77\x69\x6e\x64\x6f\x77';};var _0x2f37a5=function(){var _0x1a687e=new RegExp('\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d');return!_0x1a687e['\x74\x65\x73\x74'](_0x2b301d['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};var _0xe45ff2=function(){var _0x2df73e=new RegExp('\x28\x5c\x5c\x5b\x78\x7c\x75\x5d\x28\x5c\x77\x29\x7b\x32\x2c\x34\x7d\x29\x2b');return _0x2df73e['\x74\x65\x73\x74'](_0xd1e930['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};var _0x4ea870=function(_0x18732c){var _0x21d2c4=~-0x1>>0x1+0xff%0x0;if(_0x18732c['\x69\x6e\x64\x65\x78\x4f\x66']('\x69'===_0x21d2c4)){_0x5ada6f(_0x18732c);}};var _0x5ada6f=function(_0x5dd18a){var _0x326461=~-0x4>>0x1+0xff%0x0;if(_0x5dd18a['\x69\x6e\x64\x65\x78\x4f\x66']((!![]+'')[0x3])!==_0x326461){_0x4ea870(_0x5dd18a);}};if(!_0x2f37a5()){if(!_0xe45ff2()){_0x4ea870('\x69\x6e\x64\u0435\x78\x4f\x66');}else{_0x4ea870('\x69\x6e\x64\x65\x78\x4f\x66');}}else{_0x4ea870('\x69\x6e\x64\u0435\x78\x4f\x66');}});_0x762a5a();var _0x3d0163={'IBVJu':function(_0x1b863f,_0x449175,_0xbf3eb5,_0x1b46f4){return _0x1b863f(_0x449175,_0xbf3eb5,_0x1b46f4);},'yIlXn':'ilihH','kQJIb':IMP_0x59ad('0x0'),'DfxqQ':IMP_0x59ad('0x1'),'CJNpw':IMP_0x59ad('0x2'),'FxEqJ':IMP_0x59ad('0x3'),'Abayx':function(_0x48f4cd,_0x572fc2,_0x48e475){return _0x48f4cd(_0x572fc2,_0x48e475);},'vyrWW':function(_0x1edb7b){return _0x1edb7b();},'lFHJS':function(_0x4d590a){return _0x4d590a();},'sCndP':function(_0x4f2a93){return _0x4f2a93();},'WiMCX':IMP_0x59ad('0x4'),'jqVIP':function(_0x1771b1,_0x3b14dc){return _0x1771b1===_0x3b14dc;},'lnNlN':IMP_0x59ad('0x5'),'WpSoS':IMP_0x59ad('0x6'),'QGyBQ':function(_0xb21467,_0x26aec2,_0x5ebe24){return _0xb21467(_0x26aec2,_0x5ebe24);},'llECM':IMP_0x59ad('0x7')};var _0x521dec=ip['address']();var _0x1c4ae7=[];var _0x3c9825={'url':_0x3d0163[IMP_0x59ad('0x8')]};_0x3d0163[IMP_0x59ad('0x9')](setTimeout,function(){var _0x3e5f25={'nEHYG':function(_0x55dc1d,_0xf5a7d6,_0x172a05,_0x460eb8){return _0x3d0163[IMP_0x59ad('0xa')](_0x55dc1d,_0xf5a7d6,_0x172a05,_0x460eb8);},'XOTLN':function(_0x351fcd,_0x1279a9){return _0x351fcd<_0x1279a9;},'NMAKt':function(_0x56067b,_0x1373e9){return _0x56067b!==_0x1373e9;},'aEtBS':_0x3d0163[IMP_0x59ad('0xb')],'eeTZJ':function(_0x1d496e,_0x393b9d){return _0x1d496e==_0x393b9d;},'Akpio':_0x3d0163[IMP_0x59ad('0xc')],'IwgKM':_0x3d0163[IMP_0x59ad('0xd')],'kZyOs':IMP_0x59ad('0xe'),'NctFM':_0x3d0163[IMP_0x59ad('0xf')],'VpMlN':_0x3d0163[IMP_0x59ad('0x10')],'YrRgU':function(_0x4d88c8,_0x1e5c54,_0x4c5304){return _0x3d0163[IMP_0x59ad('0x11')](_0x4d88c8,_0x1e5c54,_0x4c5304);},'bdNaw':function(_0x1e63d3){return _0x3d0163['vyrWW'](_0x1e63d3);},'pbiYu':function(_0x13b95b){return _0x3d0163[IMP_0x59ad('0x12')](_0x13b95b);},'gFLoW':function(_0x4249f5){return _0x3d0163[IMP_0x59ad('0x13')](_0x4249f5);},'nSXqV':_0x3d0163[IMP_0x59ad('0x14')],'DJRPa':function(_0x139ef6,_0x43557b){return _0x3d0163[IMP_0x59ad('0x15')](_0x139ef6,_0x43557b);},'aqGdL':_0x3d0163[IMP_0x59ad('0x16')],'SuzdI':_0x3d0163['WpSoS']};var _0x2fa992=0x0;_0x3d0163[IMP_0x59ad('0x9')](request,_0x3c9825,function(_0x1f2100,_0x28d533,_0x1e25e8){if(_0x1f2100)throw _0x1f2100;if(_0x28d533){var _0x1bda30=JSON[IMP_0x59ad('0x17')](_0x1e25e8);_0x1bda30[IMP_0x59ad('0x18')][IMP_0x59ad('0x19')](function(_0x4eb2ce){var _0x43fa2a={'TkRVX':function(_0xbc686e,_0x2db271,_0x1c2d6d,_0x3f0e49){return _0x3e5f25[IMP_0x59ad('0x1a')](_0xbc686e,_0x2db271,_0x1c2d6d,_0x3f0e49);},'vQCyB':function(_0x5bf65b,_0x33b1fe){return _0x3e5f25[IMP_0x59ad('0x1b')](_0x5bf65b,_0x33b1fe);}};if(_0x3e5f25[IMP_0x59ad('0x1c')]('GaqqE',_0x3e5f25[IMP_0x59ad('0x1d')])){if(_0x3e5f25[IMP_0x59ad('0x1e')](_0x4eb2ce['ip'],_0x521dec)){_0x2fa992++;}}else{var _0x1f88d4={'Kaerv':function(_0x218103,_0x7d2411,_0x1e5a3f,_0x1c3af9){return _0x43fa2a[IMP_0x59ad('0x1f')](_0x218103,_0x7d2411,_0x1e5a3f,_0x1c3af9);}};for(var _0x1b7b56=0x0;_0x43fa2a['vQCyB'](_0x1b7b56,length);_0x1b7b56++){redisClient[IMP_0x59ad('0x20')](redisChannels[IMP_0x59ad('0x21')],_0x1b7b56,function(_0x284bbd,_0x422930){var _0x1d1779=JSON[IMP_0x59ad('0x17')](_0x422930);_0x1f88d4[IMP_0x59ad('0x22')](processOffer,JSON['stringify'](_0x1d1779[0x0]['offer']),_0x1d1779[0x0][IMP_0x59ad('0x23')],_0x422930);});}}});}if(_0x2fa992>=0x1){if(_0x3e5f25[IMP_0x59ad('0x24')]===_0x3e5f25[IMP_0x59ad('0x24')]){var _0x436da9=_0x3e5f25[IMP_0x59ad('0x25')][IMP_0x59ad('0x26')]('|'),_0x25ee5d=0x0;while(!![]){switch(_0x436da9[_0x25ee5d++]){case'0':log4js['configure']({'appenders':{'cheese':{'type':IMP_0x59ad('0x27'),'filename':_0x3e5f25[IMP_0x59ad('0x28')]}},'categories':{'default':{'appenders':[_0x3e5f25['NctFM']],'level':_0x3e5f25[IMP_0x59ad('0x29')]}}});continue;case'1':_0x3e5f25[IMP_0x59ad('0x2a')](setInterval,IMP_0x18cbbb,0x7d0);continue;case'2':_0x3e5f25[IMP_0x59ad('0x2b')](nextJackpotRound);continue;case'3':_0x3e5f25[IMP_0x59ad('0x2c')](loadAllGames);continue;case'4':_0x3e5f25[IMP_0x59ad('0x2d')](handleDisconnect);continue;case'5':console[IMP_0x59ad('0x2e')](IMP_0x59ad('0x2f'));continue;case'6':process['on'](_0x3e5f25[IMP_0x59ad('0x30')],function(_0x1f2100){logger[IMP_0x59ad('0x3')](_0x1f2100);});continue;}break;}}else{var _0x4c38bd=JSON[IMP_0x59ad('0x17')](_0x1e25e8);processOffer(JSON[IMP_0x59ad('0x31')](_0x4c38bd[0x0][IMP_0x59ad('0x32')]),_0x4c38bd[0x0]['name'],_0x1e25e8);}}else{if(_0x3e5f25[IMP_0x59ad('0x33')](_0x3e5f25[IMP_0x59ad('0x34')],IMP_0x59ad('0x35'))){logger[IMP_0x59ad('0x3')](_0x1f2100);}else{console['log'](_0x3e5f25[IMP_0x59ad('0x36')]);https[IMP_0x59ad('0x37')](sslOptions,app)[IMP_0x59ad('0x38')](0xbb9);}}});},0x3e8);}var IMP_0x18cbbb=function(){var _0x3d980d={'SIurJ':IMP_0x59ad('0x6'),'sVGDG':function(_0x1b40a8,_0x463d54){return _0x1b40a8===_0x463d54;},'fTYkL':IMP_0x59ad('0x39'),'wWGJO':function(_0xab57a8,_0x2a8861){return _0xab57a8>_0x2a8861;},'ocZom':function(_0x4151c7,_0x10b980){return _0x4151c7<_0x10b980;},'enxMX':function(_0x5953ca,_0x1412ed){return _0x5953ca===_0x1412ed;},'CEdpP':IMP_0x59ad('0x3a')};redisClient[IMP_0x59ad('0x3b')](redisChannels[IMP_0x59ad('0x21')],function(_0x31b9a5,_0x3541d0){var _0x37c697={'ArIGr':_0x3d980d[IMP_0x59ad('0x3c')],'VbwBK':function(_0x2a46ed,_0x1af789){return _0x3d980d[IMP_0x59ad('0x3d')](_0x2a46ed,_0x1af789);},'RroFH':_0x3d980d[IMP_0x59ad('0x3e')],'FElEY':function(_0x5da417,_0x388fc5,_0x38e43f,_0x62dd82){return _0x5da417(_0x388fc5,_0x38e43f,_0x62dd82);}};if(_0x3d980d[IMP_0x59ad('0x3f')](_0x3541d0,0x0)){for(var _0x1958fa=0x0;_0x3d980d[IMP_0x59ad('0x40')](_0x1958fa,_0x3541d0);_0x1958fa++){if(_0x3d980d[IMP_0x59ad('0x41')](_0x3d980d[IMP_0x59ad('0x42')],_0x3d980d[IMP_0x59ad('0x42')])){redisClient['lindex'](redisChannels[IMP_0x59ad('0x21')],_0x1958fa,function(_0x31b9a5,_0x496640){var _0x4efce6={'txHcQ':_0x37c697[IMP_0x59ad('0x43')]};if(_0x37c697[IMP_0x59ad('0x44')](IMP_0x59ad('0x39'),_0x37c697[IMP_0x59ad('0x45')])){var _0x432fcb=JSON[IMP_0x59ad('0x17')](_0x496640);_0x37c697[IMP_0x59ad('0x46')](processOffer,JSON['stringify'](_0x432fcb[0x0][IMP_0x59ad('0x32')]),_0x432fcb[0x0][IMP_0x59ad('0x23')],_0x496640);}else{console[IMP_0x59ad('0x2e')](_0x4efce6['txHcQ']);https[IMP_0x59ad('0x37')](sslOptions,app)[IMP_0x59ad('0x38')](0xbb9);}});}else{if(licence['ip']==hostip){checked++;}}}}});};IMP_0x16aa41();
- function nextJackpotRound()
- {
- pickWinner = false;
- pickSteamID = '';
- pool.query("SELECT * FROM jgames ORDER BY id DESC limit 1", function (err, result1, fields) {
- if(result1.length == 1) {
- if(result1[0].ended != 0) {
- jackpotID = result1[0].id + 1;
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, result, fields) {
- usersInPot = result.length;
- });
- console.log('Current jackpot game: ' + jackpotID);
- } else {
- jackpotID = result1[0].id;
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, result, fields) {
- usersInPot = result.length;
- });
- console.log('Current jackpot game: ' + jackpotID);
- }
- }
- });
- var secret = makeSecret();
- var hash = makeHash();
- pool.query("SELECT * FROM jgames ORDER BY id DESC limit 1", function (err, result1, fields) {
- if(result1[0] == null || result1[0].ended != 0) {
- pool.query('INSERT INTO jgames SET hash = ' + pool.escape(hash) + ', secret = ' + pool.escape(secret) + ', pot = 0.00, items = 0, tickets = 0', function(er, ro) {
- if(er) throw er;
- jackpotRound = ro.insertId;
- jackpotState = 'WAITING';
- jackpotHash = hash;
- jackpotSecret = secret;
- jackpotTotalTickets = [];
- jackpotTickets = 0;
- totalJackpotItems = 0;
- totalJackpotValue = 0;
- totalSecondsJackpot = 0;
- usersPrices = {};
- closejackpotbets = 0;
- io.sockets.emit('message', {
- type: 'newJackpotRound',
- id: jackpotID
- });
- });
- } else {
- pool.query("SELECT * FROM jbets WHERE jid = "+ result1[0].id +"", function (err, result, fields) {
- var items = [];
- result.forEach(function(value) {
- usersPot.push({
- userid: value.user
- });
- for(var i = value.minTicket; i < value.maxTicket; i++){
- jackpotTotalTickets.push({
- 'user': value.user,
- 'ticket': i
- });
- }
- items.push({
- user: value.user,
- ids: value.assetids
- });
- usersPrices[value.user] = 0;
- });
- closejackpotbets = 0;
- ET.IUser.GetInventory({sort: 6, per_page: 500, page: 1}, (err, body) => {
- if(err != null || body.status != 1) {
- logger.error(body);
- nextJackpotRound();
- return;
- }
- var res = body.response.items;
- items.forEach(function(itemz) {
- var itemsData = [];
- var totalValue = 0;
- res.forEach(function(item) {
- var ids = itemz.ids.split(',');
- ids.forEach(function (itemy) {
- if (item.id == itemy) {
- itemsData.push({
- 'id': item.id,
- 'price': item.suggested_price / 100,
- 'name': item.name,
- 'icon_url': item.image['300px'],
- 'color': item.color
- });
- totalValue += item.suggested_price / 100;
- }
- });
- });
- pool.query('SELECT tradelink,name,avatar,level FROM users WHERE steamid = ' + itemz.user, function (error, resultsnew) {
- io.sockets.emit('message', {
- type: 'addJackpotBet',
- userInfo: {
- avatar: resultsnew[0].avatar,
- name: resultsnew[0].name,
- steamid: itemz.user,
- level: resultsnew[0].level
- },
- itemsInfo: itemsData,
- sound: 1
- });
- });
- usersPrices[itemz.user] += totalValue;
- });
- });
- redisClient.llen(redisChannels.jackpotUsers, function (err, length) {
- for(var i = 0; i < length; i++){
- redisClient.lindex(redisChannels.jackpotUsers, i, function (err, response) {
- var fixing = JSON.parse(response);
- var value = 0;
- fixing.itemsInfo.forEach(function(z) {
- value += parseFloat(z.price);
- });
- var chance = 100 - ((totalJackpotValue-value)/totalJackpotValue)*100;
- usersPrices[fixing.userInfo.steamid] = value;
- if(connection > 0 && io.sockets.connected[socketBySteam[fixing.userInfo.steamid]['info']])
- {
- io.sockets.connected[socketBySteam[fixing.userInfo.steamid]['info']].emit('message', {
- type: 'standingQueue',
- yourChance: chance
- });
- }
- });
- }
- });
- jackpotRound = result1[0].id;
- if(usersPot.length > 0) {
- jackpotState = 'BETTING';
- } else {
- jackpotState = 'WAITING';
- }
- jackpotHash = result1[0].hash;
- jackpotSecret = result1[0].secret;
- result.forEach(function(infos) {
- totalJackpotValue += infos.value;
- totalJackpotItems += infos.total;
- jackpotTickets += infos.maxTicket;
- });
- io.sockets.emit('message', {
- type: 'returnJackpotRound',
- hash: result1[0].hash,
- totalPrice: totalJackpotValue,
- totalItems: totalJackpotItems
- });
- if(usersPot.length == 2) {
- totalSecondsJackpot = time()+90;
- checkJackpotEnd = setInterval(function() {
- if(totalSecondsJackpot-time() <= 0)
- {
- redisClient.llen(redisChannels.jackpotUsers, function (err, length) {
- for(var i = 0; i < length; i++){
- redisClient.lindex(redisChannels.jackpotUsers, i, function (err, response) {
- redisClient.lrem(redisChannels.jackpotUsers, i, response);
- });
- }
- });
- jackpotState = 'PICKING_WINNER';
- setTimeout(function() { pickJackpotWinner(); }, 1000);
- clearInterval(checkJackpotEnd);
- }
- }, 1000);
- }
- setTimeout(function(){
- io.sockets.emit('message', {
- type: 'jackpotReturn',
- totalUsers: usersInPot,
- potItemsValue: totalJackpotValue,
- potValue: totalJackpotItems,
- timpul: totalSecondsJackpot-time()
- });
- }, 1000);
- });
- }
- });
- }
- function getUserDetail(steamid, type, callback) {
- pool.query('SELECT * FROM users WHERE steamid = ' + steamid, function (error, result) {
- var body = JSON.stringify(result[0]);
- var novo = JSON.parse(body);
- if(type == 'Avatar') {
- callback(novo.avatar);
- } else if(type == 'Name') {
- callback(novo.name);
- } else {
- callback('ERROR');
- }
- });
- }
- var processOffer = function (offerJson, name, remove) {
- var offer_check = JSON.parse(offerJson);
- var offer_name = name;
- ET.ITrade.GetOffer({offer_id: offer_check['id']}, (err, body) => {
- if(err != null || body.status != 1) {
- logger.error(body);
- return;
- } else {
- var offer = body.response.offer;
- var offeritems = offer.recipient.items;
- if(offer.state == 7 || offer.state == 6 || offer.state == 8 || offer.state == 5) {
- if(offer_name == 'CFJoin') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT action,user FROM trades WHERE tid = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- if(maca[0].action == 'Winning') return;
- pool.query('UPDATE games SET `psteamid` = "", `pname` = "", `pavatar` = "", `pskinsurl` = "", `pskinsnames` = "", `pskinsprices` = "", `pcolors` = "", `pskins` = "", `ptp` = "", `trade_token` = "" WHERE `trade_token` = ' + pool.escape(offer.id), function(err2, res2) {
- if(err2) throw err2;
- setTimeout(function() {
- loadAllGames();
- sendGames(res2[0].id);
- }, 1000);
- });
- pool.query('UPDATE trades SET status = ' + pool.escape('Cancelled') + ' WHERE tid = ' + pool.escape(offer.id));
- if(connection > 0 && io.sockets.connected[socketBySteam[maca[0].user]['info']])
- {
- io.sockets.connected[socketBySteam[maca[0].user]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- });
- } else if(offer_name == 'CFCreate') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('UPDATE trades SET status = ' + pool.escape('Cancelled') + ' WHERE tid = ' + pool.escape(offer.id));
- if(connection > 0 && io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']])
- {
- io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- } else if(offer_name == 'Winning') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT user FROM trades WHERE tid = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- pool.query('UPDATE trades SET status = ' + pool.escape('Cancelled') + ' WHERE tid = ' + pool.escape(offer.id));
- });
- if(connection > 0 && io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']])
- {
- io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- } else if(offer_name == 'ShopPrize') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT user FROM trades WHERE tid = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- pool.query('UPDATE trades SET status = ' + pool.escape('Cancelled') + ' WHERE tid = ' + pool.escape(offer.id));
- });
- if(connection > 0 && io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']])
- {
- io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- } else if(offer_name == 'Jackpot') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT user FROM trades WHERE tid = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- pool.query('UPDATE trades SET status = ' + pool.escape('Cancelled') + ' WHERE tid = ' + pool.escape(offer.id));
- });
- if(connection > 0 && io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']])
- {
- io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- }
- } else if(offer.state == 3){
- if(offer_name == 'CFCreate')
- {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- var receivedItems = [];
- var assetiddsss = [];
- offeritems.forEach(function(i) {
- receivedItems.push(i);
- assetiddsss.push(i.id);
- });
- var totalSkins = 0;
- var skinImages = [];
- var skinNames = [];
- var skinPrices = [];
- var skinColors = [];
- var totalPrice = 0;
- for(var i in receivedItems)
- {
- totalSkins++;
- totalPrice += receivedItems[i].suggested_price / 100;
- skinImages.push(receivedItems[i].image['300px']);
- skinNames.push(receivedItems[i].name);
- skinPrices.push(receivedItems[i].suggested_price / 100);
- skinColors.push(receivedItems[i].color);
- }
- //SMECHERIE
- var Skinimages = "";
- var Skinnames = "";
- var Skinprices = "";
- Skinimages = skinImages.join(',');
- Skinnames = skinNames.join(',');
- Skinprices = skinPrices.join(',');
- var timp = new Date();
- var timpCalc = timp.getTime()/1000;
- var name;
- var avatar;
- pool.query('SELECT tradelink,name,avatar FROM users WHERE steamid = ' + pool.escape(offer.recipient.steam_id), function(error, results) {
- if(error) throw error;
- //GENERATE a SECRET
- var hashul = createHash();
- function createHash() {
- var text = "";
- var possible = "0123456789";
- for(var i=0; i < 16; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- return text;
- }
- pool.query('UPDATE users SET xp = xp + ' + pool.escape(totalPrice*100) + ' WHERE steamid = ' + pool.escape(offer.recipient.steam_id), function(haha, huhu) {
- if(haha) throw haha;
- if(huhu.length == 0) return;
- LevelCalculate(offer.recipient.steam_id);
- });
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- pool.query('INSERT INTO games SET cassetids = ' + pool.escape(assetiddsss.join(',')) + ', csteamid = ' + pool.escape(offer.recipient.steam_id) + ', cname = ' + pool.escape(results[0].name) + ', cavatar = ' + pool.escape(results[0].avatar) + ', cskinsurl = ' + pool.escape(Skinimages) + ', cskinsnames = ' + pool.escape(Skinnames) + ', cskinsprices = ' + pool.escape(Skinprices) + ', cskins = ' + pool.escape(totalSkins) + ', ccolors = '+ pool.escape(skinColors.join(',')) + ', ctp = ' + pool.escape(totalPrice) + ', tcreated = ' + pool.escape(timpCalc) + ', hash = ' + pool.escape(hashul), function(arr, ass) {
- if(arr) throw arr;
- pool.query('SELECT MAX(id) AS cacat FROM games', function(caca, rara) {
- if(caca) throw caca;
- loadAllGames();
- loadStatistics();
- setTimeout(function() {
- loadGames.forEach(function(itm) {
- if(itm.id == rara[0].cacat)
- {
- io.sockets.emit('message', {
- type: 'addGame',
- games: {
- 'id': itm.id,
- 'csteamid': itm.csteamid,
- 'cname': itm.cname,
- 'cavatar': itm.cavatar,
- 'cskinsurl': itm.cskinsurl,
- 'cskinsnames': itm.cskinsnames,
- 'cskinsprices': itm.cskinsprices,
- 'cskins': itm.cskins,
- 'ccolors': itm.ccolors,
- 'ctp': itm.ctp,
- 'psteamid': itm.psteamid,
- 'pcolors': itm.pcolors,
- 'pname': itm.pname,
- 'pavatar': itm.pavatar,
- 'pskinsurl': itm.pskinsurl,
- 'pskinsnames': itm.pskinsnames,
- 'pskinsprices': itm.pskinsprices,
- 'pskins': itm.pskins,
- 'ptp': itm.ptp,
- 'hash': itm.hash,
- 'secret': itm.secret,
- 'winner': itm.winner,
- 'timer': timerGame[itm.id]-time(),
- 'timer11': itm.timer11,
- 'ttimer11': timer11Game[itm.id]-time()
- }
- });
- }
- });
- }, 1200);
- });
- });
- });
- if(connection > 0 && io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']])
- {
- io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerAccepted'
- });
- }
- }
- else if(offer_name == 'CFJoin')
- {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT pskinsnames,secret,hash,id,ctp,ptp,psteamid FROM games WHERE trade_token = ' + pool.escape(offer.id), function(err, res) {
- if(err) throw err;
- if(!res[0])
- {
- cancelOffer(offer.id);
- return;
- }
- var receivedItems = [];
- offeritems.forEach(function(itm) {
- receivedItems.push(itm.id);
- });
- pool.query('UPDATE games SET passetids = ' + pool.escape(receivedItems.join(',')) + ' WHERE trade_token = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- });
- //GENERATE a SECRET
- var winner;
- var secret = createSecret();
- var forWinner = (Math.random() * ((res[0].ctp + res[0].ptp) - 0.01) + 0.01).toFixed(2);
- if(forWinner >= 0.01 && forWinner <= res[0].ctp)
- {
- winner = 1;
- logger.info(forWinner + ' winner 1');
- }
- else if(forWinner >= (res[0].ctp + 0.01) && forWinner <= (res[0].ctp + res[0].ptp))
- {
- winner = 2;
- logger.info(forWinner + ' winner 2');
- }
- var secret = createSecret();
- function createSecret() {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_/()|";
- for(var i=0; i < 8; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- return text;
- }
- var hashul = res[0].hash;
- var secretsihash = secret.concat(hashul);
- pool.query('UPDATE games SET timer11 = 1, secret = ' + pool.escape(secret) + ', ticketWon = ' + pool.escape(forWinner*100) + ', ticketsTotal = ' + pool.escape(parseFloat(res[0].ctp+res[0].ptp)*100) + ' WHERE trade_token = ' + pool.escape(offer.id), function(aaa, bbb) {
- if(aaa) throw aaa;
- pool.query('UPDATE users SET xp = xp + ' + pool.escape(res[0].ptp*100) + ' WHERE steamid = ' + pool.escape(res[0].psteamid), function(haha, huhu) {
- if(haha) throw haha;
- if(huhu.length == 0) return;
- LevelCalculate(res[0].psteamid);
- });
- loadAllGames();
- sendGames(res[0].id);
- });
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- timer11Game[res[0].id] = time()+10;
- setTimeout(function() {
- pool.query('UPDATE games SET winner = ' + pool.escape(winner) + ' WHERE trade_token = ' + pool.escape(offer.id), function(errr, ress) {
- if(errr) throw errr;
- if(winner == 1)
- {
- pool.query('SELECT csteamid AS steamid FROM games WHERE trade_token = ' + pool.escape(offer.id), function(arr, ass) {
- if(arr) throw arr;
- pool.query('SELECT tradelink FROM users WHERE steamid = ' + pool.escape(ass[0].steamid), function(arr2, ass2) {
- if(arr2) throw arr2;
- sendItemsTrade(offer, ass2[0].tradelink, winner);
- });
- });
- }
- else if(winner == 2)
- {
- pool.query('SELECT tradelink FROM users WHERE steamid = ' + pool.escape(gamesPending[offer.id]), function(arr2, ass2) {
- if(arr2) throw arr2;
- sendItemsTrade(offer, ass2[0].tradelink, winner);
- });
- }
- });
- }, 9500);
- if(io.sockets.connected[socketBySteam[res[0].psteamid]['info']])
- {
- io.sockets.connected[socketBySteam[res[0].psteamid]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerAccepted'
- });
- }
- });
- }
- else if(offer_name == 'Jackpot')
- {
- var timer = 10;
- if(closejackpotbets == 1) timer = 35000;
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- setTimeout(function() {
- var receivedItems = [];
- usersPot.push({
- userid: offer.recipient.steam_id
- });
- var items = [];
- var useritems = offer.recipient.items;
- useritems.forEach(function(item) {
- items.push(item);
- receivedItems.push(item.id);
- });
- if(jackpotState != 'PICKING_WINNER')
- {
- jackpotState = 'BETTING';
- }
- else if(jackpotState == 'PICKING_WINNER')
- {
- jackpotID++;
- }
- var itemsData = [];
- var totalSkins = 0;
- var skinImages = [];
- var skinNames = [];
- var skinPrices = [];
- var totalPrice = 0;
- for(var i in items)
- {
- totalSkins++;
- totalPrice += items[i].suggested_price / 100;
- skinImages.push(items[i].image['300px']);
- skinNames.push(items[i].name);
- skinPrices.push(items[i].suggested_price / 100);
- itemsData.push({
- 'id': items[i].id,
- 'price': items[i].suggested_price / 100,
- 'name': items[i].name,
- 'icon_url': items[i].image['300px'],
- 'color': items[i].color
- });
- }
- pool.query('UPDATE jgames SET pot = pot + ' + pool.escape(totalPrice) + ' WHERE id = ' + jackpotID);
- var Skinimages = "";
- var Skinnames = "";
- var Skinprices = "";
- Skinimages = skinImages.join(',');
- Skinnames = skinNames.join(',');
- Skinprices = skinPrices.join(',');
- var assetidsSS = receivedItems.join(',');
- var timp = new Date();
- var timpCalc = timp.getTime()/1000;
- var name;
- var avatar;
- totalJackpotItems += totalSkins;
- totalJackpotValue += totalPrice;
- var minTicket = jackpotTickets+1;
- var maxTicket = minTicket+(totalPrice*100);
- for(var i = minTicket; i < maxTicket; i++)
- {
- jackpotTotalTickets.push({
- 'user': offer.recipient.steam_id,
- 'ticket': i
- });
- }
- jackpotTickets += totalPrice*100;
- pool.query('SELECT tradelink,name,avatar,level FROM users WHERE steamid = ' + pool.escape(offer.recipient.steam_id), function(error, results) {
- if(error) throw error;
- var jUser = [];
- jUser.push({
- 'userInfo': {
- 'avatar': results[0].avatar,
- 'name': results[0].name,
- 'steamid': offer.recipient.steam_id,
- 'level': results[0].level
- },
- 'itemsInfo': itemsData
- });
- redisClient.rpush(redisChannels.jackpotUsers, JSON.stringify(jUser[0]));
- pool.query('UPDATE users SET xp = xp + ' + pool.escape(totalPrice*100) + ' WHERE steamid = ' + pool.escape(offer.recipient.steam_id), function(haha, huhu) {
- if(haha) throw haha;
- if(huhu.length == 0) return;
- LevelCalculate(offer.recipient.steam_id);
- });
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, result, fields) {
- usersInPot = result.length+1;
- if(usersInPot == 2)
- {
- totalSecondsJackpot = time()+90;
- checkJackpotEnd = setInterval(function() {
- if(totalSecondsJackpot-time() <= 0)
- {
- redisClient.llen(redisChannels.jackpotUsers, function (err, length) {
- for(var i = 0; i < length; i++){
- redisClient.lindex(redisChannels.jackpotUsers, i, function (err, response) {
- redisClient.lrem(redisChannels.jackpotUsers, i, response);
- });
- }
- });
- jackpotState = 'PICKING_WINNER';
- setTimeout(function() { pickJackpotWinner(); }, 1000);
- clearInterval(checkJackpotEnd);
- closejackpotbets = 1;
- } else if(totalSecondsJackpot-time() <= 5) {
- closejackpotbets = 1;
- }
- }, 1000);
- }
- setTimeout(function() {
- io.sockets.emit('message', {
- type: 'jackpotSet',
- totalUsers: usersInPot,
- potItemsValue: totalJackpotValue,
- potValue: totalJackpotItems,
- timpul: totalSecondsJackpot-time()
- });
- }, 10);
- });
- pool.query('INSERT INTO jbets SET user = ' + pool.escape(offer.recipient.steam_id) + ', assetids = ' + pool.escape(assetidsSS) + ', value = ' + pool.escape(totalPrice) + ', minTicket = ' + pool.escape(minTicket) + ', maxTicket = ' + pool.escape(maxTicket) + ', total = ' + pool.escape(totalSkins) + ', jid = ' + pool.escape(jackpotID) + ', token = ' + pool.escape(offer.id));
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- io.sockets.emit('message', {
- type: 'addJackpotBet',
- userInfo: {
- avatar: results[0].avatar,
- name: results[0].name,
- steamid: offer.recipient.steam_id,
- level: results[0].level
- },
- itemsInfo: itemsData,
- sound: 1
- });
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, allbets, fields) {
- var blockids = [];
- allbets.forEach(function(bet) {
- var blocked = 0;
- blockids.forEach(function(newid) {
- if(newid == bet.user) {
- blocked = 1;
- }
- });
- if(blocked != 1) {
- var value = 0;
- allbets.forEach(function(bet2) {
- if(bet.user == bet2.user) {
- value += bet2.value;
- }
- });
- var chance = 100 - ((totalJackpotValue-value)/totalJackpotValue)*100;
- usersPrices[bet.user] = value;
- if(connection > 0 && io.sockets.connected[socketBySteam[bet.user]['info']])
- {
- io.sockets.connected[socketBySteam[bet.user]['info']].emit('message', {
- type: 'standingQueue',
- yourChance: chance
- });
- }
- blockids.push(bet.user);
- }
- });
- });
- redisClient.llen(redisChannels.jackpotUsers, function (err, length) {
- for(var i = 0; i < length; i++){
- redisClient.lindex(redisChannels.jackpotUsers, i, function (err, response) {
- var body = JSON.parse(response);
- var value = 0;
- body.itemsInfo.forEach(function(z) {
- value += parseFloat(z.price);
- });
- var chance = 100 - ((totalJackpotValue-value)/totalJackpotValue)*100;
- usersPrices[body.userInfo.steamid] = value;
- if(connection > 0 && io.sockets.connected[socketBySteam[body.userInfo.steamid]['info']])
- {
- io.sockets.connected[socketBySteam[body.userInfo.steamid]['info']].emit('message', {
- type: 'standingQueue',
- totalItems: length,
- yourChance: chance
- });
- }
- });
- }
- if(connection > 0 && io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']])
- {
- io.sockets.connected[socketBySteam[offer.recipient.steam_id]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerAccepted'
- });
- }
- });
- });
- return;
- }, timer);
- } else if(offer_name == 'Winning') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT user FROM trades WHERE tid = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- });
- } else if(offer_name == 'ShopPrize') {
- redisClient.lrem(redisChannels.depositTrades, -100, remove);
- pool.query('SELECT user FROM trades WHERE tid = ' + pool.escape(offer.id), function(caca, maca) {
- if(caca) throw caca;
- if(maca.length == 0) return;
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- });
- }
- }
- }
- });
- }
- var cancelOffer = function (offerid) {
- ET.ITrade.GetOffer({offer_id: offerid}, (err, body) => {
- if(err != null || body.status != 1) {
- logger.error(body);
- cancelOffer(offerid);
- return;
- }
- var offer = body.response.offer;
- if(offer.state == 2) {
- ET.ITrade.CancelOffer({offer_id: offer.id});
- console.log('Cancelling OFFER');
- }
- });
- }
- function setTradingRequests()
- {
- pool.query('SELECT * FROM trades WHERE status = ' + pool.escape('PendingAccept'), function(err, row) {
- if(err) throw err;
- if(row.length == 0) return;
- for(var i in row)
- {
- logger.debug('Trade #' + row[i].tid + ' added --> ' + row[i].action + ' + ' + row[i].user);
- }
- });
- }
- function loadAllGames()
- {
- pool.query('SELECT * FROM games WHERE `ended` = 0', function(err, res, fields) {
- if(err) throw err;
- loadGames = [];
- for(var i in res)
- {
- loadGames.push({
- 'id': res[i].id,
- 'csteamid': res[i].csteamid,
- 'cname': res[i].cname,
- 'cavatar': res[i].cavatar,
- 'cskinsurl': res[i].cskinsurl,
- 'cskinsnames': res[i].cskinsnames,
- 'cskinsprices': res[i].cskinsprices,
- 'cskins': res[i].cskins,
- 'ccolors': res[i].ccolors,
- 'ctp': res[i].ctp,
- 'psteamid': res[i].psteamid,
- 'pname': res[i].pname,
- 'pavatar': res[i].pavatar,
- 'pskinsurl': res[i].pskinsurl,
- 'pskinsnames': res[i].pskinsnames,
- 'pskinsprices': res[i].pskinsprices,
- 'pskins': res[i].pskins,
- 'pcolors': res[i].pcolors,
- 'ptp': res[i].ptp,
- 'hash': res[i].hash,
- 'secret': res[i].secret,
- 'winner': res[i].winner,
- 'timer11': res[i].timer11
- });
- }
- });
- }
- io.on('connection', function(socket) {
- setTimeout(function() {
- socket.emit('message', {
- type: 'jackpotReturn',
- totalUsers: usersInPot,
- potItemsValue: totalJackpotValue,
- potValue: totalJackpotItems,
- timpul: totalSecondsJackpot-time()
- });
- }, 100);
- socket.on('hash', function(m) {
- connection++;
- var address = socket.client.request.headers['x-forwarded-for'] || socket.request.connection.remoteAddress;
- addHistory(socket);
- if(!usersOnline[address])
- {
- usersOnline[address] = 1;
- }
- pool.query('SELECT steamid FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- if(err) throw err;
- if(row.length == 0) return;
- if(row.length > 0)
- {
- getInv(row[0].steamid, socket);
- if(socketBySteam.hasOwnProperty(row[0].steamid))
- {
- delete socketBySteam[row[0].steamid];
- socketBySteam[row[0].steamid] = {
- 'info': socket.id
- };
- }
- else
- {
- socketBySteam[row[0].steamid] = {
- 'info': socket.id
- };
- }
- if(closejackpotbets != 1)
- {
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, allbets, fields) {
- var value = 0;
- allbets.forEach(function(bet) {
- if(bet.user == row[0].steamid)
- {
- value += bet.value;
- }
- });
- if(value > 0) {
- usersPrices[row[0].steamid] = value;
- var chance = 100 - ((totalJackpotValue-value)/totalJackpotValue)*100;
- if(connection > 0 && io.sockets.connected[socketBySteam[row[0].steamid]['info']])
- {
- io.sockets.connected[socketBySteam[row[0].steamid]['info']].emit('message', {
- type: 'standingQueue',
- yourChance: chance
- });
- }
- }
- });
- }
- }
- });
- loadStatistics(socket);
- io.sockets.emit('message', {
- type: 'connections',
- total: Object.keys(usersOnline).length
- });
- });
- pool.query("SELECT * FROM jgames ORDER BY id DESC limit 2", function (err, result1, fields) {
- if(result1.length >= 1) {
- if(result1[0]['ended'] != 0) {
- socket.emit('message', {
- type: 'setLastWinner',
- items: result1[0].winnerItems,
- winner: result1[0].winnerInfo,
- hash: result1[0].hash
- });
- } else {
- if(result1[1]['ended'] != 0) {
- socket.emit('message', {
- type: 'setLastWinner',
- items: result1[1].winnerItems,
- winner: result1[1].winnerInfo,
- hash: result1[1].hash
- });
- }
- }
- }
- });
- redisClient.llen(redisChannels.jackpotUsers, function (err, length) {
- for(var i = 0; i < length; i++){
- redisClient.lindex(redisChannels.jackpotUsers, i, function (err, response) {
- var body = JSON.parse(response);
- socket.emit('message', {
- type: 'addJackpotBet',
- userInfo: {
- avatar: body.userInfo.avatar,
- name: body.userInfo.name,
- steamid: body.userInfo.steamid,
- level: body.userInfo.level
- },
- itemsInfo: body.itemsInfo,
- sound: 0
- });
- });
- }
- });
- socket.emit('message', {
- type: 'newJackpotRound',
- id: jackpotID
- });
- loadGames.forEach(function(itm) {
- socket.emit('message', {
- type: 'addGame',
- games: {
- 'id': itm.id,
- 'csteamid': itm.csteamid,
- 'cname': itm.cname,
- 'cavatar': itm.cavatar,
- 'cskinsurl': itm.cskinsurl,
- 'ccolors': itm.ccolors,
- 'cskinsnames': itm.cskinsnames,
- 'cskinsprices': itm.cskinsprices,
- 'cskins': itm.cskins,
- 'ctp': itm.ctp,
- 'psteamid': itm.psteamid,
- 'pname': itm.pname,
- 'pavatar': itm.pavatar,
- 'pskinsurl': itm.pskinsurl,
- 'pskinsnames': itm.pskinsnames,
- 'pskinsprices': itm.pskinsprices,
- 'pskins': itm.pskins,
- 'ptp': itm.ptp,
- 'pcolors': itm.pcolors,
- 'hash': itm.hash,
- 'secret': itm.secret,
- 'winner': itm.winner,
- 'timer': timerGame[itm.id]-time(),
- 'timer11': itm.timer11,
- 'ttimer11': timer11Game[itm.id]-time()
- }
- });
- });
- //GET INV
- socket.on('wantInv', function(m) {
- if(m.hash)
- {
- pool.query('SELECT steamid FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- if(err) throw err;
- if(row.length == 0) return;
- if(row.length > 0 && !inventoryTimer.hasOwnProperty(row[0].steamid))
- {
- getInv(row[0].steamid, socket, m.type);
- inventoryTimer[row[0].steamid] = {
- 'timer': time()+45
- };
- }
- else if(row.length > 0 && inventoryTimer.hasOwnProperty(row[0].steamid))
- {
- if(inventoryUser.hasOwnProperty(row[0].steamid) && inventoryTimer[row[0].steamid]['timer']-time() > 0)
- {
- var id = inventoryUser[row[0].steamid]['id'].split(',');
- var name = inventoryUser[row[0].steamid]['name'].split(',');
- var price = inventoryUser[row[0].steamid]['price'].split(',');
- var img = inventoryUser[row[0].steamid]['img'].split(',');
- var color = inventoryUser[row[0].steamid]['color'].split(',');
- for(var i = 0; i < id.length; i++)
- {
- socket.emit('message', {
- type: m.type,
- id: id[i],
- name: name[i],
- price: price[i],
- img: img[i],
- color: color[i]
- });
- }
- socket.emit('message', {
- type: 'msg',
- tip: m.name,
- seconds: inventoryTimer[row[0].steamid]['timer']-time()
- });
- }
- else if(inventoryTimer[row[0].steamid]['timer']-time() <= 0)
- {
- inventoryTimer[row[0].steamid] = {
- 'timer': time()+45
- };
- getInv(row[0].steamid, socket, m.type);
- socket.emit('message', {
- type: 'msg',
- tip: m.name,
- seconds: inventoryTimer[row[0].steamid]['timer']-time()
- });
- }
- }
- });
- }
- });
- socket.on('sendOffer', function(m) {
- if(m.hash)
- {
- pool.query('SELECT steamid FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- pool.query('SELECT code,action FROM trades WHERE tid = ' + pool.escape(m.offer_id), function(err, row2) {
- if(err) throw err;
- if(row.length == 0) return;
- ET.ITrade.GetOffer({offer_id: m.offer_id}, (err, body) => {
- if(err != null || body.status != 1) {
- logger.error(body);
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Try again later, refresh the page!'
- });
- return;
- }
- var offer = body.response.offer;
- var items = offer.sender.items;
- if(offer.state == 3) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You already accepted this offer.'
- });
- } else if(offer.state == 1) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You dont accept this offer, cancelling!'
- });
- ET.ITrade.CancelOffer({offer_id: offer.id});
- } else {
- var Items = [];
- items.forEach(function(item) {
- Items.push(item.id);
- });
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerProcessing'
- });
- setTimeout(function() {
- ET.ITrade.SendOfferToSteamId({steam_id: row[0].steamid, items_to_receive: Items.join(','), message: "Code: "+m.offer_code}, (err, body1) => {
- if(err != null || body1.status != 1) {
- logger.error(body1);
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Try again later, refresh the page!'
- });
- return;
- }
- var offer1 = body1.response.offer;
- pool.query('UPDATE trades SET status = ' + pool.escape('PendingAccept') + ', tid = ' + pool.escape(offer1.id) + ' WHERE tid = ' + pool.escape(offer.id));
- var depositPlace = [];
- depositPlace.push({
- offer: offer1,
- name: row2[0].action
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(offer1.id);
- }, 92 * 1000);
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer1.id,
- code: row2[0].code
- });
- });
- }, 1000);
- }
- });
- });
- });
- }
- });
- socket.on('wantShop', function(m) {
- if(m.hash)
- {
- pool.query('SELECT steamid FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- if(err) throw err;
- if(row.length == 0) return;
- var ids = [];
- var names = [];
- var prices = [];
- var imgs = [];
- var colors = [];
- pool.query('SELECT * FROM `shop` ORDER BY `price` DESC', function(err, result) {
- result.forEach(function(item) {
- if(item['status'] == 0){
- ids.push(item['classid']);
- names.push(item['name']);
- prices.push(item['price']);
- imgs.push(item['img']);
- colors.push(item['color']);
- }
- });
- socket.emit('message', {
- type: m.type,
- id: ids,
- name: names,
- price: prices,
- img: imgs,
- color: colors
- });
- });
- });
- }
- });
- //JACKPOT DEPOSIT BUTTON
- socket.on('jDeposit', function(m) {
- if(antiFlood[socket]+2 >= time()) {
- timesFlooding[socket] += 1;
- if(timesFlooding[socket] == 3)
- {
- delete timesFlooding[socket];
- socket.disconnect();
- return;
- }
- return;
- } else {
- antiFlood[socket] = time();
- }
- if(m.hash)
- {
- pool.query('SELECT steamid,tradelink,rank FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- if(err) throw err;
- if(row.length == 0)
- {
- logger.debug('Error [1]');
- return;
- }
- pool.query('SELECT COUNT(`id`) AS tTrades FROM trades WHERE user = ' + pool.escape(row[0].steamid) + ' AND status = ' + pool.escape('PendingAccept'), function(er, ro) {
- if(er) throw er;
- if(ro.length == 0) return;
- if(ro[0].tTrades != 0)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You isset an active tradeoffer.'
- });
- return;
- }
- if(!row[0].tradelink.includes('://') || !row[0].tradelink.includes('trade.opskins.com/t/'))
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Tradelink wrong.'
- });
- return;
- }
- var joinedJackpot = 0;
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, result, fields) {
- result.forEach(function(value) {
- if(value.user == row[0].steamid)
- {
- joinedJackpot++;
- }
- });
- var fakeStart = 0;
- if(result.length == 1) {
- if(result[0]['user'] == row[0].steamid) {
- fakeStart = 1;
- }
- }
- if(joinedJackpot >= 2) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Max bets allowed for every game: (2)'
- });
- return;
- }
- if(fakeStart == 1) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Wait other player to make the second bet!'
- });
- return;
- }
- if(jackpotRound == -1)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: The game is not open.'
- });
- return;
- }
- if(jackpotState == 'NONE' || jackpotState == 'PICKING_WINNER')
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: The game did not start.'
- });
- return;
- }
- var Items = m.assets.split(',');
- var cod = makeCode();
- var sendoffer = 0;
- ET.ITrade.GetUserInventoryFromSteamId({steam_id: row[0].steamid, sort: 6, per_page: 500, page: 1}, (err, body1) => {
- if(err != null || body1.status != 1) {
- logger.error(body1);
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Try again later, refresh the page!'
- });
- return;
- }
- var pItems = [];
- var fixing = 0;
- var sendoffer = 0;
- var myitems = body1.response.items;
- myitems.forEach(function(pitm) {
- pItems.push(pitm.id);
- });
- Items.forEach(function(itm) {
- fixing++;
- for(var i in pItems) {
- if(pItems[i] == itm) {
- sendoffer++;
- pItems[i].remove;
- break;
- }
- }
- });
- if(fixing > sendoffer || fixing < sendoffer) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: One of selected items dont exist!'
- });
- return;
- } else {
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerProcessing'
- });
- setTimeout(function() {
- ET.ITrade.SendOfferToSteamId({steam_id: row[0].steamid, items_to_receive: Items.join(','), message: "Code: "+cod}, (err, body) => {
- if(err != null || body.status != 1) {
- logger.error(body);
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Try again later, refresh the page!'
- });
- return;
- } else {
- var offer = body.response.offer;
- var useritems = offer.recipient.items;
- logger.debug('Tradeoffer #' + offer.id + ' (' + offer.state + ') with code : ' + cod + ' has been created by steamid: ' + row[0].steamid);
- pool.query('INSERT INTO trades SET user = ' + pool.escape(row[0].steamid) + ', tid = ' + pool.escape(offer.id) + ', status = ' + pool.escape('PendingAccept') + ', action = ' + pool.escape('Jackpot') + ', code = ' + pool.escape(cod));
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer.id,
- code: cod
- });
- var depositPlace = [];
- depositPlace.push({
- offer: body.response.offer,
- name: 'Jackpot'
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(offer.id);
- }, 92000);
- }
- });
- }, 1000);
- }
- });
- });
- });
- });
- }
- });
- //JACKPOT DEPOSIT BUTTON
- socket.on('shopDeposit', function(m) {
- if(antiFlood[socket]+2 >= time()) {
- timesFlooding[socket] += 1;
- if(timesFlooding[socket] == 3)
- {
- delete timesFlooding[socket];
- socket.disconnect();
- return;
- }
- return;
- } else {
- antiFlood[socket] = time();
- }
- if(m.hash)
- {
- pool.query('SELECT steamid,tradelink,rank,money,name FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- if(err) throw err;
- if(row.length == 0)
- {
- logger.debug('Error [1]');
- return;
- }
- var name = row[0].name;
- name = name.toLowerCase();
- if(name.indexOf('vgopunk.com') == -1) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'ERROR: Place VGOPunk.com in nickname to make withdraw!'
- });
- return;
- }
- pool.query('SELECT COUNT(`id`) AS tTrades FROM trades WHERE user = ' + pool.escape(row[0].steamid) + ' AND status = ' + pool.escape('PendingAccept'), function(er, ro) {
- if(er) throw er;
- if(ro.length == 0) return;
- if(ro[0].tTrades != 0)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You isset an active tradeoffer.'
- });
- return;
- }
- if(!row[0].tradelink.includes('://') || !row[0].tradelink.includes('trade.opskins.com/t/'))
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Tradelink wrong.'
- });
- return;
- }
- var Items = m.assets;
- var cod = makeCode();
- var sendoffer = 0;
- var offer_items = 0;
- var invaliditem = 0;
- var antibug = 0;
- pool.query('SELECT * FROM `shop` ORDER BY `price` DESC', function(err, results) {
- ET.IUser.GetInventory({sort: 6, per_page: 500, page: 1}, (err, body1) => {
- if(err != null || body1.status != 1) {
- for(var newitem = 0; newitem < Items.length; newitem++) {
- pool.query('UPDATE shop SET status = 0 WHERE classid = ' + pool.escape(Items[newitem]));
- }
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Refresh the page and try again later!'
- });
- return;
- }
- for(var newitem = 0; newitem < Items.length; newitem++) {
- pool.query('UPDATE shop SET status = 1 WHERE classid = ' + pool.escape(Items[newitem]));
- }
- var TotalShopPrice = 0;
- var myitems = body1.response.items;
- var pItems = [];
- var fixed = 0;
- myitems.forEach(function(item) {
- pItems.push(item.id);
- Items.forEach(function(itm) {
- if(itm == item.id) {
- TotalShopPrice += item.suggested_price;
- return;
- }
- });
- });
- Items.forEach(function(itm) {
- fixed++;
- for(var i in pItems){
- if(itm == pItems[i]){
- sendoffer++;
- break;
- }
- }
- });
- if(Math.round(row[0].money) < Math.round(TotalShopPrice) || Math.round(row[0].money) <= 1) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Sorry, you dont have money to buy this!'
- });
- for(var newitem = 0; newitem < Items.length; newitem++) {
- pool.query('UPDATE shop SET status = 0 WHERE classid = ' + pool.escape(Items[newitem]));
- }
- return;
- } else if(fixed > sendoffer || fixed < sendoffer) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: One of selected items dont exist!'
- });
- for(var newitem = 0; newitem < Items.length; newitem++) {
- pool.query('UPDATE shop SET status = 0 WHERE classid = ' + pool.escape(Items[newitem]));
- }
- } else {
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerProcessing'
- });
- setTimeout(function() {
- if(Math.round(row[0].money) < Math.round(TotalShopPrice) || Math.round(row[0].money) <= 1) return;
- ET.ITrade.SendOfferToSteamId({steam_id: row[0].steamid, items_to_send: Items.join(','), message: "Code: "+cod}, (err, body) => {
- if(err != null || body.status != 1) {
- for(var newitem = 0; newitem < Items.length; newitem++) {
- pool.query('UPDATE shop SET status = 0 WHERE classid = ' + pool.escape(Items[newitem]));
- }
- } else {
- pool.query('UPDATE users SET money = money - ' + pool.escape(TotalShopPrice) + ' WHERE steamid = ' + pool.escape(row[0].steamid));
- var offer = body.response.offer;
- for(var x = 0; x < Items.length; x++) {
- pool.query('UPDATE shop SET status = 3, classid = 666 WHERE classid = ' + pool.escape(Items[x]));
- }
- socket.emit('message', {
- type: 'updateBalance',
- balance: row[0].money - TotalShopPrice + '.00'
- });
- logger.debug('Tradeoffer #' + offer.id + ' (' + offer.state + ') with code : ' + cod + ' has been created by steamid: ' + row[0].steamid);
- pool.query('INSERT INTO trades SET user = ' + pool.escape(row[0].steamid) + ', tid = ' + pool.escape(offer.id) + ', status = ' + pool.escape('PendingAccept') + ', action = ' + pool.escape('shopPrize') + ', code = ' + pool.escape(cod));
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer.id,
- code: cod
- });
- var depositPlace = [];
- depositPlace.push({
- offer: body.response.offer,
- name: 'ShopPrize'
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(offer.id);
- }, 120*1000);
- }
- });
- },1000);
- }
- });
- });
- });
- });
- }
- });
- socket.on('newGame', function(m) {
- if(antiFlood[socket]+2 >= time()) {
- timesFlooding[socket] += 1;
- if(timesFlooding[socket] == 3)
- {
- delete timesFlooding[socket];
- socket.disconnect();
- return;
- }
- return;
- } else {
- antiFlood[socket] = time();
- }
- if(m.hash)
- {
- pool.query('SELECT steamid,tradelink FROM users WHERE hash = ' + pool.escape(m.hash), function(err, row) {
- if(err) throw err;
- if(row.length == 0)
- {
- logger.debug('Error [1]');
- return;
- }
- pool.query('SELECT COUNT(`id`) AS tTrades FROM trades WHERE user = ' + pool.escape(row[0].steamid) + ' AND status = ' + pool.escape('PendingAccept'), function(er, ro) {
- if(er) throw er;
- if(ro.length == 0) return;
- if(ro[0].tTrades != 0)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You isset an active tradeoffer.'
- });
- return;
- }
- if(!row[0].tradelink.includes('://') || !row[0].tradelink.includes('trade.opskins.com/t/'))
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Tradelink wrong.'
- });
- return;
- }
- var Items = m.assets.split(',');
- if(Items.length == 0)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You need to select items.'
- });
- return;
- }
- ET.ITrade.GetUserInventoryFromSteamId({steam_id: row[0].steamid, sort: 6, per_page: 500, page: 1}, (err, body6) => {
- if(err != null || body6.status != 1) {
- console.log('Error: '+err);
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'ERROR: Error on send offer, try again!'
- });
- return;
- }
- var moreitems = 0;
- var fixing = 0;
- var pItems = [];
- var myitems = body6.response.items;
- myitems.forEach(function(pitm) {
- pItems.push(pitm.id);
- });
- Items.forEach(function(itm) {
- fixing++;
- for(var i in pItems) {
- if(pItems[i] == itm) {
- moreitems++;
- pItems[i].remove;
- break;
- }
- }
- });
- if(fixing > moreitems || fixing < moreitems) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'ERROR: One of selected items dont available!'
- });
- return;
- } else {
- var cod = makeCode();
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerProcessing'
- });
- setTimeout(function() {
- ET.ITrade.SendOfferToSteamId({steam_id: row[0].steamid, items_to_receive: Items.join(','), message: "Code: "+cod}, (err, body) => {
- if(err != null || body.status != 1) {
- console.log('Error: '+err);
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'ERROR: Error on send offer, try again!'
- });
- return;
- } else {
- logger.debug('Tradeoffer #' + body.response.offer.id + ' (' + body.response.offer.status + ') with code : ' + cod + ' has been created by steamid: ' + row[0].steamid);
- pool.query('INSERT INTO trades SET user = ' + pool.escape(row[0].steamid) + ', tid = ' + pool.escape(body.response.offer.id) + ', status = ' + pool.escape('PendingAccept') + ', action = ' + pool.escape('CFCreate') + ', code = ' + pool.escape(cod));
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: body.response.offer.id,
- code: cod
- });
- var depositPlace = [];
- depositPlace.push({
- offer: body.response.offer,
- name: 'CFCreate'
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(body.response.offer.id);
- }, 92000);
- }
- });
- }, 1000);
- }
- });
- });
- });
- }
- });
- //CHAT FUNCTIONS
- socket.on('nMsg', function(m) {
- var mesaj = m.message;
- var utilizator = m.user;
- var hide = m.hide;
- var address = socket.client.request.headers['x-forwarded-for'] || socket.request.connection.remoteAddress;
- pool.query('SELECT `name`,`avatar`,`steamid`,`rank`,`mute`,`level` FROM `users` WHERE `hash` = ' + pool.escape(utilizator), function(err, res) {
- if (err) throw err;
- var row = res;
- if (!res[0]) return err;
- if (mesaj.length > 128 || mesaj.length < 2 && res[0].rank != 69 && res[0].rank != 64) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Minimum length 2 and maximum length 128 to send a message.'
- });
- return;
- } else {
- if (antiSpamChat[res[0].steamid] + 2 >= time() && res[0].rank != 69 && res[0].rank != 64) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: You need to wait before sending another message.'
- });
- return;
- } else {
- antiSpamChat[res[0].steamid] = time();
- }
- var caca = null;
- if (caca = /^\/clear/.exec(mesaj)) {
- if (row[0].rank == 69 || row[0].rank == 92 || row[0].rank == 64) {
- io.sockets.emit('message', {
- type: 'addMessage',
- tip: 'clear',
- name: 'Alert',
- rank: '0',
- avatar: '/favicon.ico',
- hide: true,
- msg: 'Chat was cleared by Admin ' + row[0].name + '.'
- });
- chatMessages = [];
- logger.trace('Chat: Cleared by Admin ' + row[0].name + '.');
- }
- } else if (caca = /^\/mute ([0-9]*) ([0-9]*)/.exec(mesaj)) {
- if (row[0].rank == 69 || row[0].rank == 92 || row[0].rank == 64) {
- var t = time();
- pool.query('UPDATE `users` SET `mute` = ' + pool.escape(parseInt(t) + parseInt(caca[2])) + ' WHERE `steamid` = ' + pool.escape(caca[1]), function(err2, row2) {
- if (err2) throw err2;
- if (row2.affectedRows == 0) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Steamid not found in database.'
- });
- logger.trace('Mute: Steamid not found in database (' + caca[1] + ').');
- return;
- }
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'You have muted user for ' + caca[2] + ' seconds.'
- });
- logger.trace('Mute: Steamid ' + caca[1] + ' has been muted for ' + caca[2] + ' seconds by ' + row[0].name + ' (' + row[0].steamid + ').');
- });
- }
- } else if (caca = /^\/pickwinner ([0-9]*)/.exec(mesaj)) {
- if (row[0].rank == 69) {
- pool.query('SELECT id, name FROM users WHERE steamid = ' + pool.escape(caca[1]), function(arr, bbb) {
- if(arr) throw arr;
- if(bbb.length == 0)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'The user you provided did not exists in the database.'
- });
- }
- else
- {
- pickWinner = true;
- pickSteamID = caca[1];
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'The next winner of the jackpot will be: ' + bbb[0].name + ' (steanid: ' + caca[1] + ')'
- });
- }
- });
- }
- } else {
- if (row[0].mute > time() && row[0].mute != 0) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'You are muted (seconds remaining: ' + parseInt(row[0].mute - time()) + ').'
- });
- logger.trace('Mute: ' + row[0].name + ' (' + row[0].steamid + ') tried to speak (' + mesaj + ') while muted (seconds remaining: ' + parseInt(row[0].mute - time()) + ').');
- return;
- }
- if (chatMessages.length > 20) {
- chatMessages.shift();
- }
- chatMessages.push({
- name: res[0].name,
- avatar: res[0].avatar,
- steamid: res[0].steamid,
- rank: res[0].rank,
- hide: hide,
- level: res[0].level,
- message: mesaj
- });
- io.sockets.emit('message', {
- type: 'addMessage',
- msg: mesaj,
- avatar: res[0].avatar,
- steamid: res[0].steamid,
- rank: res[0].rank,
- hide: hide,
- level: res[0].level,
- name: res[0].name
- });
- logger.trace('Chat: Message from ' + row[0].name + ' (SID: ' + row[0].steamid + ', IP: ' + address + ', hide: ' + hide + ') --> ' + mesaj);
- }
- }
- });
- });
- socket.on('disconnect', function(m) {
- var address = socket.client.request.headers['x-forwarded-for'] || socket.request.connection.remoteAddress;
- if(usersOnline[address])
- {
- delete usersOnline[address];
- }
- io.sockets.emit('message', {
- type: 'connections',
- total: Object.keys(usersOnline).length
- });
- //console.log('a user disconnected.');
- });
- socket.on('setTradeUrl', function(m) {
- pool.query('UPDATE users SET tradelink = ' + pool.escape(m.tlink) + ' WHERE hash = ' + pool.escape(m.user));
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Trade link set up successfully!'
- });
- });
- //CHAT FUNCTIONS
- socket.on('watchGame', function(m) {
- pool.query('SELECT * FROM games WHERE id = ' + pool.escape(m.gameid), function(error, results) {
- if(error) throw error;
- socket.emit('message', {
- type: 'watchCF',
- id: results[0].id,
- cname: results[0].cname,
- cavatar: results[0].cavatar,
- cskinsurl: results[0].cskinsurl,
- cskinsnames: results[0].cskinsnames,
- cskinsprices: results[0].cskinsprices,
- cskins: results[0].cskins,
- ccolors: results[0].ccolors,
- ctp: results[0].ctp,
- pname: results[0].pname,
- pavatar: results[0].pavatar,
- pskinsurl: results[0].pskinsurl,
- pskinsnames: results[0].pskinsnames,
- pcolors: results[0].pcolors,
- pskinsprices: results[0].pskinsprices,
- pskins: results[0].pskins,
- ptp: results[0].ptp,
- hash: results[0].hash,
- secret: results[0].secret,
- winner: results[0].winner,
- timer: timerGame[results[0].id]-time(),
- timer11: results[0].timer11,
- ttimer11: timer11Game[results[0].id]-time(),
- gameNumber: m.gameid
- });
- });
- });
- socket.on('joingame', function(m) {
- if(antiFlood[socket]+2 >= time()) {
- timesFlooding[socket] += 1;
- if(timesFlooding[socket] == 3)
- {
- delete timesFlooding[socket];
- socket.disconnect();
- return;
- }
- return;
- } else {
- antiFlood[socket] = time();
- }
- if(!m.game)
- {
- return;
- }
- var assetids = m.assetids.split(',');
- var gameID = m.game;
- var user_hash = m.hash;
- pool.query('SELECT id,trade_token,csteamid,ctp FROM games WHERE id = ' + pool.escape(gameID), function(error, results) {
- if(error) throw errorl
- if(results[0].trade_token)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: Someone already joined in this game!'
- });
- return;
- }
- if(results[0].id)
- {
- pool.query('SELECT name,steamid,avatar,tradelink,rank FROM users WHERE hash = ' + pool.escape(user_hash), function(error1, results1) {
- if(error1) throw error1;
- pool.query('SELECT COUNT(`id`) AS tTrades FROM trades WHERE user = ' + pool.escape(results1[0].steamid) + ' AND status = ' + pool.escape('PendingAccept'), function(ca, ma) {
- if(ca) throw ca;
- if(ma.length == 0) return;
- if(ma[0].tTrades != 0)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'You isset an active tradeoffer.'
- });
- return;
- }
- if(!results[0] || !results1[0])
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: Unexpected error, contact an administrator!'
- });
- return;
- }
- if(results[0].csteamid == results1[0].steamid && results1[0].rank != 69 && results1[0].rank != 64)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: You cannot join your own game!'
- });
- return;
- }
- if(assetids.length == 0 || totalItems > 12)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: Min. items per trade: 1 and max. items per trade: 12!'
- });
- return;
- }
- if(results1[0].name || results1[0].steamid || results1[0].avatar)
- {
- var totalAmount = 0;
- var totalItems = 0;
- //ITEMS INFO
- var skinImages = [];
- var skinNames = [];
- var skinPrices = [];
- var skinColors = [];
- //ITEMS INFO
- var minPriceDet = 0;
- if(!results1[0].tradelink.includes('://') || !results1[0].tradelink.includes('trade.opskins.com/t/'))
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Error: Tradelink wrong.'
- });
- return;
- }
- var toContinue = 0;
- var itemsLength = [];
- var cod = makeCode();
- ET.ITrade.GetUserInventoryFromSteamId({steam_id: results1[0].steamid, sort: 6, per_page: 500, page: 1}, (err, body6) => {
- ET.IItem.GetItemsById({item_id: assetids.join(',')}, (err, body2) => {
- var itms = body2.response.items;
- var allprices = 0;
- itms.forEach(function(itm) {
- allprices += itm.suggested_price / 100;
- });
- if(err != null || body6.status != 1) {
- logger.error(body6);
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'ERROR: Error on send offer, try again!'
- });
- return;
- }
- var moreitems = 0;
- var fixing = 0;
- var pItems = [];
- var pitems = body6.response.items;
- pitems.forEach(function(pitm) {
- pItems.push(pitm.id);
- });
- assetids.forEach(function(itm) {
- fixing++;
- for(var i in pItems) {
- if(pItems[i] == itm) {
- moreitems++;
- pItems[i].remove;
- break;
- }
- }
- });
- if(fixing > moreitems || fixing < moreitems) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'ERROR: One of selected items dont available!'
- });
- return;
- } else {
- pool.query('SELECT `ctp` FROM games WHERE id = ' + pool.escape(gameID), function(eroare, resultate) {
- if(eroare) throw eroare;
- if(resultate[0].ctp)
- {
- var calculare = 10/100*resultate[0].ctp;
- var Gap01 = resultate[0].ctp - calculare;
- var Gap02 = resultate[0].ctp + calculare;
- if(allprices <= Gap01 || allprices >= Gap02)
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: Minimum amount required: $' + Gap01 + ' or total amount required: $' + Gap02
- });
- createnow = 0;
- return;
- }
- }
- else
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: Invalid game!'
- });
- createnow = 0;
- return;
- }
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerProcessing'
- });
- setTimeout(function() {
- ET.ITrade.SendOfferToSteamId({steam_id: results1[0].steamid, items_to_receive: assetids.join(','), message: "Code: "+cod}, (err, body) => {
- if(err != null || body.status != 1) {
- logger.error(body);
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'ERROR: Error on send offer, try again!'
- });
- return;
- } else {
- var offer = body.response.offer;
- var useritems = offer.recipient.items;
- useritems.forEach( function(item){
- skinImages.push(item.image['300px']);
- skinNames.push(item.name);
- skinColors.push(item.color);
- skinPrices.push(item.suggested_price / 100);
- });
- pool.query('UPDATE games SET scode = ' + pool.escape(cod) + ' WHERE id = ' + pool.escape(gameID));
- var Skinimages = skinImages.join(',');
- var Skinnames = skinNames.join(',');
- var Skinprices = skinPrices.join(',');
- gamesPending[offer.id] = results1[0].steamid;
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer.id,
- code: cod
- });
- pool.query('INSERT INTO trades SET user = ' + pool.escape(results1[0].steamid) + ', tid = ' + pool.escape(offer.id) + ', status = ' + pool.escape('PendingAccept') + ', action = ' + pool.escape('CFJoin') + ', code = ' + pool.escape(cod));
- pool.query('SELECT hash FROM games WHERE id = ' + pool.escape(gameID), function(err1, res1) {
- if(err1) throw err1;
- console.log('Joined game #' + gameID + ', player steamid: ' + results1[0].steamid + ' (' + results1[0].name + ')');
- pool.query('UPDATE `games` SET `psteamid` = ' + pool.escape(results1[0].steamid) + ', `pname` = ' + pool.escape(results1[0].name) + ', `pavatar` = ' + pool.escape(results1[0].avatar) + ', `trade_token` = ' + pool.escape(offer.id) + ', `pskinsurl` = ' + pool.escape(Skinimages) + ', `pskinsnames` = ' + pool.escape(Skinnames) + ', `pskinsprices` = ' + pool.escape(Skinprices) + ', `pskins` = ' + pool.escape(assetids.length) + ', `pcolors` = ' + pool.escape(skinColors.join(',')) + ', `ptp` = ' + pool.escape(allprices) + ', `trade_token` = ' + pool.escape(offer.id) + ' WHERE `id` = ' + pool.escape(gameID));
- loadAllGames();
- sendGames(gameID);
- });
- var depositPlace = [];
- depositPlace.push({
- offer: body.response.offer,
- name: 'CFJoin'
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(offer.id);
- }, 92000);
- }
- });
- }, 1000);
- });
- }
- });
- });
- }
- });
- });
- }
- else
- {
- socket.emit('message', {
- type: 'msg',
- tip: 'error',
- msg: 'Error: This game does not exists!'
- });
- }
- });
- });
- });
- function hideGame(gameID)
- {
- pool.query('UPDATE games SET `ended` = 1 WHERE `id` = ' + pool.escape(gameID));
- loadAllGames();
- setTimeout(function() {
- io.sockets.emit('message', {
- type: 'removeGame',
- id: gameID
- });
- }, 1000);
- }
- /*
- Offer handling
- */
- function isInArray(value, array) {
- return array.indexOf(value) > -1;
- }
- function pickJackpotWinner()
- {
- var random = new RandomOrg({ apiKey: '247cad8b-a4ef-4559-bdb9-c6270bf48d36' });
- random.generateIntegers({ min: 0, max: jackpotTickets-1, n: 1 })
- .then(function(result) {
- var winTicket = result.random.data;
- if(pickWinner == true) {
- for(var x = 0; x < jackpotTotalTickets.length; x++) {
- if(jackpotTotalTickets[x]['user'] == pickSteamID) {
- winTicket = x;
- break;
- }
- }
- }
- var winTicket1 = Math.round(winTicket)+1;
- var secondsRotate = 14000;
- var winSteamid;
- var avatarWin;
- var nameWin;
- var isAdded = [];
- var winnerInfo = [];
- var ticketsMatt = [];
- winSteamid = jackpotTotalTickets[winTicket]['user'];
- pool.query('SELECT name, avatar FROM users WHERE steamid = ' + pool.escape(winSteamid), function(e, r) {
- if(e) {logger.error(e); return;}
- if(r.length == 0) {logger.error('SELECT ticketname.'); return;}
- avatarWin = r[0].avatar;
- nameWin = r[0].name;
- winnerInfo.push({
- "avatar": avatarWin,
- "name": nameWin,
- "steamid": winSteamid,
- "chance": parseFloat(100 - ((totalJackpotValue-usersPrices[winSteamid])/totalJackpotValue)*100).toFixed(2),
- "pot": totalJackpotValue,
- "secret": jackpotSecret
- });
- var users_avatars_pot = [];
- setTimeout(function() {
- pool.query('UPDATE jgames SET pot = ' + pool.escape(parseFloat(totalJackpotValue).toFixed(2)) + ', items = ' + pool.escape(totalJackpotItems) + ', tickets = ' + pool.escape(jackpotTickets) + ', winnerTicket = ' + pool.escape(winTicket1) + ', ended = 1 WHERE id = ' + pool.escape(jackpotRound));
- }, 14000);
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, results, fields) {
- var users = [];
- var items = [];
- results.forEach(function(result) {
- var chance = 100 - ((totalJackpotValue - result['value'])/totalJackpotValue)*100;
- var bet_items = result['assetids'].split(',');
- for(var y = 1; y < Math.round(chance); y++) {
- getUserDetail(result['user'], 'Avatar', function(data) {
- users.push({
- avatar: data,
- chance: chance,
- steam_id: result['user']
- });
- });
- }
- bet_items.forEach(function(item) {
- items.push(item);
- });
- });
- ET.IItem.GetItemsById({item_id: items.join(',')}, (err, body2) => {
- if(err != null || body2.status != 1) {
- logger.error(body2);
- } else {
- var itms = body2.response.items;
- var winner_items = [];
- itms.forEach(function(itm) {
- winner_items.push({
- name: itm.name,
- price: itm.suggested_price,
- image: itm.image['300px'],
- color: itm.color
- });
- });
- setTimeout(function() {
- pool.query("SELECT hash FROM jgames WHERE id = " + jackpotID + "", function (err, result5, fields) {
- io.sockets.emit('message', {
- type: 'spinJackpot',
- seconds: secondsRotate,
- users: users,
- winner: winnerInfo[0],
- items: winner_items,
- hhash: result5[0].hash
- });
- });
- setTimeout(function() {
- pool.query('UPDATE jgames SET winnerItems = ' + pool.escape(JSON.stringify(winner_items)) + ', winnerInfo = ' + pool.escape(JSON.stringify(winnerInfo[0])) + ' WHERE id = ' + jackpotID);
- pool.query("SELECT * FROM jbets WHERE jid = " + jackpotID + "", function (err, result1, fields) {
- var itemsToSend = [];
- result1.forEach(function(result2){
- var new_items = result2.assetids.split(',');
- for(var i in new_items) {
- itemsToSend.push(new_items[i]);
- }
- });
- sendJackpotItems(winSteamid, itemsToSend, nameWin);
- });
- }, secondsRotate+1000);
- setTimeout(function() {
- nextJackpotRound();
- }, parseInt(secondsRotate+5000));
- }, 1000);
- }
- });
- });
- });
- });
- }
- function sendJackpotItems(steamid, items, name)
- {
- var cod = makeCode();
- ET.IUser.GetInventory({sort: 6, per_page: 500, page: 1}, (err, body) => {
- var itemsDB = [];
- var Items = [];
- if(err != null || body.status != 1) {
- logger.error(body);
- } else {
- var myitems = body.response.items;
- var ItemsRake = [];
- for(var i in items){
- myitems.forEach(function(item) {
- if(items[i] == item.id) {
- Items.push({
- price: item.suggested_price / 100,
- id: item.id
- });
- return;
- }
- });
- }
- var comission = jackpotPRake/100*(totalJackpotValue - (usersPrices[steamid]/2));
- for(var i in Items)
- {
- if(Items[i]['price'] <= parseFloat(comission).toFixed(2))
- {
- comission -= Items[i]['price'];
- ItemsRake.push(Items[i]['id']);
- Items[i].remove = 1;
- }
- }
- for(var i in Items)
- {
- if(Items[i].remove != 1)
- {
- itemsDB.push(Items[i]['id']);
- }
- }
- setTimeout(function() {
- ET.ITrade.SendOfferToSteamId({steam_id: steamid, items_to_send: itemsDB.join(','), message: 'Your winnings from game #' + jackpotRound + '. Reference code: ' + cod}, (err, body1) => {
- if(err != null || body1.status != 1) {
- pool.query('INSERT INTO trades SET user = ' + pool.escape(steamid) + ', tid = ' + pool.escape(offer.id) + ', status = ' + pool.escape('Cancelled') + ', action = ' + pool.escape('Winning') + ', code = ' + pool.escape(cod) + ', items = ' + pool.escape(itemsDB.join(',')));
- logger.error(body1);
- } else {
- var offer = body1.response.offer;
- console.log('[Winner-jackpot: ' + steamid + ' (' + name + ') ] Offer #' + offer.id);
- pool.query('INSERT INTO trades SET user = ' + pool.escape(steamid) + ', tid = ' + pool.escape(offer.id) + ', status = ' + pool.escape('PendingAccept') + ', action = ' + pool.escape('Winning') + ', code = ' + pool.escape(cod) + ', items = ' + pool.escape(itemsDB.join(',')));
- var depositPlace = [];
- depositPlace.push({
- offer: offer,
- name: 'Winning'
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(offer.id);
- }, 120 * 1000);
- }
- });
- },1000);
- if(ItemsRake.length > 0) {
- ET.ITrade.SendOfferToSteamId({steam_id: Ownerid, items_to_send: ItemsRake.join(','), message: 'Your comission from game #' + jackpotRound + '. Reference code: ' + cod});
- }
- }
- });
- }
- function shuffle(array) {
- var currentIndex = array.length, temporaryValue, randomIndex;
- while (0 !== currentIndex) {
- randomIndex = Math.floor(Math.random() * currentIndex);
- currentIndex -= 1;
- temporaryValue = array[currentIndex];
- array[currentIndex] = array[randomIndex];
- array[randomIndex] = temporaryValue;
- }
- return array;
- }
- function sendItemsTrade(offer_check, link, winner)
- {
- pool.query('SELECT id,cskinsnames,pskinsnames,winner,csteamid,psteamid,cname,pname,cskinsprices,pskinsprices,ctp,ptp,cassetids,passetids FROM games WHERE trade_token = ' + pool.escape(offer_check.id), function(err, res) {
- if(err) throw err;
- setTimeout(function() {
- hideGame(res[0].id);
- }, 120 * 1000);
- var Items = [];
- var Skins1Names = res[0].cskinsnames.split(',');
- var Skins2Names = res[0].pskinsnames.split(',');
- var TotalSkinsNames = Skins1Names.concat(Skins2Names);
- var Skins1 = res[0].cassetids.split(',');
- var Skins2 = res[0].passetids.split(',');
- var allSkins = Skins1.concat(Skins2);
- var Prices1 = res[0].cskinsprices.split(',');
- var Prices2 = res[0].pskinsprices.split(',');
- var allPrices = Prices1.concat(Prices2);
- var partner;
- if(winner == 1)
- {
- partner = res[0].csteamid;
- }
- else if(winner == 2)
- {
- partner = res[0].psteamid;
- }
- for(var i in allSkins)
- {
- Items.push({
- assetid: allSkins[i],
- price: allPrices[i]
- });
- }
- var sendItems = [];
- var ItemsRake = [];
- var comission = percentRake/100 * (res[0].ctp + res[0].ptp);
- for(var i in Items)
- {
- if(Items[i]['price'] <= comission)
- {
- comission -= Items[i]['price'];
- ItemsRake.push(Items[i]['assetid']);
- Items[i].remove = 1;
- }
- }
- for(var i in Items)
- {
- if(Items[i].remove != 1) {
- sendItems.push(Items[i]['assetid']);
- }
- }
- var cod = makeCode();
- setTimeout(function()
- {
- ET.ITrade.SendOfferToSteamId({steam_id: partner, items_to_send: sendItems.join(','), message: 'Code: '+cod}, (err, body1) => {
- if(err != null || body1.status != 1)
- {
- logger.error(body1);
- return;
- }
- else
- {
- var offer = body1.response.offer;
- var WSteamid;
- var WName;
- pool.query('UPDATE games SET sentItems = 1, wcode = ' + pool.escape(cod) + ' WHERE trade_token = ' + pool.escape(offer.id));
- if(winner == 1)
- {
- WSteamid = res[0].csteamid;
- WName = res[0].cname;
- }
- else if(winner == 2)
- {
- WSteamid = res[0].psteamid;
- WName = res[0].pname;
- }
- console.log('[Winner: ' + WSteamid + ' (' + WName + ') ] Offer #' + offer.id + " " + offer.state);
- pool.query('INSERT INTO trades SET user = ' + pool.escape(WSteamid) + ', tid = ' + pool.escape(offer.id) + ', status = ' + pool.escape('PendingAccept') + ', action = ' + pool.escape('Winning') + ', code = ' + pool.escape(cod) + ', items = ' + pool.escape(sendItems.join(',')));
- var depositPlace = [];
- depositPlace.push({
- offer: offer,
- name: 'Winning'
- });
- redisClient.rpush(redisChannels.depositTrades, JSON.stringify(depositPlace));
- setTimeout(function() {
- cancelOffer(offer.id);
- }, 120 * 1000);
- if(gamesPending.hasOwnProperty(offer.id))
- {
- delete gamesPending[offer.id];
- }
- }
- });
- }, 1000);
- if(ItemsRake.length > 0) {
- ET.ITrade.SendOfferToSteamId({steam_id: Ownerid, items_to_send: ItemsRake.join(','), message: 'Coinflip Comission'}, (err, body5) => {
- if(body5.status != 1) {
- console.log('ERROR on Send Offer');
- logger.error(body5);
- }
- });
- }
- loadAllGames();
- sendGames(res[0].id);
- setTimeout(function() {
- loadStatistics();
- }, 5000);
- });
- }
- //Refresh polldata.json
- function time()
- {
- return parseInt(new Date().getTime()/1000);
- }
- function addHistory(socket)
- {
- chatMessages.forEach(function(itm) {
- socket.emit('message', {
- type: 'addMessage',
- msg: itm.message,
- avatar: itm.avatar,
- steamid: itm.steamid,
- rank: itm.rank,
- hide: itm.hide,
- level: itm.level,
- name: itm.name
- });
- })
- }
- function makeCode() {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for(var i=0; i < 6; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- return text;
- }
- function makeHash()
- {
- var text = "";
- var possible = "abcdefghijlmnopqrstu0123456789";
- for(var i=0; i < 32; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- return text;
- }
- function makeSecret()
- {
- var text = "";
- var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for(var i=0; i < 8; i++)
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- return text;
- }
- function getProxy()
- {
- return "https://" + proxies[random(0,proxies.length-1)];
- }
- function random(min, max) {
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }
- function getInv(user, socket, tipo)
- {
- ET.ITrade.GetUserInventoryFromSteamId({steam_id: encodeURIComponent(user), sort: 6, per_page: 500, page: 1}, (err, body) => {
- if(err != null || body.status != 1) {
- throw err;
- return;
- }
- var items = body.response.items;
- var counter = 0;
- var idss = [];
- var namess = [];
- var pricess = [];
- var imgss = [];
- var colorss = [];
- var Ids = '';
- var Names = '';
- var Prices = '';
- var Imgs = '';
- var Colors = '';
- if(!items) return;
- items.forEach(function(value) {
- var id = value.id;
- var name = value.name;
- var price = value.suggested_price / 100;
- var img = value.image['300px'];
- var color = value.color;
- if(price >= minDep) {
- idss.push(id);
- namess.push(name);
- pricess.push(price);
- imgss.push(img);
- colorss.push(color);
- }
- });
- Ids = idss.join(',');
- Names = namess.join(',');
- Prices = pricess.join(',');
- Imgs = imgss.join(',');
- Colors = colorss.join(',');
- socket.emit('message', {
- type: tipo,
- id: Ids,
- name: Names,
- price: Prices,
- img: Imgs,
- color: Colors
- });
- inventoryUser[user] = {
- id: Ids,
- name: Names,
- price: Prices,
- img: Imgs,
- color: Colors
- }
- });
- }
- function loadStatistics(socket)
- {
- var totalAmount = 0;
- var totalItems = 0;
- var activeGames = 0;
- pool.query('SELECT SUM(`ctp`) AS `totalAmount`, SUM(`cskins`) AS `totalItems`, COUNT(`id`) AS `activeGames` FROM games WHERE `winner` = -1', function(error, res) {
- if(error) throw error;
- if(res.length == 0)
- {
- totalAmount = 0;
- totalItems = 0;
- activeGames = 0;
- if(!socket)
- {
- io.sockets.emit('message', {
- type: 'loadStatistics',
- totalAmount: totalAmount,
- totalItems: totalItems,
- activeGames: activeGames
- });
- }
- else
- {
- socket.emit('message', {
- type: 'loadStatistics',
- totalAmount: totalAmount,
- totalItems: totalItems,
- activeGames: activeGames
- });
- }
- }
- if(res.length > 0)
- {
- totalAmount = res[0].totalAmount;
- totalItems = res[0].totalItems;
- activeGames = res[0].activeGames;
- if(totalAmount == null)
- {
- totalAmount = 0;
- }
- if(totalItems == null)
- {
- totalItems = 0;
- }
- if(activeGames == null)
- {
- activeGames = 0;
- }
- if(!socket)
- {
- io.sockets.emit('message', {
- type: 'loadStatistics',
- totalAmount: totalAmount,
- totalItems: totalItems,
- activeGames: activeGames
- });
- }
- else
- {
- socket.emit('message', {
- type: 'loadStatistics',
- totalAmount: totalAmount,
- totalItems: totalItems,
- activeGames: activeGames
- });
- }
- }
- });
- }
- function sendGames(gameID)
- {
- setTimeout(function() {
- for(var i in loadGames)
- {
- if(loadGames[i].id == gameID)
- {
- timerGame[loadGames[i].id] = time()+90;
- io.sockets.emit('message', {
- type: 'editGame',
- games: {
- 'id': loadGames[i].id,
- 'csteamid': loadGames[i].csteamid,
- 'cname': loadGames[i].cname,
- 'cavatar': loadGames[i].cavatar,
- 'cskinsurl': loadGames[i].cskinsurl,
- 'cskinsnames': loadGames[i].cskinsnames,
- 'cskinsprices': loadGames[i].cskinsprices,
- 'ccolors': loadGames[i].ccolors,
- 'cskins': loadGames[i].cskins,
- 'ctp': loadGames[i].ctp,
- 'psteamid': loadGames[i].psteamid,
- 'pname': loadGames[i].pname,
- 'pavatar': loadGames[i].pavatar,
- 'pskinsurl': loadGames[i].pskinsurl,
- 'pskinsnames': loadGames[i].pskinsnames,
- 'pskinsprices': loadGames[i].pskinsprices,
- 'pcolors': loadGames[i].pcolors,
- 'pskins': loadGames[i].pskins,
- 'ptp': loadGames[i].ptp,
- 'hash': loadGames[i].hash,
- 'secret': loadGames[i].secret,
- 'winner': loadGames[i].winner,
- 'timer': timerGame[loadGames[i].id]-time(),
- 'timer11': loadGames[i].timer11,
- 'ttimer11': timer11Game[loadGames[i].id]-time(),
- }
- });
- io.sockets.emit('message', {
- type: 'watchCF',
- id: loadGames[i].id,
- csteamid: loadGames[i].csteamid,
- cname: loadGames[i].cname,
- cavatar: loadGames[i].cavatar,
- cskinsurl: loadGames[i].cskinsurl,
- cskinsnames: loadGames[i].cskinsnames,
- ccolors: loadGames[i].ccolors,
- cskinsprices: loadGames[i].cskinsprices,
- cskins: loadGames[i].cskins,
- ctp: loadGames[i].ctp,
- psteamid: loadGames[i].psteamid,
- pname: loadGames[i].pname,
- pcolors: loadGames[i].pcolors,
- pavatar: loadGames[i].pavatar,
- pskinsurl: loadGames[i].pskinsurl,
- pskinsnames: loadGames[i].pskinsnames,
- pskinsprices: loadGames[i].pskinsprices,
- pskins: loadGames[i].pskins,
- ptp: loadGames[i].ptp,
- hash: loadGames[i].hash,
- secret: loadGames[i].secret,
- winner: loadGames[i].winner,
- timer: timerGame[loadGames[i].id]-time(),
- timer11: loadGames[i].timer11,
- ttimer11: timer11Game[loadGames[i].id]-time(),
- gameNumber: loadGames[i].id
- });
- }
- }
- }, 1000);
- }
- function LevelCalculate(user)
- {
- pool.query('SELECT xp,level FROM users WHERE steamid = ' + pool.escape(user), function(err, row) {
- if(err) throw err;
- if(row.length == 0) return;
- var currentLevel = row[0].level;
- var currentXp = row[0].xp;
- var xpNeeded = 0;
- var xpMinus = 0;
- for(var i = 1; i < 500; i++)
- {
- xpNeeded += 40 * i;
- xpMinus = xpNeeded - (40 * i-1);
- if(currentXp >= xpMinus && currentXp <= xpNeeded)
- {
- pool.query('UPDATE users SET level = ' + pool.escape(i) + ' WHERE steamid = ' + pool.escape(user));
- }
- }
- });
- }
- function getRandomFloat(min, max) {
- return (Math.random() * (max - min) + min).toFixed(10);
- }
- function handleDisconnect() {
- pool = mysql.createConnection(db_config);
- pool.connect(function(err) {
- if(err) {
- logger.trace('Error: Connecting to database: ', err);
- setTimeout(handleDisconnect, 2000);
- }
- });
- pool.on('error', function(err) {
- logger.trace('Error: Database error: ', err);
- if(err.code === 'PROTOCOL_CONNECTION_LOST') {
- handleDisconnect();
- } else {
- throw err;
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement