Hi zusammen. Ich bin neu hier und möchte euch gleich mal ganz lieb um Hilfe bitten.
Ich Programmiere zur Zeit ein Onlinegame und habe jetzt an einer Stelle ein Problem. Die Bauzeit wird nicht berechnet und ich weiss nicht warum.
Nachfolgend der entscheidende Teil des Codes mit Erklärungen:
Wenn ich jetzt aber auf Bauen klicke, komme ich wieder in den gleichen Bildschirm und kann wieder auf Bauen klicken, was ja nicht möglich sein sollte, weil gebbau1 und zeitstempel1 ja nicht mehr den wert 0 haben, was voraussetzung dafür ist.
Wer kann mir helfen?
PS: Habe vor 8 tagen mit PHP begonnen, kann also sehr wohl ein Noobfehler darin sein
Ich Programmiere zur Zeit ein Onlinegame und habe jetzt an einer Stelle ein Problem. Die Bauzeit wird nicht berechnet und ich weiss nicht warum.
Nachfolgend der entscheidende Teil des Codes mit Erklärungen:
PHP-Code:
if ($username==$username1 && $pwd==$password1 && $gebbau1==0 && $zeitstempel==0 && $metall>=$Mkommalos && $kristall>=$Kkommalos && $energie>=$Pkommalos)
//überprüft ob man ein neues gebäude bauen kann, weil kein anderes gebaut wird (gebbau und zeitstempel=0)UND ausreichend ressourcen vorhanden sind.
{
$geb1_link = "<a href=\"gebaeude.php?activate=1\">Bauen</a>";
echo "$geb1_link";
}
//ist das der fall, dann erscheint in einer tabelle der link "bauen" s.o. und der wert activate wird auf 1 gesetzt
if ($active==1) // wenn man auf bauen geklickt hat
{
$zeit1 = time(); //aktuelle zeit wird ermittelt
$endzeit1 = $zeit1 + $tMkommalos; //die aktuelle zeit wird um die bauzeit des gebäudes erhöht
$active = 0; //damit die if-abfrage nur einmal durchgeführt wird
mysql_query("UPDATE `geb` SET `gebbau1` = '$endzeit1', `zeitstempel` = '$zeit1'") or die(mysql_error()); // beide werte werden nun in die datenbank eingefügt
}
if ($endzeit1 > $zeit1) //solange die fertigungszeit noch nicht erreicht ist, wird die aktuelle zeit immer beim klicken in der datenbank aktualisiert
{
$zeit1 = time();
echo "In Bau";
mysql_query("UPDATE `geb` SET `zeitstempel` = '$zeit1'") or die(mysql_error());
}
if ($zeit1 >= $endzeit1 && $zeit1 > 0 && $endzeit1 > 0) /*wenn die jetzige zeit größer oder gleich der fertigstellungszeit ist, wird das gebäude in die datenbank eingetragen.
Damit das nicht nach jedem klick passiert, müssen die werte $zeit1 und $endzeit1 über 0 sein, also durch den if activate = 1 schon für einen bauauftrag aktiviert sein.*/
//ist das erledigt wird die gebäudestufe um 1 erhöht und die baufaktoren werden wieder auf 0 gesetzt (gebbau1 und zeitstempel)
{
$geb1neu = $geb1 + 1 ;
mysql_query("UPDATE `geb` SET `geb1` = '$geb1neu', `gebbau1` = '0', `zeitstempel` = '0'") or die(mysql_error());
?>
Wer kann mir helfen?
PS: Habe vor 8 tagen mit PHP begonnen, kann also sehr wohl ein Noobfehler darin sein
Kommentar