Система уровней PHP? - PullRequest
       6

Система уровней PHP?

2 голосов
/ 05 сентября 2011

Я попытался создать систему уровней для своих пользователей в php.Пока у меня есть только таблица mysql из ...

 id / xp (default 0) / xp_needed (default 5) / level (default 1)

У меня на панели пользователя есть панель, показывающая, сколько нужно xp, $ details - это массив столбцов таблицы mysql.

$xp_needed = ($details['xp'] / $details ['xp_needed']) * 100;

echo'<p>XP Needed:</p><div class="bar Tooltip" title="' . $details['xp'] . '/' . 
$details['xp_needed'] . '"><span style="width: ' . $xp_needed . '%;"></span></div>';

Что я не могу понять, так это функция проверки, превышает ли xp необходимый xp и, если это так, обновляет уровень до следующего целого числа, обновляя необходимый xp до 5 * уровня и переносясверх остатка, если любой из xp_needed к новому xp_needed?

Спасибо за ваше терпение

Ответы [ 4 ]

3 голосов
/ 05 сентября 2011

Напишите функцию xpIncrease($amount) и вызывайте ее везде, где вы увеличиваете xp пользователя.

должно быть так:

function xpIncrease($amount) {
if ($amount>=$details['xp_needed']) {
    $amount-=$details['xp_needed'];
    $details['xp_needed']=$newValue; //user leveled up, update xp_needed
    xpIcrease($amount); //call it again because user may level up twice or more...
} else {
    //just add it with SQL
}
}
1 голос
/ 25 ноября 2012

Я сделал так, как я ..

        <?php
    $level_up = ($level + 1);
if ($exp >= $max_exp)
    {
    $sql = "UPDATE users SET level=(level + 1) , max_exp=(exp * 1.05) , skill_points=(skill_points + 3) WHERE id='".$id."' LIMIT 1";
    $res = mysql_query($sql);
if ($exp >= $max_exp)
        echo '<div class="Leveled">' . 'You sucessfully leveled up to ' . $level_up . '!' . ' As a reward you were given 3 skill points!' . '</div>';
    }
    else
    {
    } 
    ?>
0 голосов
/ 05 апреля 2019

Это так же просто, как:

while(currentExp >= expNeededNextLevel) {
currentExp -= expNeededNextLevel
levelUp();
}
0 голосов
/ 08 января 2018

Каждый раз, когда experience получает больше, чем experienceneeded, человек поднимается до уровня, затем устанавливает experienceneeded * 1,2:

<?php include 'Style/database.php'; ?>
<?php include 'Style/functions.php'; ?>
    <?php   include'logged_in.php'; ?>      
<?php $randomnummer=rand(0,100); ?>

<?php   $sql = "SELECT * FROM users WHERE id = '$users[id]' LIMIT 1"; 
    if ($result = $mysqli->query($sql)) {$user = $result->fetch_array();} ?>



<?php if(isset($_POST['train']))
      { $msg="You are training!<br>" ;
$allowed = mysqli_query($mysqli," UPDATE users SET experience = experience+$randomnummer WHERE username = '$users[username]' ");
$level_up = mysqli_query($mysqli," UPDATE users SET experience = experience-experienceneeded ,level=level+1 WHERE username = 

$users[username]' ");


if ($users['experience'] >= $users['experienceneeded'])
{
$res = mysqli_query($mysqli,"UPDATE   users SET level = (level + 1) WHERE    id = '$users[id]' LIMIT    1");
$res = mysqli_query($mysqli,"UPDATE   users SET experienceneeded = experienceneeded * 1.2 WHERE    id = '$users[id]'LIMIT    1");
$res = mysqli_query($mysqli,"UPDATE   users SET credit = credit + 3  WHERE    id = '$users[id]'LIMIT    1");
           }
    if ($users['experience'] >= $users['experienceneeded'])
    { echo      '<div class="Leveled">'.
            'You sucessfully leveled up to '
            . $level_up . '!'.
             ' As a reward you were given 3 credit points!'
                    .'</div>';}}
 ?>


<div class="content">
<center>

<form method="post" action="user_train.php">
<?php echo "$msg" ; ?>
    <button type="submit" name="train" id="train">train for <?php echo $users['username'] ; ?></button>
</form></center>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...