Online Counter mit GMS

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Online Counter mit GMS

      Hi Leutz,

      in einem anderen Thread habe ich es schon erwähnt. Ich suche eine Möglichkeit einen Online-Counter zu erstellen. Diese soll bei einen Event (z.B. kill eines Enemey) den Online-Counter um ein Zähler hochstellen. Mehr nicht, keine Namen oder sonst was für Daten einfach immer +1. Dieser Counter soll im Hauptmenü angezeigt werden also auch lesbar sein wenn eine Onlineverbindung besteht.

      Zusammengefasst:

      - Online-Counter bei bestimmten Event +1
      - Anzeigbar im Spiel
      - Spiel ist/kommt in den App-Store (iPad)
      - Natürlich manipulations Sicher

      Fetter Server mit sämtlichen Dingen wie PHP, MySQL usw. vorhanden. Kein Webspace, wirklich Soloserver.

      Ist so etwas super Aufwendig? Weil ich benötige da wirklich 100% Support, Links zu PHP & Co Tutorials helfen mir da nicht. Vielleicht hat jemand eine solche Anwendung schon geschrieben oder nimmt die Herausforderung an? :D
    • Da du das ganze als App veröffentlichen willst, weiß ich nicht welche Funktionen GMS da zur Verfügung stellt, aber falls du irgendwie einen HTTP-Request absenden könntest, wäre das ganze überhaupt kein Problem. Ich werde schnell mal schauen, was sich da machen lässt.

      Prinzipiell bräuchtest du
      • 2 PHP-Dateien (Eine zum Lesen und die Andere zum Schreiben)
      • 1 Text-Datei oder 1 MySQL-Tabelle


      Diese 3 Dinge sind relativ schnell gemacht, jetzt ist wie gesagt nur noch die Frage, wie GMS damit umgehen könnte.

      Edit: So jetzt habe ich bevor ich abgesendet habe, noch mal schnell gegooglet und das hier gefunden: http_get

      Jetzt sollte alles eigentlich kein Problem mehr sein. Falls du Hilfe bei der Durchführung brauchst, kann ich dir schnell auch noch mehr Code zeigen.

      MfG
      Rodrog
      Je mehr Käse, desto mehr Löcher.
      Je mehr Löcher, desto weniger Käse.
      Ergo: Je mehr Käse, desto weniger Käse.
    • Ich dachte eigentlich an eine My-SQL Tabelle. Ich bin auch schon am googeln und habe was gefunden was mir vielleicht schon hilf. Die Tabelle anlegen und die Zugangsdaten in PHP eintragen bekomme ich wahrscheinlich noch hin, aber eine solche PHP zu schreiben nicht.

      Ich raffe das auch noch nicht so genau mit dem HTTP-Request. Dort im Beispiel ist keine bestimmte PHP-Datei in der URL angesprochen oder heißt die dort "logon". Sorry das ich so blöd frage, aber ich habe mich damit noch nie so wirklich befasst.

      Wenn ich es nicht wirklich hinbekomme würde ich noch mal was schreiben, nicht das ich es gleich schaffe und du dir die Mühe gemacht hast. Aber herzlichen Dank schon mal!
    • Ich hab dir jetzt mal einen kleinen Prototypen geschrieben. Es ist jetzt nicht 100%ig sicher (auch nicht sauber programmiert) aber es funktioniert für den ersten Versuch schon mal. Also du benötigst jetzt folgendes.

      1-MySql-Tabelle

      Quellcode

      1. CREATE TABLE stat (
      2. cnt INT
      3. );


      2-PHP-Files (read / write)

      read.php

      PHP-Quellcode

      1. <?php
      2. $host = "localhost";
      3. $databaseUser = "root";
      4. $databasePassword = "password";
      5. $database = "database";
      6. $link = mysqli_connect($host, $databaseUser, $databasePassword, $database);
      7. //query absetzen -> was steht in meiner Tabelle
      8. $result = mysqli_query($link, "SELECT cnt FROM stat");
      9. //reihe auslesen (in diesem Fall gibt es nur 1 Reihe
      10. $row = mysqli_fetch_array($result);
      11. //Wert 0, also cnt, ausgeben
      12. echo $row[0];
      13. ?>
      Alles anzeigen


      write.php

      PHP-Quellcode

      1. <?php
      2. $host = "localhost";
      3. $databaseUser = "root";
      4. $databasePassword = "password";
      5. $database = "database";
      6. //verbindung öffnen
      7. $link = mysqli_connect($host, $databaseUser, $databasePassword, $database);
      8. //update befehl setzen
      9. $result = mysqli_query($link, "UPDATE stat SET cnt=cnt+1");
      10. if(mysqli_affected_rows($link) == 0) {
      11. //falls keine Zeile geupdated wurde, weil die Tabelle keine Werte beinhaltet, füge 1 Zeile ein (Wird einmal aufgerufen)
      12. mysqli_query($link, "INSERT INTO stat VALUES(1)");
      13. }
      14. ?>
      Alles anzeigen


      Wenn du jetzt noch benutzername/passwort/datenbank richtig eingibst, sollte es schon funktionieren. Wenn du write.php aufrufst, dann wird der Counter um eines erhöht, falls du read.php aufrust wird der Counter ausgegeben. Mithilfe der http_get methoden, kannst du diese dann auslesen.

      MfG
      Rodrog
      Je mehr Käse, desto mehr Löcher.
      Je mehr Löcher, desto weniger Käse.
      Ergo: Je mehr Käse, desto weniger Käse.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Rodrog ()

    • So, ich wollte mich zu dem Thema noch mal melden. Hab schon häufiger hier von solchen Vorhaben gelesen, deshalb hier noch eine Lösung:

      Benutzt habe ich jetzt das async Script von Destron. Welches eigentlich viel mehr kann. Registrierung, Login, Player spezifische Einträge in einer Datenbank speichern. Hier dazu erstmal die Link:

      Youtube Tutorial: youtu.be/jMkIz5QRFE8
      Original Script: dropbox.com/s/249ozghtig75brf/async0_6.zip

      Ich brauchte nur einen globalen Counter, deshalb hier die modifizierte Version: global_counter_example.zip

      Dieses Script ließt den aktuellen Datenbankwert aus und rechnet die neuen Punkte mit rauf. storedscore + submitscore
      Schön ist auch, dass das Script verschiedene PHP Befehle hat, so kann man z.B. abfragen ob es überhaupt einen Score gibt. Die Antwort vom Server ist dann immer 1 oder 0. Somit kann man auch einen generellen online check machen. Ist der Player oder der Server online?


      Viel Spaß und Erfolg damit.