From: Luigi Pinca Date: Wed, 10 Apr 2013 13:34:27 +0000 (+0200) Subject: added some tweaks to prevent users from cheating easily X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=0b5a72f9e4c4a5047932b1bd4ff7d3d7fba439d3;p=binbsis50.git added some tweaks to prevent users from cheating easily --- diff --git a/lib/room.js b/lib/room.js index ac71a5f..2521c31 100644 --- a/lib/room.js +++ b/lib/room.js @@ -32,8 +32,7 @@ module.exports = function(options) { function Room(roomname) { - var allowedguess = false - , artist // Artists in lowercase + var artist // Artists in lowercase , artistName , artworkUrl , feat // Featured artists @@ -182,7 +181,7 @@ function Room(roomname) { // A user is sending a guess this.guess = function(socket, guess) { - if (allowedguess) { + if (status === 0) { if (!usersData[socket.nickname].matched) { // No track no artist if ((artist === title) && amatch(title, guess, true)) { addPointsAndStats(socket.nickname, true); @@ -241,9 +240,6 @@ function Room(roomname) { socket.emit('stoptrying'); } } - else { - socket.emit('noguesstime'); - } }; this.ignore = function(who, executor, callback) { @@ -322,7 +318,7 @@ function Room(roomname) { } // Censor answers from chat var msglcase = msg.toLowerCase(); - if (allowedguess && (amatch(artist, msglcase, true) || + if (status === 0 && (amatch(artist, msglcase, true) || (feat && amatch(feat, msglcase, true)) || amatch(title, msglcase))) { var notice = 'You are probably right, but you have to use the box above.'; socket.emit('chatmsg', notice, 'binb', socket.nickname); @@ -375,7 +371,6 @@ function Room(roomname) { }; io.sockets.in(roomname).emit('playtrack', data); songTimeLeft(Date.now() + 30000, 50); - allowedguess = true; setTimeout(sendTrackInfo, 30000); }; @@ -398,7 +393,6 @@ function Room(roomname) { }; io.sockets.in(roomname).emit('trackinfo', trackinfo); finishline = 1; - allowedguess = false; if (songcounter < config.songsinarun) { resetPoints(true); diff --git a/public/js/app.js b/public/js/app.js index 4ea11d1..ac8a2c2 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -5,6 +5,7 @@ , historycursor = 0 , historyvalues = [] , ignoredplayers = {} + , isplaying , jplayer , nickname , pvtmsgto @@ -115,6 +116,7 @@ touchplay.removeClass('btn-success').addClass('btn-danger disabled'); touchplay.html(' Wait'); } + isplaying = false; cassetteAnimation(Date.now()+5000, false); var artistName = data.artistName.replace(/"/g, '"') @@ -615,6 +617,8 @@ } jplayer.jPlayer('unmute'); jplayer.jPlayer('play'); + DOM.guessbox.val(''); + isplaying = true; updateUsers(data.users); cassetteAnimation(Date.now()+30000, true); if (data.counter === 1) { @@ -662,7 +666,12 @@ case 13: // return var guess = $.trim(DOM.guessbox.val()); if (guess !== '') { - socket.emit('guess', guess.toLowerCase()); + if (isplaying) { + socket.emit('guess', guess.toLowerCase()); + } + else { + addFeedback('You have to wait the next song...'); + } historyvalues.push(guess); if (historyvalues.length > 20) { historyvalues.splice(0, 1); @@ -687,6 +696,10 @@ } }); + DOM.guessbox.on('paste', function(event) { + event.preventDefault(); + }); + DOM.guessbox.focus(); socket.on('artistmatched', function() { @@ -699,9 +712,6 @@ socket.on('gameover', gameOver); socket.on('loadtrack', loadTrack); socket.on('newuser', userJoin); - socket.on('noguesstime', function() { - addFeedback('You have to wait the next song...'); - }); socket.on('nomatch', function() { addFeedback(nmstrings[Math.floor(Math.random()*nmstrings.length)], 'wrong'); }); @@ -729,6 +739,7 @@ var setStatus = function(data) { if (data.status === 0) { + isplaying = true; cassetteAnimation(Date.now()+data.timeleft, true); } else if (data.status === 1) { @@ -961,7 +972,10 @@ e.preventDefault(); } }); - socket = io.connect(uri, {'reconnect':false}); + socket = io.connect(uri, { + 'force new connection': true, + 'reconnect': false + }); socket.on('connect', function() { jplayer = $('#player').jPlayer({ ready: jplayerReady,