From 5c70dc6b87f96444e01d62ac1844467655b2edc5 Mon Sep 17 00:00:00 2001 From: luca0N! Date: Sat, 2 Jan 2021 23:42:47 -0300 Subject: [PATCH 1/2] =?UTF-8?q?Verifica=C3=A7=C3=A3o=20de=20palavras=20rep?= =?UTF-8?q?etidas=20adicionado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O servidor dará uma outra chance para jogadores que tentarem adivinhar uma palavra que já foi enviada. --- index.js | 5 +++++ sala.js | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/index.js b/index.js index 520425f..8fad2b6 100644 --- a/index.js +++ b/index.js @@ -370,6 +370,11 @@ wss.on('connection', ws => { tentarNovamente = true; break; } + case "PALAVRA_JÁ_ESCOLHIDA":{ + alertarClientesEvento("EVENTO_TERMO_ESCOLHIDO", cliente.sala, { tipo: letra ? "LETRA" : "TERMO", termo: resposta.extra.termo, resultado: r }); + tentarNovamente = true; + break; + } case "LETRAS_PREENCHIDAS":{ alertarClientesEvento("EVENTO_TERMO_ESCOLHIDO", cliente.sala, { tipo: letra ? "LETRA" : "TERMO", termo: resposta.extra.termo, resultado: r, ldc: salaObj.ldc }); diff --git a/sala.js b/sala.js index 41474cf..6e316a4 100644 --- a/sala.js +++ b/sala.js @@ -86,6 +86,7 @@ class Sala { novaRodada(){ this.lei = []; // Letras escolhidas inexistentes this.lee = []; // Letras escolhidas existentes + this.pei = []; // Palavras escolhidas inexistentes this.ldc = []; // Letras descobertas this.jpa = null; // Jogador que escolheu a palavra atual (Jogador Palavra Atual) this.palavra = null; @@ -185,6 +186,12 @@ class Sala { } return resultadoTermo; } else { + // Esta palavra já foi enviada? + if (this.pei.indexOf(termo) !== -1){ + resultadoTermo.resultado = "PALAVRA_JÁ_ESCOLHIDA"; + return resultadoTermo; + } + this.pei.push(termo); let palavraCorreta = this.palavra === termo; resultadoTermo.resultado = palavraCorreta ? "PALAVRA_CORRETA" : "PALAVRA_INCORRETA"; if (palavraCorreta){ From bcf698074bcd4efb0f68ddbc8e0f221a0075d301 Mon Sep 17 00:00:00 2001 From: luca0N! Date: Sat, 2 Jan 2021 23:57:43 -0300 Subject: [PATCH 2/2] =?UTF-8?q?Verifica=C3=A7=C3=A3o=20de=20termos=20envia?= =?UTF-8?q?dos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O servidor agora não irá permitir o envio de termos com caracteres que não sejam permitidos e, caso o filtro de temas adultos da sala esteja habilitado, irá proibir palavras filtradas também. --- index.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/index.js b/index.js index 8fad2b6..3dad916 100644 --- a/index.js +++ b/index.js @@ -324,6 +324,19 @@ wss.on('connection', ws => { break; } + // Verificar termo via expressão regular. + let palavraRegexIlegal = new RegExp(vars["palavra.regex.caracteresIlegais"], 'g'); + if (palavraRegexIlegal.test(resposta.extra.termo)){ + ws.send(JSON.stringify(new Resposta("PEDIDO_CANCELADO", "SERVIDOR", "PALAVRA_OU_LETRA_PROIBIDO", { erroDescrição: "TERMO_CARACTERES_ILEGAIS" }))); + break; + } + + // Verificar se o termo enviado possui termos filtrados CASO a sala tinha o filtro habilitado + if (salaObj.opções["filtro.temasAdultos.habilitado"] && Util.filtrarMensagem(resposta.extra.termo, filtros) !== resposta.extra.termo){ + ws.send(JSON.stringify(new Resposta("PEDIDO_CANCELADO", "SERVIDOR", "PALAVRA_OU_LETRA_PROIBIDO", { erroDescrição: "TERMO_IMPRÓPRIO" }))); + break; + } + // Verificar o tipo do termo enviado. let letra = resposta.extra.termo.length === 1; let salaClientes = salaObj.clientes;