Avatar billede spidr Nybegynder
12. januar 2006 - 16:43 Der er 11 kommentarer og
1 løsning

Forkorte ned.

Jeg er ved at arbejde på et spil, og har noget kode der er ved at blive lidt uoverskuelig, og ville høre om ikke man kunne lave lvl systemmet, til en funktion istedet, og derved måske få lidt mere overblik og mindre trafik på serveren.

Systemmet ser således ud:


if ($hentlvl == 0) {
if ($XPpoint > 200) {$XPstatus = "Keitaro Wannabe"; $XPlvl = "1"; $XPtop = "400"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 1 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Wanker"; $XPlvl = "0"; $XPtop = "200";}
}

elseif ($hentlvl == 1) {
if ($XPpoint > 400) {$XPstatus = "Prep Schooler"; $XPlvl = "2"; $XPtop = "800"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 2 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Keitaro Wannabe"; $XPlvl = "1"; $XPtop = "400";}
}

elseif ($hentlvl == 2) {
if ($XPpoint > 800) {$XPstatus = "Girl studyer"; $XPlvl = "3"; $XPtop = "1600"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 3 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Prep Schooler"; $XPlvl = "2"; $XPtop = "800";}
}

elseif ($hentlvl == 3) {
if ($XPpoint > 1600) {$XPstatus = "Girls friend"; $XPlvl = "4"; $XPtop = "3000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 4 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Girl studyer"; $XPlvl = "3"; $XPtop = "1600";}
}

elseif ($hentlvl == 4) {
if ($XPpoint > 3000) {$XPstatus = "Girls best friend"; $XPlvl = "5"; $XPtop = "5000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 5 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Girls friend"; $XPlvl = "4"; $XPtop = "3000";}
}

elseif ($hentlvl == 5) {
if ($XPpoint > 5000) {$XPstatus = "Skirt-chaser"; $XPlvl = "6"; $XPtop = "9000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 6 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Girls best friend"; $XPlvl = "5"; $XPtop = "5000";}
}

elseif ($hentlvl == 6) {
if ($XPpoint > 9000) {$XPstatus = "Don Juan"; $XPlvl = "7"; $XPtop = "15000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 7 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Skirt-chaser"; $XPlvl = "6"; $XPtop = "9000";}
}

elseif ($hentlvl == 7) {
if ($XPpoint > 15000) {$XPstatus = "Loverboy"; $XPlvl = "8"; $XPtop = "30000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 8 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Don Juan"; $XPlvl = "7"; $XPtop = "15000";}
}

elseif ($hentlvl == 8) {
if ($XPpoint > 30000) {$XPstatus = "Lady Killer"; $XPlvl = "9"; $XPtop = "50000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 9 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Loverboy"; $XPlvl = "8"; $XPtop = "30000";}
}

elseif ($hentlvl == 9) {
if ($XPpoint > 50000) {$XPstatus = "Womaniser"; $XPlvl = "10"; $XPtop = "90000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 10 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Lady Killer"; $XPlvl = "9"; $XPtop = "50000";}
}

elseif ($hentlvl == 10) {
if ($XPpoint > 90000) {$XPstatus = "Prins of the ball"; $XPlvl = "11"; $XPtop = "150000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 11 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Womaniser"; $XPlvl = "10"; $XPtop = "90000";}
}

elseif ($hentlvl == 11) {
if ($XPpoint > 150000) {$XPstatus = "Pimp"; $XPlvl = "12"; $XPtop = "250000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 12 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Prins of the ball"; $XPlvl = "11"; $XPtop = "150000";}
}

elseif ($hentlvl == 12) {
if ($XPpoint > 250000) {$XPstatus = "ChickScoring god"; $XPlvl = "13"; $XPtop = "400000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 13 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Pimp"; $XPlvl = "12"; $XPtop = "250000";}
}

elseif ($hentlvl == 13) {
if ($XPpoint > 400000) {$XPstatus = "Every Girls Dream!"; $XPlvl = "14"; $XPtop = "600000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 14 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "ChickScoring god"; $XPlvl = "13"; $XPtop = "400000";}
}

elseif ($hentlvl == 14) {
if ($XPpoint > 600000) {$XPstatus = "2g00d2bereal"; $XPlvl = "15"; $XPtop = "900000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 15 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Every Girls Dream!"; $XPlvl = "14"; $XPtop = "600000";}
}

elseif ($hentlvl == 15) {
if ($XPpoint > 900000) {$XPstatus = "Playboy!"; $XPlvl = "16"; $XPtop = "1300000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 16 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "2g00d2bereal"; $XPlvl = "15"; $XPtop = "900000";}
}

elseif ($hentlvl == 16) {
if ($XPpoint > 1300000) {$XPstatus = "Pimp lord!"; $XPlvl = "17"; $XPtop = "2000000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 17 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Playboy!"; $XPlvl = "16"; $XPtop = "1300000";}
}

elseif ($hentlvl == 17) {
if ($XPpoint > 2000000) {$XPstatus = "Playboy lord!"; $XPlvl = "18"; $XPtop = "3000000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 18 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Pimp lord!"; $XPlvl = "17"; $XPtop = "2000000";}
}

elseif ($hentlvl == 18) {
if ($XPpoint > 3000000) {$XPstatus = "Ultimate playboy!"; $XPlvl = "19"; $XPtop = "4500000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 19 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Playboy lord!"; $XPlvl = "18"; $XPtop = "3000000";}
}

elseif ($hentlvl == 19) {
if ($XPpoint > 4500000) {$XPstatus = "Ultimate pimp!"; $XPlvl = "20"; $XPtop = "6500000"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 20 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Ultimate playboy!"; $XPlvl = "19"; $XPtop = "4500000";}
}

elseif ($hentlvl == 20) {
if ($XPpoint > 6500000) {$XPstatus = "Ultimate pimp lord!"; $XPlvl = "21"; $XPtop = "9999999"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 21 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Ultimate pimp!"; $XPlvl = "20"; $XPtop = "6500000";}
}

elseif ($hentlvl == 21) {
if ($XPpoint > 9999999) {$XPstatus = "Ultimate playboy lord!"; $XPlvl = "22"; $XPtop = "99999999"; mysql_query("UPDATE LoveHinaUSERS SET lvl = 22 WHERE Nickname = '$Nickname'");}
else {$XPstatus = "Ultimate pimp lord!"; $XPlvl = "21"; $XPtop = "9999999";}
}

og det fortsætter op til lvl 99.
Avatar billede jackass- Nybegynder
12. januar 2006 - 17:33 #1
Lav en functions.php og include("/inc/functions.php"); på din side.

I den fil laver du så:

function DoThis($hentlvl) {
  switch ($hentlvl) {
    case 0:
        { GØR NOGET HER }
    break;
    case 1:
        { GØR NOGET HER }
    break;
    case 2:
        { GØR NOGET HER }
    break;
  }
}

Så kan du jo bare efterfølgende kalde DoThis(TAL); for at få tingene udført..
Avatar billede htm Nybegynder
12. januar 2006 - 17:56 #2
Det ser meget ens ud hele vejen ned, så du kan bygge det op med array, hvor du gemmer point og titler.
Det kunne fx. bygges sådan op, du kan nok selv fylde resten af point og titler ind i slutningen af arrayet.

$XPpointArr = array(200,400,800,1600,3000,5000);
$XPstatusArr = array("Wanker","Keitaro Wannabe","Prep Schooler","Girl studyer","Girls friend","Girls best friend");

$hentlvl = 0;
$XPpoint = 120;

if($hentlvl >= 0 && $hentlvl <= 99)
{
    if($XPpoint > $XPpointArr[$hentlvl])
    {
        $XPstatus = $XPstatusArr[$hentlvl+1];
        $XPlvl = $hentlvl+1;
        $XPtop = $XPpointArr[$hentlvl+1];
        mysql_query("UPDATE LoveHinaUSERS SET lvl = " . $XPlvl . " WHERE Nickname = '$Nickname'");
    }
    else
    {
        $XPstatus = $XPstatusArr[$hentlvl];
        $XPtop = $XPpointArr[$hentlvl];
    }
}
Avatar billede htm Nybegynder
12. januar 2006 - 17:59 #3
Og så lige et svar hvis du kan bruge det :-)

Du skal selvfølgelig ikke have disse 2 linier med, det var bare for test:

$hentlvl = 0;
$XPpoint = 120;
Avatar billede spidr Nybegynder
12. januar 2006 - 18:06 #4
Lige præcis hvad jeg ledte efter :D så siger jeg tusind tak HTM :D

(Skal bare passe på ikke at lave taste fejl i $XPpointArr :D så kan det hurtigt gå galt :D)

Prøver det lige af, og skriver hvordan det gik :D
Avatar billede spidr Nybegynder
12. januar 2006 - 19:11 #5
Wow, det virker :)

Super fedt, og mange tak. Men hvad nu hvis brugeren for mere end max xp? (i dit exempel 5000),

hvad sker der så?
Avatar billede htm Nybegynder
12. januar 2006 - 19:22 #6
Du opretter jo alle 99 levels. dvs. 100 (0-99 ) tal i arrayet. så sker der ikke nået ;-)

Den her sørger for at det er kun levels mellem 0 og 99 der bliver vist.

if($hentlvl >= 0 && $hentlvl <= 99)
Avatar billede spidr Nybegynder
12. januar 2006 - 19:26 #7
ah ok, super :D har oprettet alle 100 ;) tog lidt tid :D
Avatar billede htm Nybegynder
12. januar 2006 - 19:28 #8
Eller det passer faktisk ikke, du skal faktisk oprette 101 for at det skal være ok på level 99 også :-)

Den henter jo status for 99+1 i arrayet - og den findes ikke hvis du kun har 100 :-)
Avatar billede spidr Nybegynder
12. januar 2006 - 19:31 #9
så hvis jeg ændre if($hentlvl >= 0 && $hentlvl <= 99) til if($hentlvl >= 0 && $hentlvl <= 98) så er den der?
Avatar billede htm Nybegynder
12. januar 2006 - 19:32 #10
Yep :-) eller fjerne det sidste =


if($hentlvl >= 0 && $hentlvl < 99)
Avatar billede spidr Nybegynder
12. januar 2006 - 19:36 #11
ah ja naturlighvis :) tak for det :)
Avatar billede htm Nybegynder
12. januar 2006 - 19:38 #12
Velbekommen.
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