Ich habe mal wieder zu viel Zeit gehabt...
Heut morgen kam ich zu einer kleinen Diskusion mit mir selber:
Ich-> Wie es wohl wäre, wenn man eine art Gästebuch im Spiel hätte?
Ich-> Ein Gäsebuch in einem Spiel? Strange...
Ich-> Kann man ja auch für andere Sachen benutzen, wie zum beispiel für Accounts. Dann kann jeder User deine Fortschritte sehen.
Ich-> Klingt gut, wollen wir sowas machen?
Ich-> Ja, ich hätte Zeit..
So, das war dann auch schon der spaßige Teil.
Um das zu realisiern, brauchen wir die Http.dll vom guten alten Bl@cksp@rk, einen Webspace mit einer Database und Php (da gibt es viele kostenlose möglichkeiten), ein paar kenntnisse in PHP und GML. Das sollte es schon gewesen sein. Als erstes muss man sich immer im klaren sein, was man alles Speichern will. Ich habe mich für Name, E-mail, Homepage und Kommentar entschieden. Es gibt da 2. möglichkeiten diese in die Database zu schreiben:
1. Ein formular von einer Homepage aus.
2. Die Informationen vom Game aus an die PHP datei senden.
Ich wurde nicht schlüssig mit mir selber, und deshalb habe ich beide möglichkeiten realisiert.
Der eigentliche unterschied zwischen den beiden PHP dateien ist eigentlich nur das die die für die Homepage gedacht ist, ein formular hat. Diese gibt einen Text wieder, wenn ein z.B. ein feld leer gelassen wurde. Die andere Version (die fürs Game) bekommt die Werte von der Http.dll übermittelt, und gibt eine Zahl wieder. Wenn man z.B nicht die E-mail angibt, gibt diese Version keinen Text wieder, wäre ja auch schwachsinnig, sondern ein Zahl. In diesem fall die 3 (glaub ich).
Das auslesen der Database ist wohl der einfachste Akt. Diw Php datei ließt die Database aus, "genneriert" einen text, und übergibt ihn dann an unser Programm.
So, schluß mit Theorie..
Schauen wir uns doch erst mal den SQL script an, der die Tabelle in unser Mysql Database anlegt:
Da ich jetzt nicht damit rechne, das die meisten sich damit auskennen, sage ich nur soviel. Unter phpmyadmin.domain.de kann man diesen SQL code ausführen, dann wird alles so eingerichtet, wie wir es in unserem Example brauchen. Die SQL datei liegt außerdem auch bei.
Als nächsets knüpfen wir uns die Php dateien auf vor. Diese sollten auf dem webspace liegen.
Wie wir schon im theoretischen Teil fesstgestellt haben, gibt es 3 dateien. Die die sich mit Php auskennen, werden sofort verstehen was ich das gemacht habe. Für den rest habe ich alles gut durchkommentiert. Diese dateien liegen (wie alle) bei.
Spoiler anzeigen
Spoiler anzeigen
Spoiler anzeigen
Ihr habt nur Bahnhof verstanden? Hätte ich vor 2. monaten auch nur
Als letztes gehts weiter mit dem GM. Da ich mal davon augehe, das die meisten hier damit mehr oder weniger arbeiten können, gehe ich nur die Theorie durch.
Wir tratschen erst mal alle brav rüber ins Erweiterungen & Tools Forum, und finden die Http.dll > Dll HTTP DLL <
Laden uns die scripts in den GM, und fertg is. Ne scherz.
Wenn man das Programm starten, wird man als erstes gefragt was man machen will. Wenn man aus dem Game herraus einen Eintrag machen möchte, haben wir die funktion http_add_post(). Richtig benutzt sieht das dann so aus:
Die letzte funktion, http_request() sendet die angaben die wir mit http_add_post() gemacht haben, und gibt das wieder, was mein Php script wiedergibt. Wer jetzt aufmerksam war, weiß das dies eine zahl ist. 0 wenn alles gut gin, 1. wenn dies fehlt, 2. wenn das fehlt, usw.
Durch ein switch statement, wird das dann behandelt.
Wenn man beim Starten des Programmes auf den 2. button drückt, ließt das Programm die PHP datei get_users.php, welche wiederum die Database ließt.
Uff, doch viel geworden..
Natürlich wird für all dies eine Pro version des GM benötigt.
EDIT: einen winzige verbesserung.. (Wenn man keine HP angibt, wird stat einer leeren Zeile ein '"-" angezeigt. Datei akuallisiert.
EDIT2: Noch einen kleinen denkfehlergefunden: Durch htmlentities() werden sonderzeichen umgewandelt. Das brauchen wir aber nicht, weil wir die eingaben ja im Programm anschauen, und nicht in einem Browser.
EDIT 3: Mit gm6.
Hier die versprochenden Dateien:
1. Executable.rar (enthält eine exe für jene, die nur Lite haben, sich das troz dem mal angucken wollen. Läuft mit einer meiner Databases)
2. Editable.rar ( enthält die gmk. die http.dll, die php dateien und die angesprochende sql datei. Man muss erst mal hand anlegen, bevor man da war vorzeigbares hat.)
3. gm6.rar (enthält NUR die gm6 datei)
Die HTTP-dll in den Archiven ist nicht mehr up to date. Sorgt dafür, dass es immer die neueste ist.
MfG SDX
Heut morgen kam ich zu einer kleinen Diskusion mit mir selber:
Ich-> Wie es wohl wäre, wenn man eine art Gästebuch im Spiel hätte?
Ich-> Ein Gäsebuch in einem Spiel? Strange...
Ich-> Kann man ja auch für andere Sachen benutzen, wie zum beispiel für Accounts. Dann kann jeder User deine Fortschritte sehen.
Ich-> Klingt gut, wollen wir sowas machen?
Ich-> Ja, ich hätte Zeit..
So, das war dann auch schon der spaßige Teil.
Um das zu realisiern, brauchen wir die Http.dll vom guten alten Bl@cksp@rk, einen Webspace mit einer Database und Php (da gibt es viele kostenlose möglichkeiten), ein paar kenntnisse in PHP und GML. Das sollte es schon gewesen sein. Als erstes muss man sich immer im klaren sein, was man alles Speichern will. Ich habe mich für Name, E-mail, Homepage und Kommentar entschieden. Es gibt da 2. möglichkeiten diese in die Database zu schreiben:
1. Ein formular von einer Homepage aus.
2. Die Informationen vom Game aus an die PHP datei senden.
Ich wurde nicht schlüssig mit mir selber, und deshalb habe ich beide möglichkeiten realisiert.
Der eigentliche unterschied zwischen den beiden PHP dateien ist eigentlich nur das die die für die Homepage gedacht ist, ein formular hat. Diese gibt einen Text wieder, wenn ein z.B. ein feld leer gelassen wurde. Die andere Version (die fürs Game) bekommt die Werte von der Http.dll übermittelt, und gibt eine Zahl wieder. Wenn man z.B nicht die E-mail angibt, gibt diese Version keinen Text wieder, wäre ja auch schwachsinnig, sondern ein Zahl. In diesem fall die 3 (glaub ich).
Das auslesen der Database ist wohl der einfachste Akt. Diw Php datei ließt die Database aus, "genneriert" einen text, und übergibt ihn dann an unser Programm.
So, schluß mit Theorie..
Schauen wir uns doch erst mal den SQL script an, der die Tabelle in unser Mysql Database anlegt:
Da ich jetzt nicht damit rechne, das die meisten sich damit auskennen, sage ich nur soviel. Unter phpmyadmin.domain.de kann man diesen SQL code ausführen, dann wird alles so eingerichtet, wie wir es in unserem Example brauchen. Die SQL datei liegt außerdem auch bei.
Als nächsets knüpfen wir uns die Php dateien auf vor. Diese sollten auf dem webspace liegen.
Wie wir schon im theoretischen Teil fesstgestellt haben, gibt es 3 dateien. Die die sich mit Php auskennen, werden sofort verstehen was ich das gemacht habe. Für den rest habe ich alles gut durchkommentiert. Diese dateien liegen (wie alle) bei.
Diese code ist für die Homepage. Wie sie aussieht kann man hier sehen
Diese Datei schreibt ebenfalls die Database. Nur ist diese nicht zum betrachten im browser gedacht
Alles anzeigen
PHP-Quellcode
- <!--?php
- // diese datei ist NUR für die benutzung im zusammenhang mit dem Programm zu nutzen. Wenn man diese im browser öffnet, bringts rein gar nichts
- // wir "säubern" die eingaben mit trim()
- $_POST['name']=trim($_POST['name']);
- $_POST['email']=trim($_POST['email']);
- $_POST['homepage']=trim($_POST['homepage']);
- $_POST['komment']=trim($_POST['komment']);
- // wenn einer der eingaben leer ist, wird ein fehler gemeldet
- if(!$_POST['email']){$fehler=1;}
- if(!$_POST['komment']){$fehler=2;}
- if(!$_POST['name']){$fehler=3;}
- // wir können jetzt eine verbindung zu einer database erstellen
- mysql_connect("localhost","database","Pass") or die("Database fehler: ".mysql_error());
- mysql_select_db("database");
- // wir holen uns alle werte der spalte "name" und "email" raus...
- $user="SELECT name, email FROM users";
- $users=mysql_query($user);
- // ...schreiben diese in einen array..
- for($i=0;$i<mysql_num_rows($users);$i++) {
- $ergebnis[$i]=mysql_fetch_array($users);
- }
- // ...und können jetzt cheken ob es bereits einen User gibt, der die gleiche email bzw nick hat..
- for($i=0;$i<count($ergebnis);$i++){
- if ($ergebnis[$i]['name']==$_POST['name']) {
- $fehler=4; // wenn ja, dann gibt es einen fehler
- break;
- }
- if ($ergebnis[$i]['email']==$_POST['email']) {
- $fehler=5;
- break;
- }
- }
- if($fehler){ //wenn es einen fehler gegeben hat wir nicht weiter gemacht, und stat dessen der fehler wiedergegeben
- $meldung=$fehler;
- } else { // wenn kein fehler stat fand, erstellen wir einen sql kommando
- $sql="INSERT INTO users (`name` ,`email`, `homepage` ,`komment` ) VALUES (
- '".mysql_real_escape_string($_POST['name'])."',
- '".mysql_real_escape_string($_POST['email'])."',
- '".mysql_real_escape_string($_POST['homepage'])."',
- '".mysql_real_escape_string($_POST['komment'])."'
- );";
- mysql_query($sql); // und führen dieses aus, jetzt sind die werte in der database gespeichert
- $meldung=0;
- }
- echo $meldung; // jetzt wird die meldung wiedegegeben, dies ist zwischen 0 und 5. 0=geglückt, 1=E-mail fehlt, usw..
- ?>
Diese letzte Datei ist zu aulesen der Database. Ebenfalls nicht zum betrachten im Browser
Alles anzeigen
PHP-Quellcode
- <!--?php
- // diese datei ist NUR für die benutzung im zusammenhang mit dem Programm zu nutzen. Wenn man diese im browser öffnet, bringts rein gar nichts
- // wir verbinden mit der database..
- mysql_connect("localhost","database","pass") or die("Database fehler: ".mysql_error());
- mysql_select_db("database");
- //..wählen die werte aus..
- $user="SELECT name, email, homepage, komment FROM users";
- $users=mysql_query($user);
- //..schreiben die mittels einer for schleife in einen array...
- for($i=0;$i<mysql_num_rows($users);$i++) {
- $ergebnis[$i]=mysql_fetch_array($users);
- }
- //..und geben einen alles wieder
- for($i=0;$i<count($ergebnis);$i++){
- echo $ergebnis[$i]['name']."#";
- echo $ergebnis[$i]['email']."#";
- if ($ergebnis[$i]['homepage']){
- echo $ergebnis[$i]['homepage']."#";
- } else { echo "-#"; }
- echo $ergebnis[$i]['komment']."#";
- echo "#";
- }
- ?>
Ihr habt nur Bahnhof verstanden? Hätte ich vor 2. monaten auch nur

Als letztes gehts weiter mit dem GM. Da ich mal davon augehe, das die meisten hier damit mehr oder weniger arbeiten können, gehe ich nur die Theorie durch.
Wir tratschen erst mal alle brav rüber ins Erweiterungen & Tools Forum, und finden die Http.dll > Dll HTTP DLL <
Laden uns die scripts in den GM, und fertg is. Ne scherz.
Wenn man das Programm starten, wird man als erstes gefragt was man machen will. Wenn man aus dem Game herraus einen Eintrag machen möchte, haben wir die funktion http_add_post(). Richtig benutzt sieht das dann so aus:
GML-Quellcode
- http_add_post('name',get_string('Dein name','')); // die angaben werden gesammelt
- http_add_post('email',get_string('Deine E-mail',''));
- http_add_post('homepage',get_string('Deine Hp#optinal',''));
- http_add_post('komment',get_string('Das Kommentar',''));
- status=http_request(host,path+'add_user.php'); // und an den PHP script gesendet. Dieser gibt dann den status wieder
Durch ein switch statement, wird das dann behandelt.
Wenn man beim Starten des Programmes auf den 2. button drückt, ließt das Programm die PHP datei get_users.php, welche wiederum die Database ließt.
Uff, doch viel geworden..
Natürlich wird für all dies eine Pro version des GM benötigt.
EDIT: einen winzige verbesserung.. (Wenn man keine HP angibt, wird stat einer leeren Zeile ein '"-" angezeigt. Datei akuallisiert.
EDIT2: Noch einen kleinen denkfehlergefunden: Durch htmlentities() werden sonderzeichen umgewandelt. Das brauchen wir aber nicht, weil wir die eingaben ja im Programm anschauen, und nicht in einem Browser.
EDIT 3: Mit gm6.
Hier die versprochenden Dateien:
1. Executable.rar (enthält eine exe für jene, die nur Lite haben, sich das troz dem mal angucken wollen. Läuft mit einer meiner Databases)
2. Editable.rar ( enthält die gmk. die http.dll, die php dateien und die angesprochende sql datei. Man muss erst mal hand anlegen, bevor man da war vorzeigbares hat.)
3. gm6.rar (enthält NUR die gm6 datei)
Die HTTP-dll in den Archiven ist nicht mehr up to date. Sorgt dafür, dass es immer die neueste ist.
MfG SDX
Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von SDX ()