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/vgo4fun.com/privkey.pem'),
- cert: fs.readFileSync('/etc/letsencrypt/live/vgo4fun.com/cert.pem'),
- requestCert: true,
- rejectUnauthorized: false
- };
- var ExpressTrade = require('expresstrade');
- var request = require('request');
- 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 config = require('./config.json');
- 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 pool;
- var db_config = {
- host: config.options.sql['host'],
- user: config.options.sql['username'],
- socketPath: '/var/run/mysqld/mysqld.sock',
- password: config.options.sql['password'],
- queueLimit : 0,
- connectionLimit : 0,
- database: config.options.sql['database']
- };
- //GAME INFO
- var apiKey = config.bots[0].apiKey;
- var twoFactor = config.bots[0].twoFactorCode;
- var minDep = config.options.minDeposit;
- var percentRake = config.options.coinflipComission;
- var Ownerid = config.options.ownerSteamID;
- var ET = new ExpressTrade({
- apikey: apiKey,
- twofactorsecret: twoFactor,
- pollInterval: config.options.poolingInterval
- });
- const redisChannels = {
- jackpotUsers: 'jackpot.users'
- }
- var inventoryTimer = {};
- var socketBySteam = {};
- var loadGames = [];
- var timerGame = {};
- var timer11Game = {};
- 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 = config.options.jackpotComission;
- var pickWinner = false;
- var pickSteamID = '';
- log4js.configure({
- appenders: {
- cheese: {
- type: 'file',
- filename: 'logs/logs.log'
- }
- },
- categories: {
- default: {
- appenders: ['cheese'],
- level: 'error'
- }
- }
- });
- handleDisconnect();
- 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);
- }
- } else {
- }
- });
- 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);
- 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(offer) {
- 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;
- var offeritems = offer.recipient.items;
- var offer_name = maca[0].action;
- if(offer.state == 7 || offer.state == 6 || offer.state == 8 || offer.state == 5) {
- if(offer_name == 'CFJoin') {
- 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') {
- 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 == 'Winning') {
- 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[maca[0].user]['info']])
- {
- io.sockets.connected[socketBySteam[maca[0].user]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- } else if(offer_name == 'ShopPrize') {
- pool.query('SELECT user FROM trades WHERE tid = ' + pool.escape(offer.id), function(imp, rows) {
- if(imp) throw imp;
- if(rows.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[maca[0].user]['info']])
- {
- io.sockets.connected[socketBySteam[maca[0].user]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerDeclined'
- });
- }
- } else if(offer_name == 'Jackpot') {
- 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.state == 3){
- if(offer_name == 'CFCreate')
- {
- 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(maca[0].user), 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(maca[0].user), function(haha, huhu) {
- if(haha) throw haha;
- if(huhu.length == 0) return;
- LevelCalculate(maca[0].user);
- });
- 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(maca[0].user) + ', 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(cacas, rara) {
- if(cacas) throw cacas;
- 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[maca[0].user]['info']])
- {
- io.sockets.connected[socketBySteam[maca[0].user]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerAccepted'
- });
- }
- }
- else if(offer_name == 'CFJoin')
- {
- 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)
- {
- }
- });
- }, 9500);
- if(io.sockets.connected[socketBySteam[maca[0].user]['info']])
- {
- io.sockets.connected[socketBySteam[maca[0].user]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerAccepted'
- });
- }
- });
- }
- else if(offer_name == 'Jackpot')
- {
- var timer = 10;
- if(closejackpotbets == 1) timer = 35000;
- setTimeout(function() {
- var receivedItems = [];
- usersPot.push({
- userid: maca[0].user
- });
- 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[maca[0].user]['info']])
- {
- io.sockets.connected[socketBySteam[maca[0].user]['info']].emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerAccepted'
- });
- }
- });
- });
- return;
- }, timer);
- } else if(offer_name == 'Winning') {
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- } else if(offer_name == 'ShopPrize') {
- pool.query('UPDATE trades SET status = ' + pool.escape('Accepted') + ' WHERE tid = ' + pool.escape(offer.id));
- }
- }
- });
- }
- process.on('uncaughtException', function(err) {
- logger.error(err);
- });
- nextJackpotRound();
- loadAllGames();
- ET.on('any', (_event, offer) => {
- if(_event == "offerExpired" || _event == "offerCancelled" || _event == "offerDeclined" || _event == "offerAccepted" || _event == "offerNoLongerValid") {
- processOffer(offer);
- } else if(_event == "offerReceived") {
- if(offer.message == config.options.shopMessage && offer.is_gift == true) {
- console.log('Accepting Shop Items');
- var items = offer.sender.items;
- ET.ITrade.AcceptOffer({offer_id: offer.id}, (err, body) => {
- if(err != null || body.status != 1) {
- console.log("Error on accept shop offer!");
- logger.error(body + " <- Body || Error -> " + err);
- } else {
- 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});
- }
- }
- });
- 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 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;
- }
- 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(!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);
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer.id,
- code: cod
- });
- 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('vgo4fun.com') == -1) {
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'ERROR: Place vgo4fun.com in nickname to make withdraw!'
- });
- 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);
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer.id,
- code: cod
- });
- }
- });
- },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)
- {
- 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);
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: body.response.offer.id,
- code: cod
- });
- 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.' ( Es meint, er ist nicht im Pot.)
- });
- }
- else
- {
- pickWinner = true;
- pickSteamID = caca[1];
- socket.emit('message', {
- type: 'msg',
- tip: 'alert',
- msg: 'Winner is: ' + bbb[0].name + ' (steamid: ' + 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] || !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(',');
- socket.emit('message', {
- type: 'modals',
- tip: 'trade',
- result: 'offerSend',
- tid: offer.id,
- code: 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);
- });
- 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);
- }
- });
- },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);
- }
- });
- }, 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