Avatar billede shjorth Nybegynder
21. januar 2009 - 21:24 Der er 10 kommentarer og
1 løsning

Experience point system (PHP)

Hejsa.

Jeg har i øjeblikket en kode der ser sådan her ud:

function calc_level($userid,$exp) {
if($level == 1 && $exp>100) {
    $new_level = $level+1;
}elseif($level == 2 && $exp>200) {
    $new_level = $level+1;
}.............................

}

Og sådan kører den op til level 120.
Det er selvfølgelig en tåbelig måde at gøre det på, så det kunne jeg jo godt tænke mig at lave lidt smartere, men dèt er så mit problem.

Ideen er at antallet af xp for at "level up" skal stige med 50 for hver level, så det f.eks er

if($level == 1 && $exp>200) {
$new_level = $level+1;
}elseif($level == 2 && $exp>450) {
$new_level = $level+1;
}

Det må kunne sættes i en løkke på en eller anden smart måde???

Jeg har desværre ikke så meget at gøre godt med, men jeg vil gerne tilbyde et par flasker vin eller lign hvis der er nogen der kan hjælpe mig med dette :-) Mange tak
Avatar billede majbom Novice
21. januar 2009 - 21:34 #1
hvad skal exp så være for at komme til lvl3?
Avatar billede shjorth Nybegynder
21. januar 2009 - 21:38 #2
Antallet af xp skal øges med 50 for hver level, så det bliver:

Lvl 1: 300
lvl 2: 650 (300+300+50)
lvl 3: 1050 (650+350+50)
osv osv
Avatar billede shjorth Nybegynder
21. januar 2009 - 21:39 #3
Altså:
$exp + 300 -> lvl 2
$exp + 350 -> lvl 3
$exp + 400 -> lvl 4
osv :)
Avatar billede coderdk Praktikant
21. januar 2009 - 21:40 #4
Noget i stil med:

function calc_level( $userid, $exp )
{
  $new_level = $level;
  if ( $exp > ( ( $level * 50 ) + ( $level * 200 ) )
  {
      $new_level = $level + 1;
  }
  return $new_level;
}

?
Avatar billede shjorth Nybegynder
21. januar 2009 - 22:06 #5
Coderdk -> Umidlebart ja, det ser godt ud.

Nu glemte jeg lige at nævne, at jeg også får brug for en "xp_to_next_level" funktion. Kan det implementeres?
Jeg skal bruge det antal xp man skulle have fra sidste level for at level up, og det antal fra den akutelle level. For at kunne lave en exp bar, hvis du forstår
Avatar billede coderdk Praktikant
21. januar 2009 - 22:11 #6
shjorth, Hvis du bygger den på min, er det jo bare lidt anden matematik?

function xp_to_next_level($userid,$exp)
{
  $level = calc_level( $userid, $exp );
  return ( ( $level * 50 ) + ( $level * 200 ) ) - $exp;
}
Avatar billede coderdk Praktikant
21. januar 2009 - 22:13 #7
eller:

function calc_level( $level, $exp )
{
  $new_level = $level;
  if ( $exp > ( ( $level * 50 ) + ( $level * 200 ) ) )
  {
      $new_level = $level + 1;
  }
  return $new_level;
}

function xp_to_next_level( $level, $exp )
{
  $level = calc_level( $level, $exp );
  return ( ( $level * 50 ) + ( $level * 200 ) ) - $exp;
}
Avatar billede shjorth Nybegynder
21. januar 2009 - 22:30 #8
Perfekt.. Den sidste (ja jeg er en kegle når det kommer til matematik ;):
Det antal xp man starter på, på den level man er nået til. Hvordan kommer jeg frem til det?
Avatar billede shjorth Nybegynder
21. januar 2009 - 22:36 #9
Eller med andre ord, skal jeg egentlig bare vide hvor mange exp der skal til fra det sek man rammer lexel X til man laver level up
Avatar billede shjorth Nybegynder
22. januar 2009 - 17:30 #10
Nåh.. Efter at have kigget lidt på det i dag, har jeg lige fundet ud af at det ikke var helt det jeg ledte efter.

Som det er nu, så vil der altid være 250 mellem hver level.. Jeg ville gerne at de 250 blev øget med 50 for hver level.. 250 - 300 - 350 osv..
Avatar billede shjorth Nybegynder
12. juni 2010 - 20:52 #11
Lukker her, skriv endelig hvis i vil have point :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester