Kampf System

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kampf System

    Hallo,

    Wenn einer Lust und Zeit hat mir zu helfen, der kann sich mal mit einen Angriff System für mein Onlnie Spiel beschäftigen

    Die Einheiten die der Angreifer losgeschickt hat, ist in den Table 'angriff' im SQL. Da steht alles drin:

    Angreifer, Verteidiger, angriff_wert, verteidigung_wert, ankunft, losgeschickt

    Und die Einheiten z. B. :

    TitanBomber, B52

    Und die ganzen Rohstoffe z. B. :

    Holz, Stein, Eisen

    Alle Rohstoffe stehen noch mal extra im table 'markt' . Da könnte man mit einer schleife alle auslesen. weil wenn der angriff erfolgreich war, muss der angreifer die 10% der waren vom verteidiger bekommen.

    Alle Einheiten stehen in den table: 'werft' 'waffenfabrik' 'kaserne' 'flughafen'

    Die Felder in den Table sind:
    name, angriff, verteidigung

    Und die baukosten, aber die brauche ich nicht aufzuschreiben für das angriffsystem !

    Wie viele einheiten man hat steht in den Table 'mitglieder' .

    Und dort einfach den namen der einheit z. B. :

    B52, TitanBomber


    Bei dem Angriff System darf nicht geguckt werden wer den höheren Angriff hat.
    Die Einheiten müssen sich gegeneinander angreifen. Wer meint, er bekommt das hin, schreibt mir eine PN oder antwortet mal!

    Hoffe ihr könnt mir helfen! Vielen Dank im Voraus!

  • #2
    *VERSCHIEB* zur projekthilfe.

    und meinst du nicht auch, dass das alles ein wenig viel ist für den anfang. zumindest ist es extremst umständlich und verworren beschrieben.

    und warum machst du das nciht selber?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ich bekomme das nicht richtig hin. Ich habe das schon mal versucht, aber ...

      Kommentar


      • #4
        ... jetzt sollt ihr es machen.


        und nun? ich mache es nicht für dich. warum auch.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Und wofür ist hier das Forum? Um fertige Code hier hin zu schreiben?

          Ich habe gedacht, hier gibt es welche, die mir helfen könnten!

          Kommentar


          • #6
            sicher. aber ein paar gedanken sollte man sich schon selber machen....
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Okay, dann versucht mal rauszufinden, warum PHP damit nicht zurecht kommt. Es kommt ein Timeout.

              PHP-Code:

              <?
              $wochen_statement1="SELECT * FROM angriff WHERE angreifer = '$namese'"; 
              $resultset1=mysql_query($wochen_statement1); 

              while($ranking=mysql_fetch_array($resultset1)){ 
                  echo "<b>Sie greifen gerade ".$ranking['verteidiger']." an.</b><br>";
                  $rest = $ranking['ankunft'] - time();
                  if ($rest < '1') {
                      
                  $verteidiger = $ranking['verteidiger'];
                  $angreifer = $ranking['angreifer'];
                  $da = $ranking['ankunft'];
                  
                  $post_versand = $verteidiger;
                  
                  $a=mysql_fetch_object(mysql_query("SELECT * FROM mitglieder WHERE nickname = '$verteidiger'")); # Wert vom Verteidiger
                  $b=mysql_fetch_object(mysql_query("SELECT * FROM angriff WHERE angreifer = '$angreifer' AND verteidiger = '$verteidiger' AND ankunft = '$da'")); # Wert vom Angreifer

                  while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM kaserne"))){ 
                  # Auslesen der Einheit
                  $test = $ranking['name'];    

                  # Angriffs Wert der Einheit auslesen
                  $angriff3 = $ranking['Angriff'];
                  $angriff3 = $angriff3 * $a->$test;
                  $angriff = $angriff + $angriff3;

                  # Verteidigungs Wert der Einheiten auslesen
                  $verteidigung3 = $ranking['Verteidigung'];
                  $verteidigung3 = $verteidigung3 * $a->$test;
                  $verteidigung = $verteidigung + $verteidigung3
                  }
                  $wochen_statement="SELECT * FROM flughafen"; 
                  $resultset=mysql_query($wochen_statement); 
                  while($ranking=mysql_fetch_array($resultset)){ 
                  
                  # Auslesen der Einheit
                  $test = $ranking['name'];
                  
                  # Angriffs Wert der Einheit auslesen
                  $angriff3 = $ranking['Angriff'];
                  $angriff3 = $angriff3 * $a->$test;;
                  $angriff = $angriff + $angriff3;

                  # Verteidigungs Wert der Einheiten auslesen
                  $verteidigung3 = $ranking['Verteidigung'];
                  $verteidigung3 = $verteidigung3 * $a->$test;
                  $verteidigung = $verteidigung + $verteidigung3;
                  }

                  $wochen_statement="SELECT * FROM waffenfabrik"; 
                  $resultset=mysql_query($wochen_statement); 
                  while($ranking=mysql_fetch_array($resultset)){ 
                  # Auslesen der Einheit    
                  $test = $ranking['name'];    
                  # Angriffs Wert der Einheit auslesen
                  $angriff3 = $ranking['Angriff'];
                  $angriff3 = $angriff3 * $a->$test;;
                  $angriff = $angriff + $angriff3;
                  # Verteidigungs Wert der Einheiten auslesen
                  $verteidigung3 = $ranking['Verteidigung'];
                  $verteidigung3 = $verteidigung3 * $a->$test;
                  $verteidigung = $verteidigung + $verteidigung3;
                  }
                  $wochen_statement="SELECT * FROM werft"; 
                  $resultset=mysql_query($wochen_statement);
                  while($ranking=mysql_fetch_array($resultset)){     
                  # Auslesen der Einheit
                  $test = $ranking['name'];
                  # Angriffs Wert der Einheit auslesen
                  $angriff3 = $ranking['Angriff'];
                  $angriff3 = $angriff3 * $a->$test;;
                  $angriff = $angriff + $angriff3;
                  # Verteidigungs Wert der Einheiten auslesen
                  $verteidigung3 = $ranking['Verteidigung'];
                  $verteidigung3 = $verteidigung3 * $a->$test;
                  $verteidigung = $verteidigung + $verteidigung3;
                  }
                  echo "Angreifer Angriff: $b->angriff_wert <br>";
                  echo "Gegner Verteidigung: $verteidigung <br><br>";
                  # Wenn der Angreifer ($namese) mehr Angriffs Wert als der Gegner Verteidigung hat, dann..
                  if ($b->angriff_wert >= $verteidigung) {    
                      while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM kaserne"))){     
                      # Einheit Auslesen    
                      $test = $ranking['name'];
                      # Anzahl der Einheit auslesen
                      $test5 = $b->$test;
                      # Den Angreifer die Einheiten wieder geben, und den Verteidiger die Einheiten auf 0 setzen
                      mysql_query("UPDATE mitglieder SET $test = $test + $test5 WHERE nickname='$namese'");
                      mysql_query("UPDATE mitglieder SET $test = '0' WHERE nickname='$verteidiger'");
                      }
                      while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM flughafen"))){ 
                      # Einheit Auslesen
                      $test = $ranking['name'];
                      # Anzahl der Einheit auslesen
                      $test5 = $b->$test;
                      # Den Angreifer die Einheiten wieder geben, und den Verteidiger die Einheiten auf 0 setzen
                      mysql_query("UPDATE mitglieder SET $test = $test + $test5 WHERE nickname='$namese'");
                      mysql_query("UPDATE mitglieder SET $test = '0' WHERE nickname='$verteidiger'");
                      }
                      while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM waffenfabrik"))){ 
                      # Einheit Auslesen
                      $test = $ranking['name'];
                      # Anzahl der Einheit auslesen
                      $test5 = $b->$test;
                      # Den Angreifer die Einheiten wieder geben, und den Verteidiger die Einheiten auf 0 setzen
                      mysql_query("UPDATE mitglieder SET $test = $test + $test5 WHERE nickname='$namese'");
                      mysql_query("UPDATE mitglieder SET $test = '0' WHERE nickname='$verteidiger'");
                      }
                      while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM werft"))){ 
                      # Einheit Auslesen
                      $test = $ranking['name'];
                      # Anzahl der Einheit auslesen
                      $test5 = $b->$test;
                      # Den Angreifer die Einheiten wieder geben, und den Verteidiger die Einheiten auf 0 setzen
                      mysql_query("UPDATE mitglieder SET $test = $test + $test5 WHERE nickname='$namese'");
                      mysql_query("UPDATE mitglieder SET $test = '0' WHERE nickname='$verteidiger'");
                      }
                      # Datum und Zeit auslesen und in eine Variable setzen
                      $datum = date("d.m.Y");
                       $zeit = date("H:i:s");
                       $datumzeit = "$datum $zeit";
                       # Post an den Verteidiger schicken
                      mysql_query("INSERT INTO post (Name, Absender, Betreff, Text, Datum) values ('System', '$post_versand', 'Angriff', 'Sie wurden von $namese angegriffen und haben verloren. Der Angreifer hat Ihre Einheiten vernichtet und 10% Ihrer Rohstoffe erhalten.', '$datumzeit')"); 
                      # Sql connect zu den Verteidiger
                      $a=mysql_fetch_object(mysql_query("SELECT * FROM mitglieder WHERE nickname = '$verteidiger'"));
                      # Rohstoffe aus den Markt auslesen
                      while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM markt"))){ 
                      # Rohstoff Name
                      $ware = $ranking['name'];
                      # Wie viel der Verteidiger vom Rohstoff hat
                      $ware_inhalt = $a->$ware;
                      # 10% der Rohstoffe
                      $ware_inhalt_fertig = $ware_inhalt / 10;
                      # Ermittel wie viele Rohstoffe der Verteidiger hat
                      $ware_inhalt = $ware_inhalt - $ware_inhalt_fertig;
                      
                      # Alle Rohstoffe zusammen zählen
                      $ware_gesamt = $ware_gesamt + $ware_inhalt_fertig;
                      
                      # Wenn der Verteidiger von einen Rohstoff mehr als 0 hat dann..
                      if ($ware_inhalt_fertig >= '0') {
                          # Den Angreifer($namese) die Rohstoffe geben
                          mysql_query("UPDATE mitglieder SET $ware = $ware + $ware_inhalt_fertig WHERE nickname='$angreifer'");
                          
                          # Den Verteidiger die Rohstoffe abziehen
                          mysql_query("UPDATE mitglieder SET $ware = $ware_inhalt WHERE nickname='$verteidiger'");
                      }}
                      
                      # Post versenden an den Angreifer, das er den Kampf gewonnen hat
                      mysql_query("INSERT INTO post (Name, Absender, Betreff, Text, Datum) values ('System', '$angreifer', 'Angriff Gewonnen', 'Sie haben $verteidiger angegriffen und haben gewonnen. Sie haben insgesamt $ware_gesamt Rohstoffe geklaut.', '$datumzeit')"); 
                      
                      # Den Angriff aus den Sql löschen
                      mysql_query("DELETE FROM angriff WHERE angreifer = '$angreifer' AND verteidiger = '$verteidiger' AND ankunft = '$da'"); 
                  
                  echo "<b>Sie haben Gewonnen! </b>";    
                  
                  # Falls der Angreifer($namese) verloren hat, dann..
                  } else {
                      
                  # Wieder Zeit auslesen
                  $datum = date("d.m.Y");
                   $zeit = date("H:i:s");
                   $datumzeit = "$datum $zeit";
                       
                  echo "<b>Sie haben Verloren! </b>";    
                  
                  # Connect zu den Verteidiger    
                  $a=mysql_fetch_object(mysql_query("SELECT * FROM mitglieder WHERE nickname = '$verteidiger'")); # Wert vom Verteidiger
                  
                  # Connect zu den Angreifer ($namese)
                  $b=mysql_fetch_object(mysql_query("SELECT * FROM angriff WHERE angreifer = '$angreifer' AND verteidiger = '$verteidiger' AND ankunft = '$da'")); # Wert vom Angreifer
                  
                  # Einheiten aus der Kaserne auslesen
                  while($ranking100=mysql_fetch_array(mysql_query("SELECT * FROM kaserne"))){ 
                  
                  # Die Einheit in $test schreiben    
                  $test = $ranking100['name'];

                  # Die Verteidigung der Einheit in $verteidigung3
                  $verteidigung3 = $ranking100['Verteidigung'];
                  
                  # Wenn keine Einheiten mehr bei den Verteidiger sind, aus der Schleife gehen
                  echo $a->$test;
                  if ($a->$test <= '0') {
                      
                  } else {
                      
                  # Schleife der Einheiten vom Verteidiger    
                  while($x <= $a->$test):
                  $x++;  
                      
                      # Wenn keine Einheiten mehr bei den Verteidiger sind, aus der Schleife gehen
                      if ($a->$test <= '0') {
                          $x = $a->$test;
                          $x++;
                      } else {    
                  
                  # Wenn der Angriffs Wert von Angreifer($namese) größer als die Verteidigung der Gegnerichen Einheit ist dann..
                  if ($b->angriff_wert >= $verteidigung3){
                      
                      # Die Einheit in $einheit_verteidiger schreiben
                      $einheit_verteidiger = $test;
                      
                      # Den Verteidiger eine Einheit abziehen
                      mysql_query("UPDATE mitglieder SET $einheit_verteidiger = $einheit_verteidiger - 1 WHERE nickname='$verteidiger'");
                      
                      # Den Angreifer($namese) die Verteidigung abziehen
                      mysql_query("UPDATE angriff SET angriff_wert = angriff_wert - '$verteidigung3' WHERE angreifer = '$angreifer' AND verteidiger = '$verteidiger' AND ankunft = '$da'"); 
                  
                      echo "<br>Einheit: $einheit_verteidiger ";
                      echo "<br>Übriger Angriffs Wert: $b->angriff_wert ";
                      echo "<br>Angriff Abzug: $verteidigung3 <br>";
                  }
                  
              }
                  endwhile;
              }

                  }
                  
                  
                  mysql_query("DELETE FROM angriff WHERE angreifer = '$angreifer' AND verteidiger = '$verteidiger' AND ankunft = '$da'"); 
                  mysql_query("INSERT INTO post (Name, Absender, Betreff, Text, Datum) values ('System', '$angreifer', 'Angriff Verloren', 'Sie haben $verteidiger angegriffen und haben verloren. Der Gegner hat alle Einheiten vernichtet. Aber Sie haben das Lager geschwächt.', '$datumzeit')"); 
                  
                  }
                  
                  } else {
                  $diffDate = $rest;
                  $days = floor($diffDate / 24 / 60 / 60 );
                  $diffDate = $diffDate - ($days*24*60*60);
                  $hours = floor($diffDate / 60 / 60);
                  $diffDate = ($diffDate - ($hours*60*60));
                  $minutes = floor($diffDate/60);
                  $diffDate = $diffDate - ($minutes*60);
                  $seconds = floor($diffDate);
                  echo "Dieser Vorgang wird in $days Tagen $hours:$minutes:$seconds Stunden abgeschlossen sein.<br><br>";
              }}
              ?>

              Kommentar


              • #8
                weil es tausende Abfragen sind?
                PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                Kommentar


                • #9
                  Das Script dauert mehr als 30 Sek. Der Server, wo das Script drauf liegt, ist sehr schnell. Wie soll ich denn die Abfragen weniger machen?

                  Kommentar


                  • #10
                    Ich weiß nicht, eventuell könnte es aber auch helfen sich zu überlegen ob das für PHP geeignet ist


                    MfG Floriam
                    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                    Kommentar


                    • #11
                      vermeide rekursion und et lüpp
                      (-:
                      Bookmarks:·Bilder·Jobs·Recht·
                      kostenloser Webkataloge-Assistent

                      Kommentar


                      • #12
                        kann es sein, das du mehrere Endlosschleifen der Form

                        PHP-Code:
                        while($ranking=mysql_fetch_array(mysql_query("SELECT * FROM kaserne"))){ 
                        drin hast
                        TBT

                        Die zwei wichtigsten Regeln für eine berufliche Karriere:
                        1. Verrate niemals alles was du weißt!


                        PHP 2 AllPatrizier II Browsergame

                        Kommentar


                        • #13
                          @TBT: Zustimmung!
                          Darauf würde ich auch tippen.

                          Kommentar


                          • #14
                            Aber die Schleifen da brauche ich für alle Einheiten der Kaserne auszulesen! Oder kann man das auch anders machen?

                            Kommentar

                            Lädt...
                            X