Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // io. = EVERYONE
- // socket. = SINGLE USER
- var app = require('express')();
- var http = require('http').Server(app);
- var https = require('https');
- var tls = require('tls');
- var _http = require('http');
- var httpApi = require('http');
- var mysql = require('mysql');
- var io = require('socket.io')(http);
- var request = require("request");
- var fs = require('fs');
- var crypto = require('crypto');
- var Q = require('q');
- var cors = require('cors');
- var Steam = require('steam');
- var SteamWebLogOn = require('steam-weblogon');
- var getSteamAPIKey = require('steam-web-api-key');
- var SteamTradeOffers = require('steam-tradeoffers');
- var SteamUser = require('steam-user');
- var SteamCommunity = require('steamcommunity');
- var SteamTotp = require('steam-totp');
- var TradeOfferManager = require('steam-tradeoffer-manager');
- app.use(function (req, res, next) {
- res.setHeader('Access-Control-Allow-Origin', 'https://csgobm.hostbm.pt');
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
- res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
- res.setHeader('Access-Control-Allow-Credentials', true);
- next();
- });
- app.use(cors({origin: 'https://csgobm.hostbm.pt'}));
- var _ = require('underscore');
- require("jsdom").env("", function(err, window) {
- if (err) {
- console.error(err);
- return;
- }
- var $ = require("jquery")(window);
- });
- var api_url = "http://www.csgobm.hostbm.pt";
- var api_key = "NCR6JTMTJ924HH2ZOOMBZLFLC8H39Q";
- var api_yt = "AIzaSyBEdkdY01HA7h2Crv7Izf8VpZrTXHy9fWI";
- var admin = '76561198367147799';
- var csgobm_db_config = {
- host: 'localhost',
- user: 'csgobm_socket',
- password: '47ehCybb0NtItyaK',
- database: 'admin_csgobm'
- };
- //var csgobm_db = mysql.createConnection(csgobm_db_config);
- //csgobm_db.connect();
- function handleDisconnect(conn) {
- conn.on('error', function(err) {
- if (!err.fatal) {
- return;
- }
- if (err.code !== 'PROTOCOL_CONNECTION_LOST') {
- throw err;
- }
- console.log('Re-connecting lost connection: ' + err.stack);
- csgobm_db = mysql.createConnection(csgobm_db_config);
- handleDisconnect(csgobm_db);
- csgobm_db.connect();
- });
- }
- //handleDisconnect(csgobm_db);
- var onlineP = 0 +0;
- var userData = [];
- var validated,logged,balance,transactions = [];
- var canWithdraw,canDeposit,canBuy,canRoulette,canJackpot,canCoinflip = {};
- var _NextColor = "0";
- app.get('/', function(req, res){
- res.sendfile('csgobm.php');
- });
- app.get('/socket.io', function(req, res){
- res.sendfile('csgobm.php');
- });
- var tag = '[CSGOBM-Socket]-> ';
- var tag_err = '[CSGOBM-Error]-> ';
- var tagSteam = '[CSGOBM-Steam]-> ';
- var tagJukebox = '[CSGOBM-Jukebox]-> ';
- var RouletteBets1 = [];
- var RouletteBets2 = [];
- var RouletteBets3 = [];
- var RouletteBets4 = [];
- var RB1_S=null;var RB2_S=null;var RB3_S=null;var RB4_S=null;
- var ForceUpdateBets1=true;var ForceUpdateBets2=true;var ForceUpdateBets3=true;var ForceUpdateBets4=true;
- var b_id = 0;
- var Bet_EID = {};
- var Bet_VAL = {};
- var Bet_VAL_AC = {};
- var Bet_VAL_AC_1 = {};
- var Bet_VAL_AC_2 = {};
- var Bet_VAL_AC_3 = {};
- var Bet_VAL_AC_4 = {};
- var Bet_TYPE = {};
- var Bet_T = {};
- var PreviousColor = {};
- var PreviousColorsCount = 0;
- if (!Date.now) {
- Date.now = function() { return new Date().getTime(); }
- }
- var client = new SteamUser();
- var manager = new TradeOfferManager({
- "steam": client,
- "domain": "csgobm.hostbm.pt",
- "cancelTime": "600000",
- "language": "en",
- "pollInterval": "5000"
- });
- var community = new SteamCommunity();
- var logOnOptions = {
- "accountName": "csgobm01",//"rizeoficial",
- "password": "csgobm1291",//"nesbangbang2309",
- "twoFactorCode": SteamTotp.getAuthCode("jAm5fVoeqKc7VX6nzelAv3h6Zeo=") //TFXMU: BzwFkohgPozfBkBeNsutWPJV8do=
- };
- var identitySecret = "FSAebN50xQb3VJXA7PgezXxdHHI="; //TFXMU : KKNtodRwQyn+otmeAIrGgoZXcdQ=
- if (fs.existsSync('polldata.json')) {
- manager.pollData = JSON.parse(fs.readFileSync('polldata.json'));
- }
- client.logOn(logOnOptions);
- client.on('loggedOn', function(details) {
- if(details.eresult == SteamUser.EResult.OK) {
- client.getPersonas([client.steamID], function(personas) {
- console.log("============ Logged in ===============================")
- console.log('== Name: ' + personas[client.steamID]["player_name"]);
- console.log('== ID64: ' + client.steamID);
- console.log("======================================================");
- console.log("");
- });
- console.log();
- client.setPersona(1);
- client.webLogOn();
- setInterval(function() { client.webLogOn(); }, 1000 * 60);
- } else {
- console.log(tagSteam+"Error Logging!");
- }
- });
- client.on('webSession', function(sessionID, cookies) {
- manager.setCookies(cookies, function(err) {
- if (err) {
- console.log(err);
- //process.exit(1);
- return;
- }
- console.log(tagSteam+"Got API key: " + manager.apiKey);
- });
- community.setCookies(cookies);
- community.startConfirmationChecker(15000, identitySecret);
- });
- community.on("sessionExpired", function(err) {
- console.log(tagSteam+" Session Expired, relogging.");
- setTimeout(function() {client.logOn(logOnOptions);}, 2000);
- setTimeout(function() {client.webLogOn();}, 4000);
- });
- manager.on('sentOfferChanged', function(offer, oldState) {
- console.log(tagSteam+'Offer #'+offer.id+' changed: '+TradeOfferManager.ETradeOfferState[oldState]+' -> '+TradeOfferManager.ETradeOfferState[offer.state]);
- if(offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
- var SteamID = offer.partner;
- var Message = offer.message;
- var ItemsD = offer.itemsToReceive;
- var JSON = offer.rawJson;
- offer.getReceivedItems(function(err, items) {
- if (err) {
- console.log(tagSteam+"Couldn't get received items: " + err);
- } else {
- var names = items.map(function(item) {
- return item.name;
- });
- console.log("");
- console.log(tagSteam+"===== Deposit from [ "+SteamID+" ] ==");
- console.log(tagSteam+"TRADE MESSAGE => "+Message);
- for(i = 0; i < ItemsD.length; ++i) {
- console.log(tagSteam+"ITEM => "+ItemsD[i].amount+"x "+ItemsD[i].name+" ("+ItemsD[i].classid+"_"+ItemsD[i].instanceid+")");
- }
- console.log(tagSteam+"===========================================");
- console.log("");
- var URL_SEND = api_url+"/_api.php?key="+api_key+"&gi=_TradeOfferReceived&sid="+SteamID+"&offerid="+offer.id+"&offermsg="+Message+"&json="+JSON;
- //console.log(tagSteam+"URL_SEND: "+URL_SEND);
- _http.get(URL_SEND, function(res) {
- var data;
- res.on('data', function(chunk) {
- data += chunk;
- });
- res.on('end', function() {
- console.log("[CSGOBM-ErrorResponse]-> "+data);
- });
- });
- }
- });
- }
- });
- manager.on('newOffer', function(offer) {
- console.log(tagSteam+"Processing New Offer (#"+offer.id+") from "+offer.partner);// offer.partner.getSteam3RenderedID());
- /*offer.getUserDetails(function(err, me, them) {
- console.log("");
- console.log("============ New Offer ===============================");
- console.log("== Message: " + offer.message);
- console.log("======================================================");
- console.log("");
- });*/
- if(offer.itemsToGive.length > 0) {
- offer.decline(function(err) {
- if (err) {
- console.log(tagSteam+"Unable to decline offer: " + err.message);
- } else {
- console.log(tagSteam+"Offer Declined! (ItemsToGive not Allowed)");
- }
- });
- } else if(offer.itemsToReceive.length > 5) {
- offer.decline(function(err) {
- if (err) {
- console.log(tagSteam+"Unable to decline offer: " + err.message);
- } else {
- console.log(tagSteam+"Offer Declined! (Only 5 Items Allowed)");
- }
- });
- } else {
- offer.accept(function(err) {
- if (err) {
- console.log(tagSteam+"Unable to accept offer: " + err.message);
- } else {
- community.checkConfirmations();
- console.log(tagSteam+"Offer Accepted!");
- }
- });
- }
- });
- manager.on('receivedOfferChanged', function(offer, oldState) {
- console.log(tagSteam+'Offer '+offer.id+' changed: '+TradeOfferManager.ETradeOfferState[oldState]+' -> '+TradeOfferManager.ETradeOfferState[offer.state]+' ['+offer.state+']');
- if(offer.state == TradeOfferManager.ETradeOfferState.Accepted) {
- var SteamID = offer.partner;
- var Message = offer.message;
- var ItemsD = offer.itemsToReceive;
- var JSON = offer.rawJson;
- offer.getReceivedItems(function(err, items) {
- if (err) {
- console.log(tagSteam+"Couldn't get received items: " + err);
- } else {
- var names = items.map(function(item) {
- return item.name;
- });
- console.log("");
- //console.log(tagSteam+"===== Donation from [ "+SteamID+" ] =");
- // --remove--
- console.log(tagSteam+"===== Deposit from [ "+SteamID+" ] =");
- // --remove--
- console.log(tagSteam+"TRADE MESSAGE => "+Message);
- for(i = 0; i < ItemsD.length; ++i) {
- console.log(tagSteam+"ITEM => "+ItemsD[i].amount+"x "+ItemsD[i].name+" ("+ItemsD[i].classid+"_"+ItemsD[i].instanceid+")");
- }
- console.log(tagSteam+"===========================================");
- console.log("");
- //var URL_SEND = api_url+"/_api.php?key="+api_key+"&gi=_DonationReceived&sid="+SteamID+"&offerid="+offer.id+"&offermsg="+Message+"&json="+JSON;
- //_http.get(URL_SEND);
- // --remove--
- var URL_SEND = api_url+"/_api.php?key="+api_key+"&gi=_TradeOfferReceived&sid="+SteamID+"&offerid="+offer.id+"&offermsg="+Message+"&json="+JSON;
- console.log(tagSteam+"URL_SEND: "+URL_SEND);
- _http.get(URL_SEND, function(res) {
- var data;
- res.on('data', function(chunk) {
- data += chunk;
- });
- res.on('end', function() {
- console.log("[CSGOBM-ErrorResponse]-> "+data);
- });
- });
- // --remove--
- }
- });
- }
- });
- manager.on('pollData', function(pollData) {
- fs.writeFile('polldata.json', JSON.stringify(pollData), function() {});
- });
- io.on('connection', function (socket) { /* */ });
- io.sockets.on('connection', function (socket) {
- var socketId = socket.id;
- var clientIp = socket.request.connection.remoteAddress;
- var clientPort = socket.request.connection.remotePort;
- var timenow = Math.floor(Date.now() / 1000);
- var saved_time = timenow;
- userData.push({ sid: socketId, validated: 0, logged: 0, balance: 0 });
- var eid,validated,logged,steamid,token,time,balance,transactions,rank = 0;
- var steamName = "Guest";
- var steamAvatar = api_url+"/template/img/default.png";
- var requests_n = 0;
- var canWithdraw = 1;
- var canDeposit = 1;
- var canBuy = 1;
- var canRoulette = 1;
- var canJackpot = 1;
- var canCoinflip = 1;
- onlineP = onlineP + 1;
- function LoggedAndValid() { if(validated && logged == 1) { return true; } else { return false; } }
- function Valid() { if(validated) { return true; } else { return false; } }
- function LogNameAfterConn(sN) { if(requests_n < 2) { setTimeout(function() { console.log(tag+"User [ "+sN+" ] validated!"); },1500); } }
- console.log(tag + 'New Connection: ' + socketId + ' (' + clientIp + ':' + clientPort + ') [ '+onlineP+' Online ]');
- socket.emit('init request');
- socket.on('init', function(init_data) {
- logged = init_data.logged;
- eid = init_data.eid;
- steamid = init_data.steamid;
- token = init_data.token;
- time = init_data.time + 6;
- //if(timenow < time && timenow > (init_data.time - 6)) {
- socket.emit('init validate', '1');
- validated = true;
- /*} else {
- socket.emit('init validate', '0');
- validated = false;
- }*/
- });
- if(LoggedAndValid) {
- setInterval(function() {
- requests_n++;
- _http.get(api_url+"/_api.php?key="+api_key+"&gi=_userData&eid="+eid, function(res) {
- var data_json = '';
- var actual_balance = balance;
- var actual_transactions = transactions;
- res.on('data', function(chunk) {
- data_json += chunk;
- });
- res.on('end', function() {
- var r;
- if(data_json !== "") {
- r = JSON.parse(data_json);
- } else {
- r = 0;
- r.balance = 0;
- r.transcations = 0;
- }
- if(r.balance !== actual_balance) {
- balance = r.balance;
- //balance_s = balance.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
- socket.emit('update balance', { balance : balance });
- balance = balance;
- }
- if(r.transactions !== actual_transactions) {
- transactions = r.transactions;
- socket.emit('update transactions');
- transactions = transactions;
- }
- rank = r.rank;
- steamName = r.steamName; LogNameAfterConn(steamName);
- steamAvatar = r.steamAvatarF;
- canWithdraw = Number(r.canWithdraw);
- canDeposit = Number(r.canDeposit);
- canBuy = Number(r.canBuy);
- canRoulette = Number(r.canRoulette);
- canJackpot = Number(r.canJackpot);
- canCoinflip = Number(r.canCoinflip);
- });
- });
- }, 500);
- setInterval(function() {
- _http.get(api_url+"/_api.php?key="+api_key+"&gi=_userAlerts&eid="+eid, function(res) {
- var data_json = '';
- res.on('data', function(chunk) {
- data_json += chunk;
- });
- res.on('end', function() {
- var r;
- if(data_json !== "") {
- r = JSON.parse(data_json);
- } else {
- r = 0;
- r.haveAlerts = "0";
- }
- if(r.haveAlerts == "1") {
- socket.emit('alert', { msg: r.alertMsg, type: 2, t2: r.alertType, error: 0 });
- }
- });
- });
- }, 1300);
- }
- setTimeout(function() {
- Update_PreviousColors_Send(true, socketId);
- },2000);
- socket.on('alert', function(msg) {
- if(rank >= 4) {
- io.emit('alert', { msg: msg, type: 1, error: 0 });
- } else {
- socket.emit('alert', { msg: 'You don\'t have permission to send alerts!', error: 1, nopermission: 1 });
- }
- });
- socket.on('roulette nextcolor', function(nc_data) {
- if(rank >= 5) {
- if(isNaN(nc_data)) {
- if(nc_data=="TERRORIST"||nc_data=="T") _NextColor=14;
- if(nc_data=="COUNTER-TERRORIST"||nc_data=="CT") _NextColor=15;
- if(nc_data=="BADLUCK"||nc_data=="BL") _NextColor=1;
- if(nc_data=="KNIFE") _NextColor=8;
- } else {
- _NextColor = nc_data;
- }
- } else {
- socket.emit('alert', { msg: 'You don\'t have permission to do this action!', error: 1, nopermission: 1 });
- }
- });
- //BET_ROULETTE FUNCTION
- {
- var betType;
- var betValue = 0;
- socket.on('roulette bet', function(bet_data) {
- if(!LoggedAndValid()) {SendError("Please, login to your account through Steam.",1,true,socketId);return;}
- if(!validated) {SendError("User not validated, please refresh the page or login again.",1,true,socketId);return;}
- if(!canRoulette) {SendError("You don't have permission to bet on the Roulette.",1,true,socketId);return;}
- betType = bet_data.bet_type;
- betValue = bet_data.bet_value-1+1;
- if(_rouletteActive) {
- socket.emit('roulette bet error', 'e_1790');
- console.error(tag+"[ "+steamName+" ]: No permission to bet when the Roulette is Active! [BALANCE="+balance+"][VALUE="+betValue+"]");
- } else if(!(betType=="T"||betType=="CT"||betType=="KNIFE")) {
- socket.emit('roulette bet error', 'e_3481');
- console.error(tag+"[ "+steamName+" ]: Invalid Bet Informations! [BALANCE="+balance+"][VALUE="+betValue+"]");
- } else if(betValue < 100) {
- socket.emit('roulette bet error', 'e_2952');
- } else if(betValue > 100000 && 1==2) {
- socket.emit('roulette bet error', 'e_2953');
- } else if(balance >= betValue) {
- _http.get(api_url+"/_api.php?key="+api_key+"&gi=_ActionRemoveBalance&eid="+eid+"&value="+betValue);
- CreateLogCoins(eid,"minus",betValue,'{"game":"roulette","type":"bet","betType":"'+betType+'"}');
- socket.emit('roulette bet ok', {value:betValue});
- if(betType == "T") {
- RouletteBets1.push({ eid: eid, socket: socketId, val: betValue, name: steamName, avatar: steamAvatar });
- if(isNaN(Bet_VAL_AC_1[socketId])) {
- Bet_VAL_AC_1[socketId] = Number(betValue*1);
- } else if(Bet_VAL_AC_1[socketId] > 0) {
- Bet_VAL_AC_1[socketId] = Number((Bet_VAL_AC_1[socketId]*1+betValue*1)*1);
- }
- }
- if(betType == "CT") {
- RouletteBets2.push({ eid: eid, socket: socketId, val: betValue, name: steamName, avatar: steamAvatar });
- if(isNaN(Bet_VAL_AC_2[socketId])) {
- Bet_VAL_AC_2[socketId] = Number(betValue*1);
- } else if(Bet_VAL_AC_2[socketId] > 0) {
- Bet_VAL_AC_2[socketId] = Number((Bet_VAL_AC_2[socketId]*1+betValue*1)*1);
- }
- }
- /*if(betType == "X5") {
- RouletteBets3.push({ eid: eid, socket: socketId, val: betValue, name: steamName, avatar: steamAvatar });
- if(isNaN(Bet_VAL_AC_3[socketId])) {
- Bet_VAL_AC_3[socketId] = Number(betValue*1);
- } else if(Bet_VAL_AC_3[socketId] > 0) {
- Bet_VAL_AC_3[socketId] = Number((Bet_VAL_AC_3[socketId]*1+betValue*1)*1);
- }
- }*/
- if(betType == "KNIFE") {
- RouletteBets4.push({ eid: eid, socket: socketId, val: betValue, name: steamName, avatar: steamAvatar });
- if(isNaN(Bet_VAL_AC_4[socketId])) {
- Bet_VAL_AC_4[socketId] = Number(betValue*1);
- } else if(Bet_VAL_AC_4[socketId] > 0) {
- Bet_VAL_AC_4[socketId] = Number((Bet_VAL_AC_4[socketId]*1+betValue*1)*1);
- }
- }
- b_id++;
- Bet_EID[socketId] = eid;
- Bet_VAL[b_id] = betValue; //Not Needed
- /*if(isNaN(Bet_VAL_AC[socketId])) {
- Bet_VAL_AC[socketId] = Number(betValue*1);
- } else if(Bet_VAL_AC[socketId] > 0) {
- Bet_VAL_AC[socketId] = Number((Bet_VAL_AC[socketId]*1+betValue*1)*1);
- }*/
- Bet_TYPE[b_id] = betType;
- Bet_T[socketId] = Math.floor(Date.now() / 1000) * Math.floor(Math.random() * 65) + 15;
- console.log(tag+"[ "+steamName+" ]: Bet Successfull! [BALANCE="+balance+"][VALUE="+betValue+"]["+betType+"]");
- } else if(balance < betValue) {
- socket.emit('roulette bet error', 'e_9367');
- console.error(tag+"[ "+steamName+" ]: Not enough coins! [BALANCE="+balance+"][VALUE="+betValue+"]");
- } else {
- socket.emit('roulette bet error', 'e_8365');
- console.error(tag+"[ "+steamName+" ]: Error betting! Maybe try again? [BALANCE="+balance+"][VALUE="+betValue+"]");
- }
- });
- }
- //---------------------
- //SEND_TRADE_OFFER[DEPOSIT] FUNCTION
- {
- socket.on('new deposit', function(deposit_data) {
- if(deposit_data.items !== null && deposit_data.items !== "") {
- var offer = manager.createOffer("76561198161578475");
- manager.loadInventory(730, 2, true, function(err, myItems) {
- if(err) {
- console.log(err);
- return;
- }
- offer.loadPartnerInventory(730, 2, function(err, theirItems) {
- if(err) {
- console.log(tagSteam+err);
- return;
- }
- //offer.addMyItem(myItems[0]);
- //offer.addTheirItem(theirItems[373]);
- offer.addTheirItem(theirItems[482]);
- offer.setMessage("CSGOBM_DEPOSIT: ["+Math.floor(1000000000 + Math.random() * 9000000000)+"]");
- offer.send("");
- console.log(tagSteam+"Processing New Deposit!");
- });
- });
- } else {
- console.log(tagSteam+"Error processing the Deposit! (Missing_Items)");
- }
- });
- }
- //----------------------------------
- //JUKEBOX_REQUEST Function
- {
- socket.on('jukebox new', function(jkb_data) {
- if(rank >= 2) {
- var perm = false;
- if(rank >= 3) perm = true;
- JKB_Play(jkb_data,steamName,socketId,perm);
- } else {
- socket.emit('alert', { msg: 'You don\'t have permission to play on the Jukebox!', error: 1, nopermission: 1 });
- }
- });
- socket.on('jukebox stop', function() {
- if(rank >= 3) {
- JKB_Stop();
- } else {
- socket.emit('alert', { msg: 'You don\'t have permission to stop the Jukebox!', error: 1, nopermission: 1 });
- }
- });
- }
- //------------------------
- //Disconnect
- socket.on('disconnect', function () {
- if(onlineP != 0) { onlineP = onlineP - 1; }
- console.log(tag + 'Disconnected: ' + socketId + ' (' + clientIp + ':' + clientPort + ') [ '+onlineP+' Online ]');
- });
- });
- //ROUND_ROULETTE FUNCTION
- {
- var RoundTime = 19;
- var timeLeft = RoundTime;
- var num = 1;
- var diff;
- var betsValueTotal = 0;
- var _rouletteActive = false;
- var _colorNumber = {
- terrorist: [1,3,5,7,10,12,14,16,18,20,23,25,27,29],
- counterterrorist: [2,4,6,9,11,13,15,17,19,21,24,26,28,30],
- badluck: [],
- knife: [8,22]
- }
- setInterval(function() {
- if(timeLeft > 1 && timeLeft !== 20) {
- io.emit('roulette round timeleft', {tl : timeLeft});
- timeLeft = timeLeft - 1;
- } else if(timeLeft == 1) {
- io.emit('roulette round timeleft', {tl : timeLeft});
- num = GenerateNum();
- diff = Math.random() * (65 - 15) + 15; //Math.floor(Math.random() * 55) + 25;
- timeLeft = 20;
- var w_color;
- var bType;
- var bData;
- var contains = function(needle) {var findNaN = needle !== needle;var indexOf;if(!findNaN && typeof Array.prototype.indexOf === 'function') {indexOf = Array.prototype.indexOf;}else{indexOf=function(needle){var i = -1, index = -1;for(i = 0; i < this.length; i++) {var item = this[i];if((findNaN && item !== item) || item === needle) {index = i;break;}}return index;};}return indexOf.call(this, needle) > -1;};
- if(contains.call(_colorNumber.terrorist, num)) w_color = "TERRORIST";
- if(contains.call(_colorNumber.counterterrorist, num)) w_color = "COUNTER-TERRORIST";
- if(contains.call(_colorNumber.badluck, num)) w_color = "BADLUCK";
- if(contains.call(_colorNumber.knife, num)) w_color = "KNIFE";
- _rouletteActive = true;
- io.emit('roulette round starts', {
- n : num,
- d : diff,
- h : "ABCDEFGHIJKLMNOPQRSTUVXZ"
- });
- console.log(tag + "Team: "+w_color+" | Number: "+num+" | Diff: "+diff);
- setTimeout(function() {
- io.emit('roulette round timeleft', {tl : 20});
- }, 3500);
- setTimeout(function() {
- timeLeft = RoundTime;
- _rouletteActive = false;
- //RouletteBets1=[];RouletteBets2=[];RouletteBets3=[];RouletteBets4=[];
- }, 14500);
- setTimeout(function() {
- if(w_color=="TERRORIST"){bType=1;bData=RouletteBets1;}else if(w_color=="COUNTER-TERRORIST"){bType=2;bData=RouletteBets2;}else if(w_color=="BADLUCK"){bType=3;bData=RouletteBets3;}else if(w_color=="KNIFE"){bType=4;bData=RouletteBets4;}else{bType=0;}
- PayBets(bType);
- Update_PreviousColors(w_color);
- RouletteBets1=[];RouletteBets2=[];RouletteBets3=[];RouletteBets4=[];
- RB1_S=null;RB2_S=null;RB3_S=null;RB4_S=null;
- b_id=0;
- Bet_VAL_AC={};Bet_VAL_AC_1={};Bet_VAL_AC_2={};Bet_VAL_AC_3={};Bet_VAL_AC_4={};
- }, 13500);
- }
- }, 1000);
- function GenerateNum() {
- var numR;
- if(_NextColor!=="0") {
- numR = _NextColor;
- _NextColor = "0";
- } else {
- numR = Math.floor(Math.random() * 30) + 1;
- }
- return (numR*1);
- }
- }
- //-----------------------
- //SEND_ROULETTE_BETS FUNCTION
- {
- setInterval(function() {
- if(RouletteBets1.length > RB1_S || RB1_S==null || ForceUpdateBets1) {
- if(ForceUpdateBets1) {ForceUpdateBets1=false;}
- RB1_S=RouletteBets1.length;
- io.emit('roulette bets update 1', RouletteBets1);
- }
- if(RouletteBets2.length > RB2_S || RB2_S==null || ForceUpdateBets2) {
- if(ForceUpdateBets2) {ForceUpdateBets2=false;}
- RB2_S=RouletteBets2.length;
- io.emit('roulette bets update 2', RouletteBets2);
- }
- if(RouletteBets3.length > RB3_S || RB3_S==null || ForceUpdateBets3) {
- if(ForceUpdateBets3) {ForceUpdateBets3=false;}
- RB3_S=RouletteBets3.length;
- io.emit('roulette bets update 3', RouletteBets3);
- }
- if(RouletteBets4.length > RB4_S || RB4_S==null || ForceUpdateBets4) {
- if(ForceUpdateBets4) {ForceUpdateBets4=false;}
- RB4_S=RouletteBets4.length;
- io.emit('roulette bets update 4', RouletteBets4);
- }
- }, 600);
- }
- //---------------------------
- //SEND_ROULETTE_PREVIOUS_COLORS FUNCTION
- function Update_PreviousColors(color) {
- PreviousColorsCount++;
- PreviousColor[PreviousColorsCount] = color;
- var PrevCol = PreviousColor[PreviousColorsCount];
- Update_PreviousColors_Send(false, null);
- }
- function Update_PreviousColors_Send(clientOnly,sid) {
- var si;
- var validSocket = false;
- if(clientOnly) {
- si = io.sockets.connected[sid];
- if(si) {
- validSocket = true;
- console.log(tag+"Sending the Previous Colors to ID: "+sid);
- } else {
- validSocket = false;
- }
- } else {
- si = io;
- if(si) { validSocket = true; } else { validSocket = false; }
- }
- if(validSocket) {
- si.emit('roulette previous colors', {
- previousColor1: PreviousColor[PreviousColorsCount],
- previousColor2: PreviousColor[PreviousColorsCount-1],
- previousColor3: PreviousColor[PreviousColorsCount-2],
- previousColor4: PreviousColor[PreviousColorsCount-3],
- previousColor5: PreviousColor[PreviousColorsCount-4],
- previousColor6: PreviousColor[PreviousColorsCount-5],
- previousColor7: PreviousColor[PreviousColorsCount-6],
- previousColor8: PreviousColor[PreviousColorsCount-7],
- previousColor9: PreviousColor[PreviousColorsCount-8],
- previousColor10: PreviousColor[PreviousColorsCount-9]
- });
- }
- }
- //--------------------------------------
- //MAKE_WINNERS_ROULETTE FUNCTION
- var tempBal = [];
- function PayBets(btp) {
- var TotalPaymentAmount = 0;
- var money_actual;
- var paymentAmount = 0;
- var timesPayed = 0;
- console.log(tag+"Processing the payments...");
- if(btp==1){
- Bet_VAL_AC = Bet_VAL_AC_1;
- }else if(btp==2){
- Bet_VAL_AC = Bet_VAL_AC_2;
- }else if(btp==3){
- Bet_VAL_AC = Bet_VAL_AC_3;
- }else if(btp==4){
- Bet_VAL_AC = Bet_VAL_AC_4;
- }
- for(var betInfo in Bet_VAL_AC) {
- var ib = betInfo;
- console.log(tag+"[ !DEBUG! ]: betInfo("+ib+") | Bet_VAL_AC[betInfo]('"+Bet_VAL_AC[ib]+"')");
- var valueToPay = 0;
- if(btp==1){
- valueToPay = Bet_VAL_AC_1[ib]*2;
- }else if(btp==2){
- valueToPay = Bet_VAL_AC_2[ib]*2;
- }else if(btp==3){
- valueToPay = Bet_VAL_AC_3[ib]*0; //*5 BLUE to BLACK NULL
- }else if(btp==4){
- valueToPay = Bet_VAL_AC_4[ib]*15;
- }
- SendPaymentQuery(valueToPay,Bet_EID[ib]);
- }
- for(i=0;i<b_id;i++) {
- /* DEBUG ON
- var ib = (i+1);
- if(btp==1&&Bet_TYPE[ib]=="X2") SendPaymentQuery(Bet_VAL[ib]*2,Bet_EID[ib],Bet_T[ib]);
- if(btp==2&&Bet_TYPE[ib]=="X3") SendPaymentQuery(Bet_VAL[ib]*3,Bet_EID[ib],Bet_T[ib]);
- if(btp==3&&Bet_TYPE[ib]=="X5") SendPaymentQuery(Bet_VAL[ib]*5,Bet_EID[ib],Bet_T[ib]);
- if(btp==4&&Bet_TYPE[ib]=="X15") SendPaymentQuery(Bet_VAL[ib]*15,Bet_EID[ib],Bet_T[ib]);
- if(btp==0) SendPaymentQuery(Bet_VAL[ib]*0,Bet_EID[ib],Bet_T[ib]);
- var TotalPaymentAmount = (tempBal + paymentAmount)*1;
- TotalPaymentAmout = 0;
- paymentAmount = 0;
- if(i == (b_id-1)*1) {
- console.log(tag+"Sending payment to [ "+(b_id)+" ] requests.");
- }
- */
- }
- if(b_id == 0) {
- console.log(tag+"No payments needed! Starting new Round...");
- }
- }
- function SaveTempBalance(b) { tempBal = b; }
- function SendPaymentQuery(pA,EID) {
- httpApi.get(api_url+"/_api.php?key="+api_key+"&gi=_ActionAddBalance&eid="+EID+"&value="+pA);
- CreateLogCoins(EID,"plus",pA,'{"game":"roulette","type":"bet_win"}');
- console.log(tag+"Sending [ "+pA+" ]coins to EID:["+EID+"]");
- }
- function SendCoins_RouletteWin(d,t) {
- d_string = JSON.stringify(d);
- _http.get(api_url+"/_api.php?key="+api_key+"&gi=_RouletteWin&data="+d+"&bet="+t);
- }
- //------------------------------
- //JUKEBOX FUNCTIONS
- {
- var JKB_Playing = false;
- var JKB_MusicURL = null;
- var JKB_MusicID = null;
- var JKB_MusicTITLE = null;
- var JKB_MusicDURATION = null;
- var JKB_MusicTHUMBNAIL = null;
- var JKB_MusicBY = null;
- var JKB_TimeAllow = true;
- var t_playing = setTimeout(function(){},10000*10000);
- var t_timeallow = setTimeout(function(){},10000*10000);
- function C_Playing(m,duration) {
- clearTimeout(t_playing);
- t_playing = setTimeout(function() { JKB_Playing=m; }, duration);
- }
- function C_TimeAllow(m,duration) {
- clearTimeout(t_timeallow);
- t_timeallow = setTimeout(function() { JKB_TimeAllow=m; }, duration);
- }
- function JKB_Play(url,by,sid,perm) {
- var si = io.sockets.connected[sid];
- var validSocket = false;
- if(si){validSocket=true;}else{validSocket=false;}
- if(JKB_CheckURL(url)) {
- if(!JKB_Playing) {
- if(JKB_TimeAllow) {
- JKB_Playing = true;
- JKB_TimeAllow = false;
- JKB_MusicURL = url;
- JKB_MusicID = YoutubeVideoID(url);
- console.log(tagJukebox+"Playing Youtube Video [ID="+JKB_MusicID+"]");
- _http.get(api_url+"/_api.php?key="+api_key+"&gi=_YoutubeVideoData&vid="+JKB_MusicID+"&key="+api_yt, function(res) {
- var data_json = '';
- res.on('data', function(chunk) {
- data_json += chunk;
- });
- res.on('end', function() {
- var r;
- var ok = false;
- if(data_json !== "") {
- r = JSON.parse(data_json);
- ok = true;
- } else {
- r = 0;
- r.videoId = null;
- r.videoTitle = null;
- r.videoDescription = null;
- r.videoThumbnail = null;
- r.videoDuration = null;
- ok = false;
- }
- JKB_MusicTITLE = r.videoTitle;
- JKB_MusicDURATION = r.videoDuration;
- JKB_MusicTHUMBNAIL = r.videoThumbnail;
- JKB_MusicBY = by;
- console.log(tagJukebox+"Title: \""+r.videoTitle+"\" | Duration: "+r.videoDuration);
- if(ok) {
- if(JKB_MusicDURATION > 390 && !perm) { // 360 seconds = 6 minutes
- si.emit('alert', { msg: "You don't have permission to play musics with more than 5 minutes in the Jukebox.", type: 2, t2: "error", error: 0 });
- JKB_Playing=false;
- JKB_TimeAllow=true;
- } else {
- io.emit('jukebox play', {
- videoId: JKB_MusicID,
- videoTitle: JKB_MusicTITLE,
- videoDuration: JKB_MusicDURATION,
- videoThumbnail: JKB_MusicTHUMBNAIL,
- videoBy: JKB_MusicBY
- });
- C_Playing(false,JKB_MusicDURATION*1000+3500);
- C_TimeAllow(true,JKB_MusicDURATION*1000+6500);
- si.emit('alert', { msg: "Your music is now playing on the Jukebox.", type: 2, t2: "success", error: 0 });
- }
- }
- });
- });
- } else {
- si.emit('alert', { msg: "Please wait a few moments before use the Jukebox!", type: 2, t2: "error", error: 0 });
- }
- } else {
- si.emit('alert', { msg: "There is currently a song playing on jukebox!", type: 2, t2: "error", error: 0 });
- }
- } else {
- console.log(tagJukebox+"Invalid URL format! (Only accept Youtube URL)");
- }
- }
- function JKB_CheckURL(url) {
- var validUrls = ['youtube.com','yt.com','youtube.pt','ytbe.com'];
- if(validUrls.some(function(v){return url.indexOf(v)>=0;})) {
- return true;
- } else {
- return false;
- }
- }
- function JKB_Stop() {
- JKB_Playing = false;
- clearTimeout(t_playing);
- C_TimeAllow(true,3000);
- io.emit('jukebox stop');
- }
- }
- //setTimeout(function(){JKB_Play("https://www.youtube.com/watch?v=iOe6dI2JhgU","bruno","123");},5000);
- //-----------------
- //res.setHeader('Access-Control-Allow-Origin', 'https://csgobm.hostbm.pt');
- //res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
- //res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
- //res.setHeader('Access-Control-Allow-Credentials', true);
- // key: fs.readFileSync('/home/ssl/websocket.hostbm.pt.key'),
- // cert: fs.readFileSync('/home/ssl/websocket.hostbm.pt.crt')
- const options = {
- key: fs.readFileSync('/home/ssl/csgobm_ws.key.pem'),
- cert: fs.readFileSync('/home/ssl/csgobm_ws.key-cert.pem')
- };
- /*
- https.createServer(options, (req, res) => {
- res.setHeader('Access-Control-Allow-Origin', 'https://csgobm.hostbm.pt');
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
- res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
- res.setHeader('Access-Control-Allow-Credentials', true);
- res.writeHead(200);
- res.end('HostBM WebSocket System 3.2\n');
- }).listen(443);*/
- http.listen(9497, function(){
- console.log('---------------------------------------------------------');
- console.log('== HOSTBM SOCKET SERVER [CSGOBM.pt] - Porta 80 ==');
- console.log('---------------------------------------------------------');
- });
- setInterval(function() {
- io.emit('players_online', onlineP);
- io.emit('game status', {
- roulette: true,
- coinflip: false
- });
- }, 2000);
- //FUNCTIONS ----------------------- \/
- function CreateLogCoins(eid,tp,val,data) {
- httpApi.get(api_url+"/_api.php?key="+api_key+"&gi=_LogCoins&eid="+eid+"&tp="+tp+"&value="+val+"&data="+data);
- }
- function SendError(msg,type,clientOnly,sid) {
- var si;
- if(clientOnly){si=io.sockets.connected[sid];}else{si=io;}
- si.emit('error_warn', { t:type, msg:msg });
- }
- function YoutubeVideoID(str) {
- return str.split('=')[1];
- }
- function get_json(url, callback) {
- _http.get(url, function(res) {
- var body = '';
- res.on('data', function(chunk) {
- body += chunk;
- });
- res.on('end', function() {
- var response = JSON.parse(body);
- callback(response);
- });
- });
- }
- function Update_UserData(userData) {
- var result = $.grep(userData, function(e){ return e.id == id; });
- if (result.length == 0) {
- // not found
- } else if (result.length == 1) {
- // access the foo property using result[0].foo
- } else {
- // multiple items found
- }
- }
- function BalanceFormat(bal) {
- return bal.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
- }
- function getSHA1(bytes) {
- var shasum = crypto.createHash('sha1');
- shasum.end(bytes);
- return shasum.read();
- }
Add Comment
Please, Sign In to add comment