I’m making a leveling system based on experience you have on the site. I already have all the experience stuff figured out, and how I want to do the leveling, but I need a more efficient way to do it. I know this would probably would be achieved using an array, but I don’t really know how to go about doing that. Enough blabbering, though, this is what I’m trying to do…
Level 1 will be anything under 150 experience
Then I’m going to multiply that by 1.5, so
Level 2 will be anything under 225
Level 3 will be anything under 337.5 and so on. This is the inefficient way that I was going to do.
if($xp < 150){
$level = "1";
}elseif($xp < 225){
$level = "2";
}elseif($xp < 337.5){
$level = "3";
}
I could use a variable for the number and multiple by 1.5 ($number*1.5), but like I said before I don’t really know how that’d work.
*Some more info..
I have a session file included on every page and I have queries that would check every time there is new experience earned and this code would be used to update the level on the database automatically.
Try
That takes the logarithm base 1.5 of xp/100 (i.e. the number of times you’d have to multiply 100 by to get $xp), then adds one (since log($x, 1.5) is less than one if $x is less than 1.5). The
min(max(..., minLevel), maxLevel)construct lets you clamp the level to lie between 1 and$maxLevel, also avoiding any issues with negative levels (if$xpis sufficiently less than 150).