Automatisch ein script abrufen?

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

  • Automatisch ein script abrufen?

    Hallo

    Ich bin gerade dabei ein PHP Spiel zu bauen komme auch recht gut voran nur jetzt weiss ich leider nicht mehr weiter!

    Ich habe mir ein script geschrieben das jedem Spieler bestimmte Rohstoffe gibt jenachdem wie hoch seinen Minenstuffen sind. Das funktioniert auch nun will ich das aber so haben das jede Stunde das Script für jeden Spieler ausgeführt wird. Ich habe schon versucht das Script per includet Befehl einzubauen aber da bekommt der Spieler immer dann seine Rohstoffe wenn er sich einloggt und das ist nicht gerade gut, da man sich dann 10 mal nacheinander einloggen könnte und bekommt jedesmal seine Rohstoffe...
    Geht das irgemdwie das man sagt das Script wird beim login aufgerufen und rechnet dann aus wie lange der user offline war und gibt ihm dann seine Rohstoffe oder geht dass so das man das Script im hintergrund laufen lässt auch wenn man nicht am pc ist? D.h. man ist nicht eingeloggt aber bekommt trozdem seine Rohstoffe???? Ich wäre sehr dankbar wenn mir jemand helfen könnte.

    MFG

    Radeon

  • #2
    OffTopic:

    Hast wohl GalaxyWars gespielt was?



    ... schon an Kekse gedacht?
    oder ... n Feld in der DBTabelle das angibt, ob Res gutgeschrieben oder nicht oder so in der Art? Die Lösung mit ausrechnen, wann der letzte Logout war bis dato gefällt mir eig ganz gut, wo ist denn nu das Prob? Kannst Dich nur nicht entscheiden, oder brauchst Code-Hilfe?
    Vtl. etwas mehr Datails über Deinen Plan, inkl. Satzzeichen wären fein

    ( Xenalla != PHP Guru - aber schauen wer mal)

    Kommentar


    • #3
      Einfach bei JEDEM Seiteaufruf (egal welche seite einfach per require() einbaun...) timestamp in die DB schreiben und dann anhand dieser ausrechnen wie viel Res der spieler gutgeschrieben bekommt.

      Hab übrigens mal für eine lange Zeit OGame gespielt *gggg*
      Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
      (Albert Einstein)

      Kommentar


      • #4
        Das mit dem timestamp könnte vielleicht eine möglichkeit sein, könnte mir vielleicht jemand ein Beispiel dazu machen? so zum erklären oder das ich sehe wie sowas aufgebaut sein muss?

        Kommentar


        • #5
          Schreib n Script das den aktuellen timestamp in die DB schreibt und ruf das Script bei allen aktionen die der Spieler ausführt auf. Das wars schon...
          Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
          (Albert Einstein)

          Kommentar


          • #6
            ok habe ein script gemacht.

            ich habe jetzt folgende dateien per require(); eingebaut.

            zeit.php <---- das wo die zeit einträgt
            rohstoffe.php <---- das wo die rohstoffe hinzufügt

            jetzt loggt sich der Spieler ein und soll seine Rohstoffe bekommen, die er auch bekommt aber leider für jedes neu laden der Seite.

            Wie man das jetzt macht das man die rohstoffe nur jede stunde bekommt also das es nicht bei jedem neuladen der Seite?

            Ich verstehe das leider immer noch net so recht

            --------
            EDIT: @Xenalla Code hilfe wäre nicht schlecht könntest mir vielleicht ein Beispiel machen?
            Zuletzt geändert von Radeon; 21.09.2003, 20:58.

            Kommentar


            • #7
              du könntest auch einen cronjob verwenden...

              Ich weiß nciht wie zuverlässig diese sind, aber es gibt umsonst welche auf www.jgs-xa.de

              Kommentar


              • #8
                Angenommen Du hast eine MySql Tabelle namens "tabellenname", mit fogender Struktur:

                id int(11) auto_increment,
                spalte1 tinytext,
                spalte2 timestamp(14),
                PRIMARY KEY (id);

                dann würdest Du in PHP dieses hier schreiben:
                PHP-Code:
                mysql_query("update tabellenname  set spalte1='eintrag1' spalte2=now() where id='$id'"); 
                so tragt er in spalte1 irgendeinen eintrag ($eintrag1) ein, in spalte2 den timestamp und zwar dort, wo id der Variablen $id entspricht.

                Nachdem ich deinen Code nicht kenne, weiss ich nicht sicher, ob das nu das ist was Du brauchst oder nicht

                Kommentar


                • #9
                  Original geschrieben von OliOli
                  du könntest auch einen cronjob verwenden...
                  doch nich dafür!

                  Kommentar


                  • #10
                    Also ich setze euch jetzt mal mein Script rein das so ausgeführt werden soll das wenn sich ein user einloggt ihm seine Rohstoffe gegeben werden.
                    Aber nur Stündlich! nicht das bei jedem login die rohstoffe hinzukommen.
                    ein problemm ist auch noch das jeder user seine Minen auf verschiedenen stuffen hat also kann man das script nicht für alle ausführen. und wenn ein user lange zeit offline war soll er bei nächsten login die Rohstoffe bekommen die er bekommen soll. (Hoffe ich habe das gut genug erklärt )

                    Hier mein Script:

                    PHP-Code:
                    <?php
                    include ("system/config_local.php");
                    include (
                    "system/includes.php");
                    check_login();
                    ?>

                    <?
                    //Informationen über die Rohstoffe und Gebäude holen

                        $plyrname = check_login();
                        $username = check_login();

                          $iron = pquery($plyrname, "iron");
                          $silicon = pquery($plyrname, "silicon");
                          $food = pquery($plyrname, "food");
                          $credits = pquery($plyrname, "credits");

                        $emine = pquery($username, "emine");
                        $smine = pquery($username, "smine");
                        $gmine = pquery($username, "gmine");
                        $fabrik = pquery($username, "fabrik");
                        
                    //Menge ausrechen

                        $eminenstuffe = ($emine * 38);
                        $fabrikstuffe = ($fabrik * 32);
                        $sminenstuffe = ($smine * 34);
                        $gminenstuffe = ($gmine * 39);

                    //Menge die dazu gegeben wird

                        $totalemine = ($iron + $eminenstuffe);
                        $totalfabrik = ($food + $fabrikstuffe);
                        $totalsmine = ($silicon + $sminenstuffe);
                        $totalgmine = ($credits + $gminenstuffe);
                        
                    //Rohstoffe hinzufügen

                        $conn = mysql_connect($db_host, $db_user, $db_pass);
                        mysql_select_db($db_name, $conn);

                        $giveiron = "UPDATE playerstats set iron =  0 + $totalemine where player_name = \"$username\"";
                        $givefood = "UPDATE playerstats set food = 0 + $totalfabrik where player_name = \"$username\"";
                        $givesilicon = "UPDATE playerstats set silicon = 0 + $totalsmine where player_name = \"$username\"";
                        $givecredits = "UPDATE playerstats set credits = 0 + $totalgmine where player_name = \"$username\"";

                        $result1 = mysql_query($giveiron, $conn) or die(mysql_error());
                          $result2 = mysql_query($givefood, $conn) or die(mysql_error());
                          $result3 = mysql_query($givesilicon, $conn) or die(mysql_error());
                          $result4 = mysql_query($givecredits, $conn) or die(mysql_error());
                        
                        mysql_close($conn);
                    ?>

                    Kommentar


                    • #11
                      ok brauche keine hilfe mehr habe es hinbekommen durch zeitberechnung

                      Trozdem Danke

                      Kommentar

                      Lädt...
                      X