1

感谢您对此提供的任何帮助。

如果我们有:

$level = floor((-1 + sqrt(1 + 4 * ($c_xp + 500) / 100 * 2)) / 2) - 1; //GET LEVEL

例如,如果:

$c_xp = 1200

然后:

$level = 4

然后我问是否:

$level = 4

达到5级需要多少xp?

我怎样才能获得达到下一个级别所需的经验值?

4

3 回答 3

2

获得达到 $level 所需的最低 XP 的公式由下式给出:

$minXP = 12.5 * (pow((2 * $level + 3), 2) - 41);

所以你可以设置 $level = 5 和 $level = 4 并找出它们之间的区别。

于 2013-04-07T00:35:14.027 回答
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级是个例外,那么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
于 2013-04-07T01:12:02.783 回答
0

使用您选择的数学/公式绘图工具来了解所用方程的结果(可能不是您的):

在此处输入图像描述

现在,甚至可能有一种方法可以将您的公式反转yx. 但我不确定是否有floor反转。

于 2013-04-06T23:41:54.237 回答