webForumDet fria alternativet

Visa level beroende på färdigheter

PHP

24 svar · 798 visningar · startad av Pike

Medlem sedan nov. 200452 inlägg
Frågan#1

Hej!
Jag och en kompis (Beere) håller på med ett slags online rollspel. I tabellen multopia finns id, username, password, sida, bild, liv, pengar, mod, styrka ock admin.
Det jag har fasnat på är hur men visar vilken "level" medlemmen är på. Alltså har man 0-49 i mod och 0-49 i styrka så ska det stå: Joker. Har man 50-89 i styrka och 50-89 i mod så ska det stå: Stalledräng
osv.

Jag har försökt med denna kod kod

<?
if($rad['styrka'] == "30" & $rad['mod'] == "30") {
echo "Joker";
} elseif ($rad['styrka'] == "50" & $rad['mod'] == "50") {
echo "Stalledräng";
?>

Med den koden så blir attlting fel... Allt som står under koden syns inte på sidan? Och så måste man ha 30 eller 50 för att nåt ska synas... det står ingenting om man har tex. 33 i styrka eller nåt...

Hoppas ann någon kan hjälpa oss med det:OO

Medlem sedan aug. 2000374 inlägg
#2

Vad ska det stå om man har 40 i mod och 80 i stryka?

Medlem sedan nov. 200452 inlägg
#3

joker.. eftersom man måste ha minst 50 i båda för att man ska vara stalledräng.. joker och stalledräng är ju som bara början på det hela så att nu fattar annars så är det här hela listan:
1. Joker
2. Stalledräng
3. Väpnare
4. Riddare
5. Greve
6. Kung

Medlem sedan aug. 2000374 inlägg
#4
<?

printf( "%s\n", level( 30, 30 ) );
printf( "%s\n", level( 40, 80 ) );
printf( "%s\n", level( 50, 75 ) );
printf( "%s\n", level( 90, 90 ) );

function level( $styrka, $mod ) {

    if ( $styrka < 50 || $mod < 50 ) {
        return "Joker";
    }

    if ( $styrka < 90 || $mod < 90 ) {
        return "Stalledräng";
    }

    return "Undefined";
}

?>
Medlem sedan nov. 200452 inlägg
#5

nee... det funkade inte.. det står:
Fatal error: Call to undefined function: level()

Något är fel...

Medlem sedan juli 2004181 inlägg
#6

Troligtvis så det fel i din jämförelse...

Borde det se ut så här:

<?
if($rad['styrka'] == "30" && $rad['mod'] == "30") {
echo "Joker";
} elseif ($rad['styrka'] == "50"  && $rad['mod'] == "50") {
echo "Stalledräng";
?>

/R Tog bort försök till att göra & fetstilt...

Medlem sedan nov. 200452 inlägg
#7

var det tänkt att & skulle vara med fet text eller ska det vara så? om det ska vara så så är det något fel på if($rad['styrka'] == "30" && $rad['mod'] == "30") {

Medlem sedan aug. 2000374 inlägg
#8

Pike skrev:

nee... det funkade inte.. det står:
Fatal error: Call to undefined function: level()

Något är fel...

Då får du posta koden.

[b]mundus:~/dev/php chansen$ cat level.php[/b] 
<?
printf( "%s\n", level( 30, 30 ) );
printf( "%s\n", level( 40, 80 ) );
printf( "%s\n", level( 50, 75 ) );
printf( "%s\n", level( 90, 90 ) );

function level( $styrka, $mod ) {

    if ( $styrka < 50 || $mod < 50 ) {
        return "Joker";
    }

    if ( $styrka < 90 || $mod < 90 ) {
        return "Stalledräng";
    }

    return "Undefined";
}

?>
[b]mundus:~/dev/php chansen$ php level.php[/b] 
Joker
Joker
Stalledräng
Undefined
Medlem sedan nov. 200452 inlägg
#9

den hör koden använder jag till att visa profilen:

 <?
include "../data.php";
$link = mysql_connect("$host", "$user", "$pass");
$sql="SELECT * FROM multopia WHERE username='$username'";
$result = mysql_db_query("$db","$sql");
while($rad=mysql_fetch_array($result)){
?>
            </p>
            <p align="center"><img src="../bilder/<? echo $rad['bild']; ?>" width="140"></p>            <p><u>Statistik:</u></p>
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td><p align="center"><strong>Mod:</strong></td>
                <td><p align="center"><strong>Liv:</strong></td>
              </tr>
              <tr>
                <td><p align="center"><? echo $rad["mod"]; ?></td>
                <td><p align="center">                  <? echo $rad["liv"]; ?></td>
              </tr>
              <tr>
                <td><p align="center"><strong>Styrka:</strong></td>
                <td><p align="center"><strong>Pengar:</strong></td>
              </tr>
              <tr>
                <td><p align="center"><? echo $rad["styrka"]; ?>&nbsp;</td>
                <td><p align="center"><? echo $rad["pengar"]; ?>&nbsp;</td>
              </tr>
              <tr>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <td colspan="2"><p align="center">
<?
if($rad['styrka'] == "30" && $rad['mod'] == "30") {
echo "Joker";
} elseif ($rad['styrka'] == "50"  && $rad['mod'] == "50") {
echo "Stalledräng";
?>

Var det den koden du menade?

Medlem sedan aug. 2000374 inlägg
#10

Om du använder PHP 3 så måste funktionen vara definierad innan den används, testa med:

<?
function level( $styrka, $mod ) {

    if ( $styrka < 50 || $mod < 50 ) {
        return "Joker";
    }

    if ( $styrka < 90 || $mod < 90 ) {
        return "Stalledräng";
    }

    return "Undefined";
}

printf( "%s\n", level( 30, 30 ) );
printf( "%s\n", level( 40, 80 ) );
printf( "%s\n", level( 50, 75 ) );
printf( "%s\n", level( 90, 90 ) );

?>
Medlem sedan nov. 200452 inlägg
#11

med det blir typ fel...:(
det står bara: Joker Joker Stalledräng Undefined
??

Medlem sedan aug. 2000374 inlägg
#12

Pike skrev:

med det blir typ fel...:(
det står bara: Joker Joker Stalledräng Undefined
??

Det är ju rätt :o)

placera funktionen level överst i ditt script eller i en include fil.

ersätt:

<?
if($rad['styrka'] == "30" && $rad['mod'] == "30") {
echo "Joker";
} elseif ($rad['styrka'] == "50"  && $rad['mod'] == "50") {
echo "Stalledräng";
?>

Med:

<?
echo level( $rad['styrka'], $rad['mod'] );
?>
Medlem sedan nov. 200452 inlägg
#13

vänta... nu hängde inte jag med riktigt...
ska jag ha både

<?
function level( $styrka, $mod ) {

    if ( $styrka < 50 || $mod < 50 ) {
        return "Joker";
    }

    if ( $styrka < 90 || $mod < 90 ) {
        return "Stalledräng";
    }

    return "Undefined";
}

printf( "%s\n", level( 30, 30 ) );
printf( "%s\n", level( 40, 80 ) );
printf( "%s\n", level( 50, 75 ) );
printf( "%s\n", level( 90, 90 ) );

?>

och

<?
echo level( $rad['styrka'], $rad['mod'] );
?>

och sen överst på sidan så ska jag ha include "vilken_fil?.php";

Medlem sedan aug. 2000374 inlägg
#14
<?
include "../data.php";

function level( $styrka, $mod ) {

    if ( $styrka < 50 || $mod < 50 ) {
        return "Joker";
    }

    if ( $styrka < 90 || $mod < 90 ) {
        return "Stalledräng";
    }

    return "Undefined";
}

$link = mysql_connect("$host", "$user", "$pass");
$sql="SELECT * FROM multopia WHERE username='$username'";
$result = mysql_db_query("$db","$sql");
while($rad=mysql_fetch_array($result)){
?>
            </p>
            <p align="center"><img src="../bilder/<? echo $rad['bild']; ?>" width="140"></p>
            <p><u>Statistik:</u></p>
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td><p align="center"><strong>Mod:</strong></td>
                <td><p align="center"><strong>Liv:</strong></td>
              </tr>
              <tr>
                <td><p align="center"><? echo $rad["mod"]; ?></td>
                <td><p align="center">                  <? echo $rad["liv"]; ?></td>
              </tr>
              <tr>
                <td><p align="center"><strong>Styrka:</strong></td>
                <td><p align="center"><strong>Pengar:</strong></td>
              </tr>
              <tr>
                <td><p align="center"><? echo $rad["styrka"]; ?>&nbsp;</td>
                <td><p align="center"><? echo $rad["pengar"]; ?>&nbsp;</td>
              </tr>
              <tr>
                <td></td>
                <td></td>
              </tr>
              <tr>
                <td colspan="2"><p align="center">
                    <? echo level( $rad['styrka'], $rad['mod'] ); ?>
Medlem sedan nov. 200452 inlägg
#15

Tack :D det funkade!

Medlem sedan nov. 200452 inlägg
#16

Men nu har jag en till liten fråga angöende liven... Om man spelar en match mot någon så tappar man ju liv, men hur gör man så att livmätaren uppdateras varannan minut med +3? alltså om jag har 67 så måste jag vänta i 11 minuter innan jag har 100 igen. men mätaren ska inte gå över 100.
Går det att göra? Det skulle vara snällt om någon hjälper :)

Medlem sedan okt. 2004392 inlägg
#17

1. Glöm allt innan..... Kopiera alla filer du har så att du har backup om det här förstör nåt! (du behöver inte kopiera eller göra backup men för säkerhets skull)

2. Det här måste du lägga längst upp i en sida som är inkluderad på alla sidor.... om du inte har en så gör en ny fil som heter functions.php och skriv in

include "functions.php";

på ALLA sidor i hemsidan utan i functions.php såklart ÄNDRA INGET I DETTA STEG KOPIERA OCH KLISTRA IN BARA

$ar=date("y"); //Året just nu
$mon=date("m"); //Månaden just nu
$dag=date("d"); //Dagen just nu  
$tim=date("H"); //Timmen just nu
$min=date("i"); //Minuten just nu
$minut=$min+2; //Minuten om två minuter
$tidennu=$ar."|".$mon."|".$dag."|".$tim."|".$min;  //tex 04|11|16|22|05
$tidenef=$ar."|".$mon."|".$dag."|".$tim."|".$minut;  //tex 04|11|16|22|07 notera att det blev 7 alltså + 2 min.

Det här ska vara längst upp i include filen!!

3. Jag ändrade till funktion.... det blir mycket enklare för dig!ÄNDRA INGET I DETTA STEG KOPIERA OCH KLISTRA IN BARA

function editlife($tidenurdb,$antallivnu,$tidenef,$tidennu,$vadfornot) {
  $tidnr=explode("|",$tidenurdb); // året,månaden osv delas upp
  $tidnr2=explode("|",$tidennu); // året,månaden osv delas upp
  $timomind=$tidnr[0].$tidnr[1].$tidnr[2].$tidnr[3].$tidnr[4];
  $timominn=$tidnr2[0].$tidnr2[1].$tidnr2[2].$tidnr2[3].$tidnr2[4];
  if($timomind < $timominn || $timomind == $timominn){
    if($antallivnu==100){  //om det blir 100 så plusar man inte på nåt
      $antalliv = $antallivnu;
      $tidenurdb2 = $tidenef;
    }else if($antallivnu==99){  //om det blir 99 så plusar man bara på 1
      $antalliv = $antallivnu + 1;
      $tidenurdb2 = $tidenef;
    }else if($antallivnu==98){  //om det blir 98 så plusar man bara på 2
      $antalliv = $antallivnu + 2;
      $tidenurdb2 = $tidenef;
    }else{  //om det blir under 98 så plusar man på 3
      $antalliv = $antallivnu + 3;
      $tidenurdb2 = $tidenef;
    }
  }else{
    $antalliv = $antallivnu;
    $tidenurdb2 = $tidenurdb;
  }
  if($vadfornot=="liv"){
    return $antalliv;
  }else if($vadfornot=="tid"){
    return $tidenurdb2;
  }
}

Det här läggs också i include filen... vart som helst bara det är under det som är ovan!

4. Det här ska du skriva på ställen där du skriver ut livet och tiden!!

//liv
echo editlife($rad["tiden"],$rad["liv"],$tidenef,$tidennu,"liv");
//tid
echo editlife($rad["tiden"],$rad["liv"],$tidenef,$tidennu,"tid");

5. Livet måste du alltid UPPDATERA efter det här scriptet körs!!!!!!!

$rad["liv"] = editlife($rad["tiden"],$rad["liv"],$tidenef,$tidennu,"liv");

6. Tiden måste du alltid UPPDATERA efter det här scriptet körs!!!!!!!

$rad["tiden"] = editlife($rad["tiden"],$rad["liv"],$tidenef,$tidennu,"tid");

FÖRUTOM när du skriver in tiden för första gången (tex när någon ny registrerar sig) då ska det se ut så här

$rad["tiden"] = $tidenef;

7. Glöm inte att göra ett nytt fält i databasen som heter tiden

8. Tror inte det finns mer!! Igen om det är nåt du inet förstår så skriv! Den funkar exakt som du vill!!
PS: Testade och allt funkade!! Du behöver inte ändra på nåt i steg 2 eller 1. Om du gör så kanske den inte funkar!

Medlem sedan nov. 200452 inlägg
#18

det jag inte fattar är vart ska jag lägga in $tidenurdb ? Ska jag ändra strängen $tidenurdb till vad? Men jag ska lägga all kod som du skrev längs upp i dockumentet?

Medlem sedan okt. 2004392 inlägg
#19

Jag ändrade gå kolla

Medlem sedan dec. 200353 inlägg
#20

OBS: fel tråd! Sorry!

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)