PHP Experience Points (XP) Level System

Last Updated on Friday, 8 July 2011 11:07pm Written by spunky Friday, 8 July 2011 11:05pm

Here’s a fun little snippet that lets you create a XP leveling system similar to World of Warcraft.

*ding!*

function calculateXP($myPoints) {

        $calcStart = 0; // Level 1 Start XP
        $calcEnd = 10;  // Level 1 End XP
        $calcInc = 0;   // Increase by extra how many per level?
        $calcLevel = 6; // Multiply by how many per level? (1- easy / 20- hard)

        /* Calculate Level */
        $myLevel = 0;
        $calcCount = 0;
        do {
                $calcCount = $calcCount+1;
                if ($calcCount % 2 == 0 ) { $calcInc = $calcInc + $calcLevel; }
                if (($myPoints < $calcEnd) && ($myPoints >= $calcStart)) { $myLevel = $calcCount; $myStart = $calcStart; $myEnd = $calcEnd; }
                $calcStart = $calcEnd;
                $calcEnd = $calcEnd + $calcInc;
        } while ($myLevel == 0);
        $myLevel--;

        /* Calculate Percentage to Next Level */
        $myPercent = (($myPoints - $myStart) / ($myEnd - $myStart)) * 100;
        $myPercent = round($myPercent);
        if ($myPercent == 0) { $myPercent = 1; }

        return array('percent'=>$myPercent,'level'=>$myLevel);
}

Please excuse the primitive logic and bad variable naming, this was written many years ago.



1 Comment

  1. Kirk Jones   |  Wednesday, 28 December 2011 at 11:57 am

    Man this is just what I was looking for. Great script dude !

Leave a Reply