Cálculo de experiência
Boa tarde turma!
O problema (literalmente, matemático) é o seguinte:
Preciso calcular o incremento de experiência e elevação de níveis num game que estou desenvolvendo.
Já tenho uma função, contudo, no estado atual, ele apenas registra o avanço de um nível por chamada. Daí me deparei com um problema: em momentos será possível subir mais que um level ao adicionar um grande montante de experiência então preciso de ajuda pra melhorar esta função.
Função atual:
function companhiaExperiencia( $companhia = 0, $adicionar = 0 ) { global $_DB, $_MOD;
// coleta
$sql = 'SELECT reg, nivel, nivelExp, nivelProximo FROM '.$_MOD['companhias']['tabela'].' WHERE reg = '.intval($companhia);
$con = $_DB->consulta($sql);
$_companhia = $_DB->registro();
if ( !$adicionar ) return $_companhia;
// variaveis
$novoLevel = false;
$nivel = $_companhia['nivel'];
$nivelExp = $_companhia['nivelExp'] + $adicionar;
$nivelProximo = $_companhia['nivelProximo'];
// atualizacao
if ( $adicionar )
{ if ( $nivelExp >= $_companhia['nivelProximo'] )
{ $nivel++;
$nivelProximo += COMPANHIA_Experiencia_Base + porcentagem($nivelProximo, COMPANHIA_Experiencia_Taxa);
$novoLevel = true;
}
$sql = 'UPDATE '.$_MOD['companhias']['tabela'].' SET nivel = '.$nivel.', nivelExp = '.$nivelExp.', nivelProximo = '.$nivelProximo.' WHERE reg = '.intval($companhia);
$con = $_DB->consulta($sql);
}
return array('nivel' => $nivel, 'nivelExp' => $nivelExp, 'nivelProximo' => $nivelProximo, 'novoLevel' => $novoLevel);
}Estado atual:
Como podem ver, ela apenas registraria um level, para atualizar eu precisaria fazer outra, e mais outra..., camada a função e , claro, não queremos isto. ^^
Alguma ideia para resolver meu problema? Luzes?
Discussão (10)
Carregando comentários...