xTrovaox 0 Denunciar post Postado Julho 11, 2011 Pessoal queria uma ajuda de vocês para fazer uma soma. É o seguinte eu tenho um rpg de site, e preciso fazer uma soma de Exp ganha para o char ganhar level. Funciona da seguinte forma: existem 2 campos na tabela, Exp e MaxExp. No momento em que eu realizar uma missão e finaliza-la, eu ganho mais Exp. Quando o Exp chega no mesmo valor que o MaxExp eu ganho 1 level e o Exp volta a 0 e o MaxExp aumenta + 200. Exemplo: Meu char está com 0 level, 0 pontos em Exp, e 900 pontos em MaxExp. Realizo uma missão onde ganho 1000 pontos em Exp, na hora que eu finalizar ele vai fazer uma soma entre o Exp que eu ganhei menos o valor do meu MaxExp, se for menor nao vou subir de level pois tenho que chegar até 900, se for igual ($expganho = 900; $MaxExp = 900; $Soma = $expganho - $MaxExp = 0) ele vai subir um level, zerar o Exp e me adicionar mais 200 pts em MaxExp. Se for maior que o MaxExp ($expganho = 1000; $MaxExp = 900; $Soma = $expganho - $MaxExp = 100) ele tem que me adicionar 100 pontos em exp, pois eu consegui mais pts do que meu MaxExp, então ele vai ser tipo meu troco, ai vou ganhar 1 level e o MaxExp vai subir 200 pts. O problema é o seguinte: Quando possuo 5000 em Exp, e 6000 em MaxExp e vou la e ganho mais 10000 em Exp, ele teria que fazer a soma $expganho = 15000; $MaxExp = 6000; $Soma = $expganho - $MaxExp; Ele me retornaria 9000, esse valor eu teria que adicionar em Exp, mas não pode porquê eu iria ganhar + 200 em MaxExp, e ficaria com 6200, e o Exp seria de 9000, sendo que o MaxExp sempre tem q ser maior, nesse caso ele teria que pegar o 9000 e somar menos 6200, (ai eu subiria mais 1 level), ele me retornaria 2800, e eu ganharia mais 200 em MaxExp. O problema é que meu código faz só uma conta, e o certo seria ele fazer as contas de menos até ele retornar o Exp menor que o MaxExp. Compartilhar este post Link para o post Compartilhar em outros sites
Deleu 0 Denunciar post Postado Julho 11, 2011 <?php /** * @calculaExp * Recebe a quantidade total de experiência que o usuário possiu e a quantidade necessária * para evoluir e retorna quantos leveis deverão ser upados. * * @param Exp int - Experiência do Jogador * @param MaxExp int - Experiência necessária para evoluir. * @return Obj Array - ['level'] Quantidade de leveis upados. * ['Exp'] Quantidade restante de Exp. * ['MaxExp'] Próximo MaxExp */ public function calculaExp($Exp, $MaxExp){ $contador = 0; while($Exp > $MaxExp){ $Exp -= $MaxExp; $MaxExp += 200; $contador++; } $Obj = array(); $Obj['level'] = $contador; $Obj['Exp'] = $Exp; $Obj['MaxExp'] = $MaxExp; return $contador; } ?> Não sei como está seu código, mas talvez você queira dar uma olhada no conceito de recursividade também. Compartilhar este post Link para o post Compartilhar em outros sites
Dropes 0 Denunciar post Postado Julho 11, 2011 Opa amigo voce sabe algo sobre programaçao ?? Pelo que eu entendi voce tera que fazer uma "tabela com os valores e os lvls" pegar essa informaçao e e fazer um while exemplo $lvl // aqui o lvl que voce ta $exp // aqui a exp que voce ganho $exp_lvl//aqui e a exp para o proximo lvl //enquanto exp maior que exp_lvl faça while($exp > $exp_lvl){ //exp recebe exp - exp_lvl $exp = $exp - $exp_lvl ; //lvl ganha lvl + 1 $lvl = $lvl + 1; } espero ter ajudado mais alguma duvida e so perguntar Compartilhar este post Link para o post Compartilhar em outros sites
xTrovaox 0 Denunciar post Postado Julho 12, 2011 Muito obrigado pessoal, deu certo :joia: Vlws mesmo ! Compartilhar este post Link para o post Compartilhar em outros sites