感谢您提供的任何帮助。
如果我们有:
$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1; //GET LEVEL
例如:
$c_xp = 1200
然后:
$level = 4
然后我问是否:
$level = 4
达到5级需要多少xp?
如何获得达到下一级所需的xp数量?
答案 0 :(得分:2)
获得达到$ level级别所需的最小XP的公式由下式给出:
$minXP = 12.5 * (pow((2 * $level + 3), 2) - 41);
所以你可以设置$ level = 5和$ level = 4并找出它们之间的差异。
答案 1 :(得分:1)
我运行了一个脚本来查看每个级别所需的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是一个例外,然后XP从级别2到级别3的差异是400,从级别3到级别4:500和级别4到级别5:600等等...... 现在模式很清楚,
等级1 - &gt; 1 XP
等级2 - &gt;启动100 XP
等级3 - &gt;增加400(500 XP)
等级4 - &gt;增加(400 + 100)1000XP
等级5到等级X - &gt;继续增加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
答案 2 :(得分:0)
使用您选择的数学/公式绘图工具来了解所使用的公式的结果(可能不是您的公式):
现在,甚至可能有一种方法可以改变将y
翻译成x
的公式。但我不确定是否有floor
反转。