Вместо колко остава да е с поле

amarok

Registered
Някой може ли да каже как ще стане вместо да излиза колко EXP остава до докато дигна левел да излиза по следния начин
1284.jpg
и това зеленото като зареди на максимум да дава левел и да започва от начало :lol:

Ето го кода

Код:
<?php
function calc_level($level) {
$levels = array("1" => "250","1000","5000","25000","100000","250000","500000","1000000","2500000","5000000"); // добавяш левелите в един array();
if ($level <= 250) { $result = "Още ".($levels[1] - $level)."xp до ".array_search('250',$levels)."lvl"; } // и тук вече може да промениш резултатите
else if ($level <= 1000) { $result = "Още ".($levels[2] - $level)."xp до ".array_search('1000',$levels)."lvl"; }
else if ($level <= 5000) { $result = "Още ".($levels[3] - $level)."xp до ".array_search('5000',$levels)."lvl"; }
else if ($level <= 25000) { $result = "Още ".($levels[4] - $level)."xp до ".array_search('25000',$levels)."lvl"; }
else if ($level <= 100000) { $result = "Още ".($levels[5] - $level)."xp до ".array_search('100000',$levels)."lvl"; }
else if ($level <= 250000) { $result = "Още ".($levels[6] - $level)."xp до ".array_search('250000',$levels)."lvl"; }
else if ($level <= 500000) { $result = "Още ".($levels[7] - $level)."xp до ".array_search('500000',$levels)."lvl"; }
else if ($level <= 1000000) { $result = "Още ".($levels[8] - $level)."xp до ".array_search('1000000',$levels)."lvl"; }
else if ($level <= 2500000) { $result = "Още ".($levels[9] - $level)."xp до ".array_search('2500000',$levels)."lvl"; }
else if ($level <= 5000000) { $result = "Още ".($levels[10] - $level)."xp до ".array_search('5000000',$levels)."lvl"; }
return $result;
}?>
 
<?php
function calc_level($exp) {
$i = 0;
$levels = array(250,1000,5000,25000,100000,250000,500000,1000000,2500000,5000000);
while ($i<count($levels)) {
if ($exp < $levels[$i]) { $level = array_slice($levels,0,$i+1);return round($exp*100/array_sum($level),2); }
$i++;
}
}
$xp = calc_level(50);
?>
<html>
<head>
<title>Test</title>
</head>
<body style="background:#FF1">
<div style="margin:auto;padding:3px 3px;width:250px;background:#CCC"><div style="background:#1F1;width:<?php echo $xp; ?>%;margin:0"> </div></div>
</body>
</html>
Ето ти код за тест как може най-просто да стане
Промених кода имаше бъгове сега трябва да бачка
 
<?php
function calc_level($exp) {
$i = 0;
$levels = array(250,1000,5000,25000,100000,250000,500000,1000000,2500000,5000000);
while ($i<count($levels)) {
if ($exp < $levels[$i]) { return round(($exp-$levels[$i-1])*100/($levels[$i]-$levels[$i-1]),2); }
$i++;
}
}
$xp = calc_level(125); //1 lvl i 50%
?>
<html>
<head>
<title>Test</title>
</head>
<body style="background:#FF1">
<div style="margin:auto;padding:3px 3px;width:250px;background:#CCC"><div style="background:#1F1;width:<?php echo $xp; ?>%;margin:0"> </div></div>
</body>
</html>
Много съм зле с тея проценти :roll: :roll:
Така би трябвало да стане
 
<?php
$xp = 500;
$levels = array(0,250,1000,5000,25000,100000,250000,500000,1000000,2500000,5000000);
for($lvl=0;$lvl<count($levels);$lvl++)
if($xp>=$levels[$lvl])
$level = $lvl;
$next = $level+1;
$remain = $levels[$next]-$xp;
$percent = round((($xp-$levels[$level])/($levels[$next]-$levels[$level]))*100,2);
$percent_bar = round($percent*2.5);
echo "Текущи точки опит: $xp\n<br />\nТекущо ниво: $level\n<br />\nСледващо ниво: $next\n<br />\nТочки опит до следващо ниво: $remain\n<br />\nПокрито ниво: $percent%\n<div style=\"height: 10px; width: 250px; background: #ededed;\"><div style=\"height: 10px; width: ".$percent_bar."px; background: #f00;\"></div></div>";
?>
ето и ти спестих много код ако решиш да променяш нивата :)
само дето не съм направил функция($експи) а ми направо съм задал променливата... оправи си го :)
 
Да кода е супер но как мога да направя в бара червеното да отива най в ляво и да е дълго например 150px; а не 250 защото като го смаля и цялото става червено и как мога да вкарам вътре в червеното някакъв текст :)
 
amarok каза:
Да кода е супер но как мога да направя в бара червеното да отива най в ляво и да е дълго например 150px; а не 250 защото като го смаля и цялото става червено и как мога да вкарам вътре в червеното някакъв текст :)
<?php
$xp = 500;
$levels = array(0,250,1000,5000,25000,100000,250000,500000,1000000,2500000,5000000);
for($lvl=0;$lvl<count($levels);$lvl++)
if($xp>=$levels[$lvl])
$level = $lvl;
$next = $level+1;
$remain = $levels[$next]-$xp;
$percent = round((($xp-$levels[$level])/($levels[$next]-$levels[$level]))*100,2);
$percent_bar = round($percent*2.5);
echo "Текущи точки опит: $xp\n<br />\nТекущо ниво: $level\n<br />\nСледващо ниво: $next\n<br />\nТочки опит до следващо ниво: $remain\n<br />\nПокрито ниво: $percent%\n<div style="height: 10px; width: 250px; background: #ededed;"><div style="height: 10px; width: ".$percent_bar."px; background: #f00;"></div></div>";
?>
за 150 пиксела трябва да са съответно 1.5 и 150 :)
червеното си е най-обикновен див в който може да си се пише...

и какво искаш да кажеш под това да отиде в ляво... то къде ти стои?
 

Back
Горе