Mysql Datenbankzugriff mit Gml

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

    • Zweischtein schrieb:

      ist es auch möglich, das man in der mitte eine seite anzeigen lassen kann? also, mit den neusten updates, und dan wen man sich einloggt, das es dan automatisch das erstellte game ändert und die game.exe (so heisst es bei mir ;) )ersetzt wird?

      Sowas ist natürlich möglich, hat aber weniger mit MySql zutun. Mithilfe der datenbank kannst du abrufen ob ein update vorhanden ist oder nicht und gegebenenfalls ein entsprechendes Fenster bzw. eine Internetseite anzeigen lassen. Anschließend wird die neue Datei mittels http dll heruntergelaen.

      Das Ersetzen des Spiels musst du (sofern du unbedingt die game.exe datei ersetzen musst, was in 99% der Fälle der Fall ist) dann aber mit einer Batch Datei machen. Denn kein Programm kann sich selbst löschen!
      Batch ist die selbe Skriptsprache die du auch in der Komandozeile von Windows (cmd) verwendest. Wenn du solchen code in eine beliebige .bat datei speicherst und sie im game maker mit execute_prgram ausführst werden die darin enthaltenen Befehle ausgeführt.
      In der Praxis im GM heist dass du rufst die Batchdatei auf und beendest dann das Spiel sofort (wichtig dabei das aurgument von "wait" für execute_program auf false setzen! ).
      Die Batchdatei sollte dann folgende dinge nacheinander machen: (die entsprechenden Befehle dafür musst du dir im Internet suchen. Z.b. hier antonis.de/dos/batchtut/index.htm)
      1. Eins oder zwei Sekunden warten (um sicherzugehen dass das Spiel beendet wurde)
      2. Die game.exe löschen
      3. Die neue game.exe aus dem ordner in der sie heruntergeladen wurde anstelle der alten kopieren und dann ausführen.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)

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

    • Mal eine andere (vielleicht sehr triviale?) Frage:
      Kann ich die Datensätze aus der Datenbank nur auslesen und drawen lassen (so wie hier in dem Beispiel),
      oder kann ich die einzelnen Datensätze auch z.B. in eine Liste speichern?

      Habe gerade keinen Ansatz, wie das gehen könnte. ?(
    • Sorry , nachdem es keinerlei Reaktion auf meinen langen Post beim letzten Mal gab, hab ich sowas von keine Lust nochmal zu helfen... ><' ist aber nicht fair, ich weiss...

      Helfen ist aber sowieso hier schwieriger. Sag doch mal woran du scheiterst. Weisst du überhaupt wie man lists verwendet? wenn nicht solltest du dir mal die Hilfe durchlesen. Falls doch dann sollte dies nicht zu schwierig sein...

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Mit lists habe ich nicht das Problem, habe sie schon mehrmals verwendet.
      Mir geht es generell darum Werte aus der DB auszulesen und mit diesem dann zu arbeiten.
      (Zb. Zahlen mit denen man rechnen will etc.)

      In dem Beispiel hier werden ja ale einträge einfach in die Variable inhalt gespeichert und die wird dann gedrawed.
      (Wenn ich das so richtig gesehen habe)

      Ich weiß jetzt halt nicht, wie ich gezielt einzelne Werte auslesen und weiter verarbeiten kann.
    • Ah. Leider bin ich auf nem Handy und kann von daher das example grad nicht ansehen. Aber ich frage mich was dich daran hindert schlicht an der Stelle wo der Wert heruntergeladen und in eine Variable gespeichert wird, den Wert in die Liste zu übertragen...

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Weil irgendwie nicht nur ein Wert heruntergeladen wird.

      Im Create Event steht:

      GML-Quellcode

      1. inhalt=http_request(host,path+'get_entries.php');break;


      Und im Draw Event dann:

      GML-Quellcode

      1. draw_text(10,10+scroll,inhalt);


      Es werden alle Einträge gedrawed. Es wird also direkt alles in die Variable inhalt gespeichert.
    • Okey, jetzt verstehe ich es.
      So wie es aussieht ist wohl die einzig sinvolle Lösung den string 'manuell' auseinander zu nehmen.
      Wie du vieleicht erkannt hast, speichert SDX' PHP-skript zur ausgabe, die Daten in einen einzelnen String wobei die einzelnen Werte durch '#' getrennt sind (weil dies der Zeilenumbruch im GM ist).

      Also ist alles was du tun must, mithilfe einer Schleife und den String-funktionen (string_char_at() glaube ich), durch den String zu gehen und jeweils alles was zwischen zwei #-Symbole ist, in die Liste zu kopieren.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Copy hat da was.
      string_split(str,trenn,list) (reg/pro only)
      Teilt einen String an einem bestimmten Trennzeichen auf und fügt die einzelnen Substrings einer Liste hinzu.

      Das mit dem senden: Im tutorial wird das schreiben/senden sowie das lesen/empfangen aus der Datenbank beschrieben. So wie ich dich dekryptiere ist es das was du willst.

      MfG SDX
    • Basti schrieb:

      Hmm ok, schade.
      Aber das ist jedenfalls eine Lösung.
      (Warum ich da nicht selbst drauf gekommen bin... ?( )

      Danke dir auf jeden Fall! :thumbup:


      Kein problem.

      Aber was meinst du mit schade?
      Leider ist PHP nunmal nicht direkt mit GML kompatibel so dass man keine Datenstrukturen wie arrays oder Listen übertragen kann ohne solch einen Umweg über strings zu gehen.
      Das verändern des Skripts um dann durch mehrmaliges Aufrufen jeweils einen Wert zu erhalten ist übrigens sehr sinnlos da dies wohl 1000 mal mehr Zeit beansprucht als eine Funktion wie die von Copyboy.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Ich bekomme manchmal die Fehlermeldung

      Quellcode

      1. ERROR in
      2. action number 1
      3. of Alarm Event for alarm 3
      4. for object obj_wait:
      5. Error defining an external function.


      Diese kommt allerdings sehr zufällig. Also nicht immer.
      Weiß jemand, woran das liegen könnte, bzw. hat jemand ähnliche Probleme?

      Die Meldung kommt sogar, wenn ich nur http_init() aufrufe, also gar nicht erst online was mache.

      Kann man irgendwie abfrage, ob die Initialisierung erfolgreich war und ggf. noch einmal neu initialisieren?
      Oder wie kann man solche Fehlermeldungen sonst umgehen? ?(
    • Hast du die http.dll genommen, die im ersten Post im Download enthalten ist? Wenn dem so ist, dann könnte es daran liegen, dass dort eine veraltete Version dieser DLL enthalten ist. Probier' einfach mal die aktuelle Version von meiner Seite zu verwenden. Wenn das nichts bringt, könntes du auch stattdessen eine andere HTTP DLL verwenden oder meine Extension. Die ist zwar etwas anders zu handhaben, aber prinzipiell sollte es dann so wie hier im Tutorial funktioniert.
    • DragonGamer schrieb:

      Das ist ziemlich ungwönlich... hast du wirklich zweimal sofort direkt nacheinander das Spiel gestartet und einmal hats geklapt und einmal nicht? o:

      Ich glaube, wenn ich 2x wirklich direkt hintereinander gestartet habe, dann war es immer gleich (also entweder beidemale kein Fehler oder beidemale Fehler)
      Es ist also so, dass ich vormittags was mache... dann gehts... dann mache ich weiter und auf einmal gehts ne dann nicht, obwohl ich bzgl. der http.dll nichts verändert habe, sondern nur andere Sachen.
      Wenn ich es dann abends oder einfach mal einen tag später erneut versuche, gehts wieder, ohne etwas geändert zu haben.

      Bl@ckSp@rk schrieb:

      Hast du die http.dll genommen, die im ersten Post im Download enthalten ist? Wenn dem so ist, dann könnte es daran liegen, dass dort eine veraltete Version dieser DLL enthalten ist. Probier' einfach mal die aktuelle Version von meiner Seite zu verwenden. Wenn das nichts bringt, könntes du auch stattdessen eine andere HTTP DLL verwenden oder meine Extension. Die ist zwar etwas anders zu handhaben, aber prinzipiell sollte es dann so wie hier im Tutorial funktioniert.

      Kann ich dir so genau nicht sagen, welche ich genommen hatte, da ich die schon länger habe.
      Wahrscheinlich liegt es dann an der älteren Version.
      Ich werde mal die aktuelle testen.
      Im Moment funktioniert es damit. Muss ja aber nichts heißen. ;)
      Sollte der Fehler wieder kommen, melde ich mich.

      Aber vielen Dank schonmal für die schnelle Antwort! :thumbup:
    • Hallo, sorry, dass ich den alten Thread nochmal hervorrufe, aber einen neuen zu eröffnen wäre ja Quatsch gewesen. ;)

      Ich wollte mal fragen, ob das Skript Schwierigkeiten damit hat, Varaiablen aus Sessions einzulesen?
      Ich bin nämlich Administrator eines Forums und wollte dort ein kleines Spiel einbauen (in HTML5).
      Fand es eine coole Idee, wenn das Spiel erkennt, welcher User denn am Start ist.
      Doch hat er mit dem Auslesen genau dieser Variable anscheinend Probleme.

      Führe ich die PHP Datei, die die Variable einliest, im Browser aus, gibt es keine Probleme.
      Für mein Spiel bin ich aber nur "Gast".

      Gibt es keine Möglichkeit, dem Spiel zu sagen, welcher User gerade spielt?
    • Das liegt vermutlich daran, dass der Browser die Cookies gesetzt hat, die benötigt werden um den User zu identifizieren. Das HTML5 Game hat darauf aber keinen Zugriff wies scheint.

      © 2008 by Teamgrill Productions
    • Hallo Basti,

      Du solltest dich vorher informieren, wie deine SESSION von der Forensoftware gespeichert / genannt wird. Der Rest ist mit etwas Hintergrundwissen und Firebug ein klacks:

      die $_SESSION wird Serverseitig gespeichert (Tür mit Schloss). Die Session ID ist Clientseitig gespeichert (Schlüssel). In deinem Fall der Webbrowser.

      Dein Nutzer loggt sich also in der Forensoftware ein, die Session wird auf deinem Server im z.B. /temp Verzeichnis erstellt. Daraufhin wird ein Cookie mit der Session ID beim Client des Nutzers erstellt. Das Cookie müsste nun im DOM via Javascript erreichbar sein.

      DOM:

      Quellcode

      1. SESSION_ID = 123456


      Mit Javascript erreichbar via:

      Quellcode

      1. var id = document.SESSION_ID;
      2. alert(id); //123456


      Nun fehlt dir also eigentlich nur noch die Möglichkeit, Javascript im GM auszuführen. Ich selber habe zwar keinen GM: HTML, allerdings der nette Herr im folgenden Thread der englischsprachigen GMC:

      gmc.yoyogames.com/index.php?showtopic=520070

      Damit solltest du in der Lage sein, deine Session ID auszulesen und zu verwerten.

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