Mudanças entre as edições de "MediaWiki:Common.js"
Ir para navegação
Ir para pesquisar
Etiqueta: Revertido |
Etiqueta: Revertido |
||
Linha 1: | Linha 1: | ||
mw. | $(function () { | ||
var myElement = document.getElementById('mw-calculator'); | |||
myElement.innerHTML = 'any HTML'; | |||
}());{ | |||
const levelMaximo = 100 | |||
//Dark mode | |||
var circulo = $('.toggle-dark-mode .circle-toggle') | |||
var barra = $('.toggle-dark-mode') | |||
$(barra).click(function(){ | |||
if($(barra).hasClass("darkmode-ativo")){ | |||
$(barra).removeClass('darkmode-ativo') | |||
$('html').css('background-color','rgba(226, 225, 225, 0.7)') | |||
circulo.animate({'left':'0'}) | |||
$('.tier').css('color','black') | |||
$('.radios label.active').css('border-color','rgb(94, 93, 93)') | |||
$('.informacoes-box').css('background-color','rgb(241, 241, 241)').css('border','1px solid black') | |||
$('.informacoes-box .getinf').css('color','black') | |||
$('.informacoes-box input[type=number]').css('border-color','rgb(126, 126, 126)') | |||
$('.container > h2').css('color','#3394CE') | |||
$('.box-up h2').css('color','#3394CE') | |||
$('.box-up:not(h2)').css('color','black') | |||
} | |||
else{ | |||
$(barra).addClass('darkmode-ativo') | |||
$('html').css('background-color','#18191A') | |||
circulo.animate({'left':'40px'}) | |||
$('.tier').css('color','white') | |||
$('.radios label.active').css('border-color','white') | |||
$('.informacoes-box').css('background-color','#242526').css('border','none') | |||
$('.informacoes-box .getinf').css('color','white') | |||
$('.informacoes-box input[type=number]').css('border-color','#18191A') | |||
$('.container > h2').css('color','#4194FF') | |||
$('.box-up h2').css('color','#4194FF') | |||
$('.box-up:not(h2)').css('color','white') | |||
$('.w100 input[type=submit]').css('background-color','#4194FF') | |||
} | |||
}) | |||
//Colocar classe active no tier ativo | |||
$('.radios label').click(function(){ | |||
if($(barra).hasClass("darkmode-ativo")){ | |||
$('.radios label').removeClass('active'); | |||
$(this).addClass('active'); | |||
$('.radios label.active').css('border-color','white') | |||
} | |||
else{ | |||
$('.radios label').removeClass('active'); | |||
$(this).addClass('active'); | |||
$('.radios label.active').css('border-color','rgb(94, 93, 93)') | |||
} | |||
}) | |||
//Dinamiza o background conforme o tier muda | |||
/* | |||
$('input[type=radio]').click(function(){ | |||
var body = $('body') | |||
if ($('#tier1').is(":checked")){ | |||
body.css('background-color','rgba(132, 255, 255, 0.5)') | |||
} | |||
if ($('#tier2').is(":checked")){ | |||
body.css('background-color','rgba(255, 229, 127, 0.5)') | |||
} | |||
if ($('#tier3').is(":checked")){ | |||
body.css('background-color','rgba(173, 168, 168, 0.5)') | |||
} | |||
if ($('#tier4').is(":checked")){ | |||
body.css('background-color','rgba(133, 119, 89, 0.5)') | |||
} | |||
}) | |||
*/ | |||
//Funções de verificação | |||
function verificaLevel(levelAtual){ | |||
if(levelAtual == ''){ | |||
return false | |||
} | |||
levelAtual = parseInt(levelAtual) | |||
if(levelAtual > levelMaximo || levelAtual <= 0){ | |||
return false | |||
} | |||
} | |||
function verificaLevelDeseja(lvlDeseja){ | |||
if(lvlDeseja == ''){ | |||
return false | |||
} | |||
lvlDeseja = parseInt(lvlDeseja) | |||
if(lvlDeseja > levelMaximo || lvlDeseja <= 0 || lvlDeseja <= parseInt($('input[name=levelAtual]').val())){ | |||
return false | |||
} | |||
} | |||
function verificaPorcentoFalta(porcentoFalta){ | |||
if(porcentoFalta == ''){ | |||
return false | |||
} | |||
porcentoFalta = parseInt(porcentoFalta) | |||
if(porcentoFalta > 100 || porcentoFalta <= 0){ | |||
return false | |||
} | |||
} | |||
//Funções de estilização | |||
function aplicarCampoInvalido(el){ | |||
el.css('border','2px solid red') | |||
return false | |||
} | |||
function resetarCampoInvalido(el){ | |||
el.css('border','1px solid #ccc') | |||
} | |||
$('input[name=levelAtual]').focus(function(){ | |||
resetarCampoInvalido($(this)) | |||
}) | |||
$('input[name=lvlDeseja]').focus(function(){ | |||
resetarCampoInvalido($(this)) | |||
}) | |||
$('input[name=porcentoFalta]').focus(function(){ | |||
resetarCampoInvalido($(this)) | |||
}) | |||
function elementoFocado(el){ | |||
el.css('border','1px solid #3394CE') | |||
} | |||
function elementoDesfocado(el) { | |||
el.css('border','1px solid #7e7e7e') | |||
} | |||
$('input[type=number]').focus(function(){ | |||
elementoFocado($(this)) | |||
}) | |||
$('input[type=number]').blur(function(){ | |||
elementoDesfocado($(this)) | |||
}) | |||
$('form').submit(function(e){ | |||
e.preventDefault() | |||
//Verifica se os dados passados estão corretos | |||
if(verificaLevel($('input[name=levelAtual]').val()) == false){ | |||
aplicarCampoInvalido($('input[name=levelAtual]')) | |||
} | |||
if(verificaPorcentoFalta($('input[name=porcentoFalta]').val()) == false){ | |||
aplicarCampoInvalido($('input[name=porcentoFalta]')) | |||
} | |||
if(verificaLevelDeseja($('input[name=lvlDeseja]').val()) == false){ | |||
aplicarCampoInvalido($('input[name=lvlDeseja]')) | |||
} | |||
//Pega o valor do tier | |||
if ($('#tier1').is(":checked")){ | |||
var tier = parseFloat($('#tier1').val()) | |||
}else if ($('#tier2').is(":checked")){ | |||
var tier = parseInt($('#tier2').val()) | |||
}else if ($('#tier3').is(":checked")){ | |||
var tier = parseInt($('#tier3').val()) | |||
}else if ($('#tier4').is(":checked")){ | |||
var tier = parseInt($('#tier4').val()) | |||
} | |||
if(tier == undefined){ | |||
return false | |||
} | |||
//Pega os dados e transforma em variaveis | |||
var levelAtual = parseInt($('input[name=levelAtual]').val()) | |||
var porcentoFalta = parseInt($('input[name=porcentoFalta]').val()) | |||
var lvlDeseja = parseInt($('input[name=lvlDeseja]').val()) | |||
var potP = $('input[name=potP]').val() | |||
var potM = $('input[name=potM]').val() | |||
var potG = $('input[name=potG]').val() | |||
var xpTem = 100 - porcentoFalta //Xp atual (%) que ele tem agora, será usada depois pra ficar mais precisa a variavel xp | |||
var box = $('#box') | |||
//Caso o usúario deixe as poções vazias o sistema interpreta que ele queria deixar como 0 caso não tenha feito isso ele pega o valor deixado pelo usúario | |||
if(potP == '' || potP < 0){ | |||
potP = 0 | |||
}else{ | |||
potP = parseInt($('input[name=potP]').val()) | |||
} | |||
if(potM == '' || potM < 0){ | |||
potM = 0 | |||
}else{ | |||
potM = parseInt($('input[name=potM]').val()) | |||
} | |||
if(potG == '' || potG < 0){ | |||
potG = 0 | |||
}else{ | |||
potG = parseInt($('input[name=potG]').val()) | |||
} | |||
//Pega o valor da xp atual dele por meio de uma formula | |||
var xp = ((50 * ((levelAtual - 1) ** 3) - 150 * ((levelAtual - 1) ** 2) + 400 * (levelAtual - 1)) / 3) + ((50 * levelAtual ** 2 - 150 * levelAtual + 200) * xpTem / 100) | |||
//Pega a xp que ele precisa ter para chegar no level desejado | |||
var xpDesejada = (50 * ((lvlDeseja - 1) ** 3) - 150 * ((lvlDeseja - 1) ** 2) + 400 * (lvlDeseja - 1)) / 3 | |||
console.log(xpDesejada) | |||
//A xp que falta para ele ir da xp atual para a xp desejada | |||
var xpFaltante = Math.round((xpDesejada - xp) - ((potP * (1000 * tier)) + (potM * (10000 * tier)) + (potG * (100000 * tier)))) | |||
//Pega quantas poções ele precisa usar com base no tier e na xp que falta | |||
var potPFalta = Math.ceil((xpFaltante / (1000 * tier))) | |||
var potMFalta = (xpFaltante / (10000 * tier)).toFixed(1) | |||
var potGFalta = (xpFaltante / (100000 * tier)).toFixed(2) | |||
//Usado pra verificar se precisa-se colocar o excedente de poções ou não | |||
potPFalta = potPFalta.toString() | |||
console.log(potPFalta.lastIndexOf('0')) | |||
console.log(potPFalta.lastIndexOf('0') + 1) | |||
console.log(potPFalta.length) | |||
//Se tiver zero e esse zero tiver no final ele informa que n haverá excedente de poção pequena | |||
if((potPFalta.indexOf('0') != -1) && potPFalta.lastIndexOf('0') + 1 == potPFalta.length){ | |||
var potPFaltaExcedeu = 0 | |||
potPFalta = parseInt(potPFalta) | |||
potMFalta = parseFloat(potMFalta) | |||
potMFalta = Math.ceil(potMFalta) | |||
var notPotPFaltaExcedeu = true | |||
}else{ | |||
potPFalta = parseInt(potPFalta) | |||
potMFalta = Math.floor(potMFalta) | |||
var potPFaltaExcedeu = potPFalta - potMFalta * 10 | |||
} | |||
potMFalta = potMFalta.toString() | |||
if((potMFalta.indexOf('0') != -1) && potMFalta.lastIndexOf('0') + 1 == potMFalta.length){ | |||
potMFaltaExcedeu = 0 | |||
potMFalta = parseFloat(potMFalta) | |||
potMFalta = Math.ceil(potMFalta) | |||
potGFalta = Math.floor(potGFalta) | |||
var notPotMFaltaExcedeu = true | |||
} | |||
else{ | |||
potGFalta = Math.floor(potGFalta) | |||
var potMFaltaExcedeu = potMFalta - potGFalta * 10 | |||
} | |||
if(potPFalta > 1){ | |||
var potPFaltaStr = 'poções pequenas' | |||
}else{ | |||
var potPFaltaStr = 'poção pequena' | |||
} | |||
if(potMFalta > 1){ | |||
var potMFaltaStr = 'poções médias' | |||
}else{ | |||
var potMFaltaStr = 'poção média' | |||
} | |||
if(potGFalta > 1){ | |||
var potGFaltaStr = 'poções grandes' | |||
}else{ | |||
var potGFaltaStr = 'poção grande' | |||
} | |||
//Pega com base nas poções que ele gastou quanta xp ele ganhou | |||
var xpGanhou = (xp + ((potP * 1000 * tier) + (potM * 10000 * tier) + (potG * 100000 * tier))) | |||
//vai ocorrer um laço 70 vezes para ver em qual lvl o xpGanhou se encaixa | |||
for(var c = 0; c <= levelMaximo; c++){ | |||
/*Formula pra saber o level que chegou com base na xp que ganhou, se a xp que ganhou for maior que a xp de um certo level esse certo level "c" é o level que ele conseguio */ | |||
if(xpGanhou >= (50 * ((c - 1) ** 3) - 150 * ((c - 1) ** 2) + 400 * (c - 1)) / 3){ | |||
var levelConseguiu = c | |||
xpGanhou = xpGanhou | |||
/*Agora se a xp ganhou for maior ou igual a xp do level que ele conseguio vai criar um variavel xptonext*/ | |||
} | |||
} | |||
//xptonext é o valor da xp que falta para o príximo level chego nesse resultado fazendo a seguinte formula: | |||
var xptonext = (50 * (levelConseguiu) ** 2 - 150 * (levelConseguiu) + 200) - (xpGanhou - (50 * ((levelConseguiu - 1) ** 3) - 150 * ((levelConseguiu - 1) ** 2) + 400 * (levelConseguiu - 1)) / 3) | |||
//falttonext é a xp que falta do level que ele chegou para o próximo (valor como se fosse 100% de xp para upar) | |||
var falttonext = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) | |||
for(var n = 1; n <= 100; n++){ | |||
//Ele testa o xp de cada porcentagem ou seja quando n for 1 ele pega o xp de 1% do levelConseguiu e coloca na variavel resultado, caso resultado for menor ou igual ao xptonext, ou seja, quando ele chegar na porcentagem que mostra a porcentagem que falta para o próximo level a variavel porcento será n | |||
var resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * n / 100 | |||
if(xptonext >= resultado){ | |||
var porcento = n | |||
resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * n / 100 | |||
//Caso o xptonext seja muito baixo ele vai colocar porcento como 1% | |||
}else if(((50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * 1 / 100) >= xptonext){ | |||
resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * 1 / 100 | |||
var porcento = 1 | |||
} | |||
} | |||
if(porcentoFalta && levelAtual != undefined && lvlDeseja != undefined && potP != undefined && potM != undefined && potG != undefined){ | |||
if(verificaLevelDeseja($('input[name=lvlDeseja]').val()) == undefined && verificaPorcentoFalta($('input[name=porcentoFalta]').val()) == undefined && verificaLevel($('input[name=levelAtual]').val()) == undefined){ | |||
box.fadeOut() | |||
$(box).empty(); | |||
$(box).fadeIn(); | |||
if(levelConseguiu == levelMaximo){ | |||
box.append('<h2 class="h2-max">Você chegou ao level '+ levelMaximo +'!'+'</h2>') | |||
} | |||
else if(levelConseguiu == levelAtual || levelConseguiu < lvlDeseja){ | |||
if(levelConseguiu == levelAtual){ | |||
if(potMFalta >= 1 || potGFalta >= 1){ | |||
box.append('Você não upou nenhum level e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções, você pode escolher entre:') | |||
}else{ | |||
box.append('Você não upou nenhum level e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções pequenas:') | |||
} | |||
} | |||
else if(levelConseguiu < lvlDeseja){ | |||
if(potMFalta >= 1 || potGFalta >= 1){ | |||
box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções, você pode escolher entre:') | |||
}else{ | |||
box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções pequenas:') | |||
} | |||
} | |||
box.append("<p style=\"text-align: center\">(Os valores abaixo são aproximados)</p>") | |||
if(potMFalta >= 1 & potGFalta >= 1){ | |||
if(notPotMFaltaExcedeu == true && notPotPFaltaExcedeu == true){ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+'</p></div></div>') | |||
} | |||
else if(notPotMFaltaExcedeu == true){ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>') | |||
}else if(notPotPFaltaExcedeu == true){ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+' e'+'<img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFaltaExcedeu+' '+potMFaltaStr+'</p></div></div>') | |||
}else{ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+ potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+'<img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFaltaExcedeu+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>') | |||
} | |||
} | |||
else if(potMFalta >= 1){ | |||
if(notPotPFaltaExcedeu == true){ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div></div>') | |||
}else{ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>') | |||
} | |||
}else{ | |||
box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' '+potPFaltaStr+'</p></div></div>') | |||
} | |||
} | |||
else if(levelConseguiu >= lvlDeseja){ | |||
box.css('text-align','center') | |||
box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level!') | |||
} | |||
} | |||
} | |||
}) | |||
}) |
Edição das 00h50min de 19 de agosto de 2021
$(function () { var myElement = document.getElementById('mw-calculator'); myElement.innerHTML = 'any HTML'; }());{ const levelMaximo = 100 //Dark mode var circulo = $('.toggle-dark-mode .circle-toggle') var barra = $('.toggle-dark-mode') $(barra).click(function(){ if($(barra).hasClass("darkmode-ativo")){ $(barra).removeClass('darkmode-ativo') $('html').css('background-color','rgba(226, 225, 225, 0.7)') circulo.animate({'left':'0'}) $('.tier').css('color','black') $('.radios label.active').css('border-color','rgb(94, 93, 93)') $('.informacoes-box').css('background-color','rgb(241, 241, 241)').css('border','1px solid black') $('.informacoes-box .getinf').css('color','black') $('.informacoes-box input[type=number]').css('border-color','rgb(126, 126, 126)') $('.container > h2').css('color','#3394CE') $('.box-up h2').css('color','#3394CE') $('.box-up:not(h2)').css('color','black') } else{ $(barra).addClass('darkmode-ativo') $('html').css('background-color','#18191A') circulo.animate({'left':'40px'}) $('.tier').css('color','white') $('.radios label.active').css('border-color','white') $('.informacoes-box').css('background-color','#242526').css('border','none') $('.informacoes-box .getinf').css('color','white') $('.informacoes-box input[type=number]').css('border-color','#18191A') $('.container > h2').css('color','#4194FF') $('.box-up h2').css('color','#4194FF') $('.box-up:not(h2)').css('color','white') $('.w100 input[type=submit]').css('background-color','#4194FF') } }) //Colocar classe active no tier ativo $('.radios label').click(function(){ if($(barra).hasClass("darkmode-ativo")){ $('.radios label').removeClass('active'); $(this).addClass('active'); $('.radios label.active').css('border-color','white') } else{ $('.radios label').removeClass('active'); $(this).addClass('active'); $('.radios label.active').css('border-color','rgb(94, 93, 93)') } }) //Dinamiza o background conforme o tier muda /* $('input[type=radio]').click(function(){ var body = $('body') if ($('#tier1').is(":checked")){ body.css('background-color','rgba(132, 255, 255, 0.5)') } if ($('#tier2').is(":checked")){ body.css('background-color','rgba(255, 229, 127, 0.5)') } if ($('#tier3').is(":checked")){ body.css('background-color','rgba(173, 168, 168, 0.5)') } if ($('#tier4').is(":checked")){ body.css('background-color','rgba(133, 119, 89, 0.5)') } }) */ //Funções de verificação function verificaLevel(levelAtual){ if(levelAtual == ''){ return false } levelAtual = parseInt(levelAtual) if(levelAtual > levelMaximo || levelAtual <= 0){ return false } } function verificaLevelDeseja(lvlDeseja){ if(lvlDeseja == ''){ return false } lvlDeseja = parseInt(lvlDeseja) if(lvlDeseja > levelMaximo || lvlDeseja <= 0 || lvlDeseja <= parseInt($('input[name=levelAtual]').val())){ return false } } function verificaPorcentoFalta(porcentoFalta){ if(porcentoFalta == ''){ return false } porcentoFalta = parseInt(porcentoFalta) if(porcentoFalta > 100 || porcentoFalta <= 0){ return false } } //Funções de estilização function aplicarCampoInvalido(el){ el.css('border','2px solid red') return false } function resetarCampoInvalido(el){ el.css('border','1px solid #ccc') } $('input[name=levelAtual]').focus(function(){ resetarCampoInvalido($(this)) }) $('input[name=lvlDeseja]').focus(function(){ resetarCampoInvalido($(this)) }) $('input[name=porcentoFalta]').focus(function(){ resetarCampoInvalido($(this)) }) function elementoFocado(el){ el.css('border','1px solid #3394CE') } function elementoDesfocado(el) { el.css('border','1px solid #7e7e7e') } $('input[type=number]').focus(function(){ elementoFocado($(this)) }) $('input[type=number]').blur(function(){ elementoDesfocado($(this)) }) $('form').submit(function(e){ e.preventDefault() //Verifica se os dados passados estão corretos if(verificaLevel($('input[name=levelAtual]').val()) == false){ aplicarCampoInvalido($('input[name=levelAtual]')) } if(verificaPorcentoFalta($('input[name=porcentoFalta]').val()) == false){ aplicarCampoInvalido($('input[name=porcentoFalta]')) } if(verificaLevelDeseja($('input[name=lvlDeseja]').val()) == false){ aplicarCampoInvalido($('input[name=lvlDeseja]')) } //Pega o valor do tier if ($('#tier1').is(":checked")){ var tier = parseFloat($('#tier1').val()) }else if ($('#tier2').is(":checked")){ var tier = parseInt($('#tier2').val()) }else if ($('#tier3').is(":checked")){ var tier = parseInt($('#tier3').val()) }else if ($('#tier4').is(":checked")){ var tier = parseInt($('#tier4').val()) } if(tier == undefined){ return false } //Pega os dados e transforma em variaveis var levelAtual = parseInt($('input[name=levelAtual]').val()) var porcentoFalta = parseInt($('input[name=porcentoFalta]').val()) var lvlDeseja = parseInt($('input[name=lvlDeseja]').val()) var potP = $('input[name=potP]').val() var potM = $('input[name=potM]').val() var potG = $('input[name=potG]').val() var xpTem = 100 - porcentoFalta //Xp atual (%) que ele tem agora, será usada depois pra ficar mais precisa a variavel xp var box = $('#box') //Caso o usúario deixe as poções vazias o sistema interpreta que ele queria deixar como 0 caso não tenha feito isso ele pega o valor deixado pelo usúario if(potP == '' || potP < 0){ potP = 0 }else{ potP = parseInt($('input[name=potP]').val()) } if(potM == '' || potM < 0){ potM = 0 }else{ potM = parseInt($('input[name=potM]').val()) } if(potG == '' || potG < 0){ potG = 0 }else{ potG = parseInt($('input[name=potG]').val()) } //Pega o valor da xp atual dele por meio de uma formula var xp = ((50 * ((levelAtual - 1) ** 3) - 150 * ((levelAtual - 1) ** 2) + 400 * (levelAtual - 1)) / 3) + ((50 * levelAtual ** 2 - 150 * levelAtual + 200) * xpTem / 100) //Pega a xp que ele precisa ter para chegar no level desejado var xpDesejada = (50 * ((lvlDeseja - 1) ** 3) - 150 * ((lvlDeseja - 1) ** 2) + 400 * (lvlDeseja - 1)) / 3 console.log(xpDesejada) //A xp que falta para ele ir da xp atual para a xp desejada var xpFaltante = Math.round((xpDesejada - xp) - ((potP * (1000 * tier)) + (potM * (10000 * tier)) + (potG * (100000 * tier)))) //Pega quantas poções ele precisa usar com base no tier e na xp que falta var potPFalta = Math.ceil((xpFaltante / (1000 * tier))) var potMFalta = (xpFaltante / (10000 * tier)).toFixed(1) var potGFalta = (xpFaltante / (100000 * tier)).toFixed(2) //Usado pra verificar se precisa-se colocar o excedente de poções ou não potPFalta = potPFalta.toString() console.log(potPFalta.lastIndexOf('0')) console.log(potPFalta.lastIndexOf('0') + 1) console.log(potPFalta.length) //Se tiver zero e esse zero tiver no final ele informa que n haverá excedente de poção pequena if((potPFalta.indexOf('0') != -1) && potPFalta.lastIndexOf('0') + 1 == potPFalta.length){ var potPFaltaExcedeu = 0 potPFalta = parseInt(potPFalta) potMFalta = parseFloat(potMFalta) potMFalta = Math.ceil(potMFalta) var notPotPFaltaExcedeu = true }else{ potPFalta = parseInt(potPFalta) potMFalta = Math.floor(potMFalta) var potPFaltaExcedeu = potPFalta - potMFalta * 10 } potMFalta = potMFalta.toString() if((potMFalta.indexOf('0') != -1) && potMFalta.lastIndexOf('0') + 1 == potMFalta.length){ potMFaltaExcedeu = 0 potMFalta = parseFloat(potMFalta) potMFalta = Math.ceil(potMFalta) potGFalta = Math.floor(potGFalta) var notPotMFaltaExcedeu = true } else{ potGFalta = Math.floor(potGFalta) var potMFaltaExcedeu = potMFalta - potGFalta * 10 } if(potPFalta > 1){ var potPFaltaStr = 'poções pequenas' }else{ var potPFaltaStr = 'poção pequena' } if(potMFalta > 1){ var potMFaltaStr = 'poções médias' }else{ var potMFaltaStr = 'poção média' } if(potGFalta > 1){ var potGFaltaStr = 'poções grandes' }else{ var potGFaltaStr = 'poção grande' } //Pega com base nas poções que ele gastou quanta xp ele ganhou var xpGanhou = (xp + ((potP * 1000 * tier) + (potM * 10000 * tier) + (potG * 100000 * tier))) //vai ocorrer um laço 70 vezes para ver em qual lvl o xpGanhou se encaixa for(var c = 0; c <= levelMaximo; c++){ /*Formula pra saber o level que chegou com base na xp que ganhou, se a xp que ganhou for maior que a xp de um certo level esse certo level "c" é o level que ele conseguio */ if(xpGanhou >= (50 * ((c - 1) ** 3) - 150 * ((c - 1) ** 2) + 400 * (c - 1)) / 3){ var levelConseguiu = c xpGanhou = xpGanhou /*Agora se a xp ganhou for maior ou igual a xp do level que ele conseguio vai criar um variavel xptonext*/ } } //xptonext é o valor da xp que falta para o príximo level chego nesse resultado fazendo a seguinte formula: var xptonext = (50 * (levelConseguiu) ** 2 - 150 * (levelConseguiu) + 200) - (xpGanhou - (50 * ((levelConseguiu - 1) ** 3) - 150 * ((levelConseguiu - 1) ** 2) + 400 * (levelConseguiu - 1)) / 3) //falttonext é a xp que falta do level que ele chegou para o próximo (valor como se fosse 100% de xp para upar) var falttonext = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) for(var n = 1; n <= 100; n++){ //Ele testa o xp de cada porcentagem ou seja quando n for 1 ele pega o xp de 1% do levelConseguiu e coloca na variavel resultado, caso resultado for menor ou igual ao xptonext, ou seja, quando ele chegar na porcentagem que mostra a porcentagem que falta para o próximo level a variavel porcento será n var resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * n / 100 if(xptonext >= resultado){ var porcento = n resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * n / 100 //Caso o xptonext seja muito baixo ele vai colocar porcento como 1% }else if(((50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * 1 / 100) >= xptonext){ resultado = (50 * levelConseguiu ** 2 - 150 * levelConseguiu + 200) * 1 / 100 var porcento = 1 } } if(porcentoFalta && levelAtual != undefined && lvlDeseja != undefined && potP != undefined && potM != undefined && potG != undefined){ if(verificaLevelDeseja($('input[name=lvlDeseja]').val()) == undefined && verificaPorcentoFalta($('input[name=porcentoFalta]').val()) == undefined && verificaLevel($('input[name=levelAtual]').val()) == undefined){ box.fadeOut() $(box).empty(); $(box).fadeIn(); if(levelConseguiu == levelMaximo){ box.append('<h2 class="h2-max">Você chegou ao level '+ levelMaximo +'!'+'</h2>') } else if(levelConseguiu == levelAtual || levelConseguiu < lvlDeseja){ if(levelConseguiu == levelAtual){ if(potMFalta >= 1 || potGFalta >= 1){ box.append('Você não upou nenhum level e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções, você pode escolher entre:') }else{ box.append('Você não upou nenhum level e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções pequenas:') } } else if(levelConseguiu < lvlDeseja){ if(potMFalta >= 1 || potGFalta >= 1){ box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções, você pode escolher entre:') }else{ box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level, porém se quiser chegar ao '+lvlDeseja+' você precisa utilizar algumas poções pequenas:') } } box.append("<p style=\"text-align: center\">(Os valores abaixo são aproximados)</p>") if(potMFalta >= 1 & potGFalta >= 1){ if(notPotMFaltaExcedeu == true && notPotPFaltaExcedeu == true){ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+'</p></div></div>') } else if(notPotMFaltaExcedeu == true){ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>') }else if(notPotPFaltaExcedeu == true){ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+' e'+'<img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFaltaExcedeu+' '+potMFaltaStr+'</p></div></div>') }else{ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+ potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div>'+'<div class="pocao-grande">'+'<p><img src="imagens/potG-C.png" alt="Poção grande" title="Poção Grande">'+potGFalta+' '+potGFaltaStr+'<img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFaltaExcedeu+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>') } } else if(potMFalta >= 1){ if(notPotPFaltaExcedeu == true){ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+'</p></div></div>') }else{ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' poções pequenas'+'</p></div>'+'<div class="pocao-media">'+'<p><img src="imagens/potM-C.png" alt="Poção média" title="Poção Média">'+potMFalta+' '+potMFaltaStr+' e'+'<img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFaltaExcedeu+' poções pequenas'+'</p></div></div>') } }else{ box.append('<div><div class="pocao-pequena">'+'<p><img src="imagens/potP-C.png" alt="Poção pequena" title="Poção Pequena">'+potPFalta+' '+potPFaltaStr+'</p></div></div>') } } else if(levelConseguiu >= lvlDeseja){ box.css('text-align','center') box.append('<h2>Você Upou!</h2>'+'Você chegou ao level '+levelConseguiu+' e faltam '+porcento+'% para o próximo level!') } } } }) })