感谢您对此提供的任何帮助。
如果我们有:
$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1; //GET LEVEL
例如,如果:
$c_xp = 1200
然后:
$level = 4
然后我问是否:
$level = 4
达到5级需要多少xp?
我怎样才能获得达到下一个级别所需的经验值?
获得达到 $level 所需的最低 XP 的公式由下式给出:
$minXP = 12.5 * (pow((2 * $level + 3), 2) - 41);
所以你可以设置 $level = 5 和 $level = 4 并找出它们之间的区别。
我运行了一个脚本来查看每个级别所需的 XP:
$current_level = 0;
for($c_xp = 1;$c_xp < 7000;$c_xp++){
$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1; //GET LEVEL
if($level > $current_level){
$current_level++;
echo "c_xp $c_xp level $level<br>";
}
}
输出是:
c_xp 1 level 1
c_xp 100 level 2
c_xp 500 level 3
c_xp 1000 level 4
c_xp 1600 level 5
c_xp 2300 level 6
c_xp 3100 level 7
c_xp 4000 level 8
c_xp 5000 level 9
c_xp 6100 level 10
我们可以看到1级是个例外,那么2级到3级的XP差值是400,3级到4级:500,4级到5级:600等等……模式是现在清除,
1级-> 1 XP
2 级-> 开始 100 XP
3 级-> 增加 400 (500 XP)
等级 4 -> 增加 (400 + 100) 1000XP
5级到X级->继续增加100
通过上面的分析,我可以想出一个函数中的循环:
$c_xp = 1200;
$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1;
echo 'Next level: '.current_level_xp($level+1).'<br>';
echo 'XP needed for next Level: '. (current_level_xp($level+1) - $c_xp);
function current_level_xp($current_level){
if($current_level <= 1){
return(1);
}else{
$increase = 400;
$needed = 100;
for($i=0;$i<$current_level-2;$i++){
$needed += $increase;
$increase += 100;
}
return $needed;
}
}
输出:
Next level: 1600
XP needed for next Level: 400
使用您选择的数学/公式绘图工具来了解所用方程的结果(可能不是您的):
现在,甚至可能有一种方法可以将您的公式反转y
为x
. 但我不确定是否有floor
反转。