Compare commits

...

2 commits

Author SHA1 Message Date
bcf698074b
Verificação de termos enviados
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.
2021-01-02 23:57:43 -03:00
5c70dc6b87
Verificação de palavras repetidas adicionado
O servidor dará uma outra chance para jogadores que tentarem adivinhar uma palavra que já foi enviada.
2021-01-02 23:42:47 -03:00
2 changed files with 25 additions and 0 deletions

View file

@ -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;
@ -370,6 +383,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 });

View file

@ -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){