neuer Spieltisch

Der Bereich für Plaudereien in unserem Forum.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 19.08.2005, 13:11

Letzter Beitrag der vorhergehenden Seite:

Da man bei Dudos, trotz der nun vorhandenen Online-Funktion kaum Spieler online findet, einfach weil es selten online gespielt wird (weil man sowieso niemanden anderen findet - ein Teufelskreis), habe ich Thoro vorgeschlagen, ob man den Dudos-Server auch in UU Locator einbinden könnte. Es wäre möglich, man müsste nur eine Schnittstelle für den Server schreiben. http://support.rotering-net.de/viewtopic.php?t=12

Daher meine Frage: ist der Server-Code von der 3. Seite dieses Threads noch der aktuelle? Dann könnte man sich mal dranmachen, da eine kleine Erweiterung vorzunehmen.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 19.08.2005, 14:23

Da The.Modificator durch das Server-Skript und das UUL-Skript mir bereits die "Drecksarbeit" ;) abgenommen hat, konnte ich schnell durch "Mergen" dieser beiden Skripte das Server-Skript für UUL zusammenhacken. Selbstverständlich habe ich es im Privatnetzwerk mit einem eigenen Dudos-Server zumindest ein wenig getestet.

Hinweis:
Als KI-Nummer wird *immer* 0 verwendet, als Zeitalter immer ' ' (Leerzeichen).

(ich habe das Skript entfernt, da es nicht mehr aktuell ist. Weiter unten befindet sich die aktuelle Version).
Zuletzt geändert von TheSearcher am 19.08.2005, 21:17, insgesamt 2-mal geändert.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
Thoro
Forscher
Beiträge: 1494
Registriert: 23.09.2004, 14:43
Geschlecht: männlich
KI-Nummer: 529779
Wohnort: Duisburg
Alter: 42
Kontaktdaten:

Beitrag von Thoro » 19.08.2005, 14:39

Das Skript verletzt die Spezifikationen des tiana4-Format (ok, konntest du nicht wissen):

- Eine KI-Nummer muss eindeutig auf einem Shard sein. Wenn du alle KI-Nummern auf 0 setzt, dann ist diese Bedingung verletzt.
- Ein Zeitaltername darf nicht ein leerer String sein. Bei dir hast du jetzt ein Leerzeichen gesetzt, was ok ist. Aber wenn du keine sonstigen Informationen zur Verbreitung hast, würde ich eher was sinnvolles reinschreiben.
Sarkasmus ... wie originell.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 19.08.2005, 15:03

Ich kann nur das wissen, was im Wiki dokumentiert ist. Das mit dem Zeitalter kann man locker auf "Dudos" ändern (und werde ich auch machen). Ich überlege nur gerade, wie man eine garantiert eindeutige Nummer erzeugen kann. Klar, hier könnte man zu jeder gestarteten Server-Instanz eine Nummer zuordnen und die dann senden (und in einer anderen Tabelle abspeichern, welche Nummer zuletzt verwendet wurde). Ich überlege nur, ob es einfacher geht.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
Gu.Ro
Forscher
Beiträge: 217
Registriert: 02.05.2004, 17:37
Wohnort: Zwickau
Alter: 74

Beitrag von Gu.Ro » 19.08.2005, 16:33

TheSearcher hat geschrieben:...Daher meine Frage: ist der Server-Code von der 3. Seite dieses Threads noch der aktuelle? Dann könnte man sich mal dranmachen, da eine kleine Erweiterung vorzunehmen.
Soviel ich weiß, ist er das. Um sicher zu gehen, muss ich die Frage hier aber an Modi weitergeben, da er ihn installiert hat.

Ich habe gestern schon die Idee gelesen und mir mal die Beschreibung der Tiara-Schnittstelle bei Thoro angesehen. Ich muss aber zugeben, dass ich nicht so richtig was damit anfangen kann. Mir stellt sich daher auch die Frage, welche Änderungen im eigentlichen DUDOS-Programm notwendig werden. Brauche da einfach etwas Hilfe für den Anfang.

Die Idee finde ich einfach Spitze. Natürlich werden viele Uru-Spieler damit erst mal nichts anfangen können. Aber hier hat DUDOS ja schon einige Freunde gefunden. Vielleicht hilft diese Idee dem Spiel auch zu etwas mehr Popularität, wodurch sich dann vielleicht doch häufiger Leute zum Spielen finden.

Viele Grüße
Gu.Ro
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 19.08.2005, 16:42

Rein technisch ist es möglich, dass man es nur durch Veränderungen im Server implementiert. Allerdings wird dann nur der Name des Servers (bzw. der Name des Spielers, der den Server gestartet hat) angezeigt. In der Datenbank wird ja nur abgespeichert, welche IP der Server hat, wann er sich zuletzt gemeldet hat und der Name des Spiels (=Name des Spielers, der den Server startete).

Das sollte für den Anfang schon einmal helfen (so sieht man, ob irgend jemand Dudos spielt) und stellt daher den ersten Schritt dar, den mein Skript mit Ausnahme der Generierung einer eindeutigen Nummer schon erfüllt (hoffentlich!).

In einem zweiten Schritt sollte man dann meines Erachtens überlegen, wie man Dudos verändert, damit alle Spieler, die im Moment spielen, angezeigt werden.

Da kann man dann allerhand überlegen.

Zumindest würde ich diese Herangehensweise empfehlen.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
The.Modificator
Forscher
Beiträge: 2030
Registriert: 06.02.2004, 16:54

Beitrag von The.Modificator » 19.08.2005, 17:21

TheSearcher hat geschrieben:...Daher meine Frage: ist der Server-Code von der 3. Seite dieses Threads noch der aktuelle?
Wenn in der Zwischenzeit keine Änderungen vorgenommen wurden, dann sollte das der Fall sein - ja.

Gruß
Modi
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 19.08.2005, 21:23

Auf einen zweiten Versuch ;)

Diesmal sind die Änderungen ein wenig umfangreicher.

Zuerst musste ich das Server-Skript leicht überarbeiten (Hinweis: man muss die Tabelle servers löschen und neu anlegen, da eine neue Spalte angelegt wird; außerdem wird noch die neue Tabelle uul neu angelegt).

server.php

Code: Alles auswählen

<?php
/* Generic PHP-based lobby server (for Dudos)
 * Copyright (C) 2005 Wolfgang Keller
 * Contact: mail.wolfgang.keller@web.de
 *
 * Based on the 
 * Generic PHP-based lobby server
 * (by The.Modificator)
 * 
 * This program is free software; you can 
 * redistribute it and/or modify it under 
 * the terms of the GNU General Public License 
 * as published by the Free Software Foundation; 
 * either version 2 of the License, or 
 * (at your option) any later version. 
 * 
 * This program is distributed in the hope 
 * that it will be useful, but WITHOUT ANY WARRANTY; 
 * without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR 
 * PURPOSE. See the GNU General Public License 
 * for more details. 
 * You should have received a copy of the 
 * GNU General Public License along with 
 * this program; if not, write to the 
 * Free Software Foundation, Inc., 
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 
 */

unset($setup); unset($createdb); unset($dbserver); unset($dbuser); unset($dbpassword); unset($dbname);
unset($create_uul_support);


////////////////////////////////////////////////////////////////////////////////////////////////////
// Change values below
////////////////////////////////////////////////////////////////////////////////////////////////////

$dbserver = "localhost";    // database hostname
$dbuser = "meinname";            // database username
$dbpassword = "meinpasswort";            // database password

$dbname = "dudos";            // database name

//Just change this value once to 1 to setup the database
$setup = 0;

$createdb = 0;  // if your provider supports the "CREATE DATABASE" command, you can also change
                // this value to 1

$create_uul_support = 1;

////////////////////////////////////////////////////////////////////////////////////////////////////
// Change values above
////////////////////////////////////////////////////////////////////////////////////////////////////



if($setup == 1)
{
    if(!($dbcid = mysql_connect($dbserver, $dbuser, $dbpassword)))
    {
        exit("ERR\nCould not connect.");
    }

    if($createdb == 1)
    {
        $sql="CREATE DATABASE `$dbname`;";
        mysql_query($sql,$dbcid);
    }

    if(!mysql_select_db($dbname))
    {
        exit("ERR\nCould not select the db.");
    }

    $sql="CREATE TABLE `$dbname`.`servers` (
      `server_ip` VARCHAR(255) NOT NULL,
      `last_signal_time` INTEGER UNSIGNED NOT NULL,
      `game_name` VARCHAR(255) NOT NULL,
	  `ki_nr` BIGINT UNSIGNED NOT NULL,
      PRIMARY KEY(`server_ip`)
    );";
    mysql_query($sql,$dbcid);

	if ($create_uul_support==1)
	{
		$sql="CREATE TABLE `$dbname`.`uul` (
		`next_ki_nr` BIGINT UNSIGNED NOT NULL
		);";
		mysql_query($sql,$dbcid);
		
		$sql = "INSERT INTO `uul` (`next_ki_nr`) VALUES ('1');";
        mysql_query($sql,$dbcid);
	}

    mysql_close($dbcid);

    echo("OK\nDatabase should be up now. Change the \$setup and the \$createdb values back to 0 now.");
    exit();
}




if(isset($HTTP_GET_VARS['command'])||isset($HTTP_POST_VARS['command']))
{
    $command = isset($HTTP_GET_VARS['command'])?$HTTP_GET_VARS['command']:$HTTP_POST_VARS['command'];
}
else
{
    exit("ERR\nNo command specified");
}

if(!($dbcid = mysql_connect($dbserver, $dbuser, $dbpassword)))
{
    exit("ERR\nCould not connect.");
}

if(!mysql_select_db($dbname))
{
    exit("ERR\nCould not select the db.");
}

$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$time = time();
$toolate = $time - 2*60;
if($command=="refresh")
{
    $gamename_unesc = isset($HTTP_GET_VARS['gamename']) ? $HTTP_GET_VARS['gamename'] : $HTTP_POST_VARS['gamename'];
    $gamename = mysql_escape_string($gamename_unesc);
}


//delete servers that timed out
$sql = "DELETE FROM `servers` WHERE `last_signal_time` < $toolate;";
mysql_query($sql,$dbcid);


switch($command)
{
    case "newserver":
		$ki_ret=mysql_query("SELECT * FROM uul ;",$dbcid);
		$ki_nr = mysql_fetch_array($ki_ret);
        $sql = "INSERT INTO `servers` (`server_ip`,`last_signal_time`,`game_name`,`ki_nr`) VALUES ('$ip', '$time','','".$ki_nr['next_ki_nr']."');";
        mysql_query($sql,$dbcid);
		mysql_query("UPDATE `uul` SET `next_ki_nr`='".($ki_nr['next_ki_nr']+1)."' ;",$dbcid);
        echo "OK\n";
        break;

    case "refresh":
        $sql = "UPDATE `servers` SET `last_signal_time` = $time, `game_name` = '$gamename' WHERE `server_ip` = '$ip';";
        mysql_query($sql,$dbcid);
        echo "OK\n";
        break;

    case "removeserver":
        $sql = "DELETE FROM `servers` WHERE `server_ip` = '$ip';";
        mysql_query($sql,$dbcid);
        echo "OK\n";
        break;

    case "getservers":
        $sql = "SELECT `server_ip`,`last_signal_time`,`game_name` FROM servers;";
        $ret = mysql_query($sql,$dbcid);
        //$count = mysql_num_rows($ret);

        echo "OK\n";
        while($data = mysql_fetch_array($ret))
        {
            echo $data['server_ip'];
            echo ",";
            echo str_replace("\n","&br;",str_replace("&","&",$data['game_name']));
            echo "\n";
        };
        echo "END";
        break;
    default:
        exit("ERR\nNo command specified");
}

mysql_close($dbcid);

?>
Nun das eigentliche UUL-Skript:

uul_interface.php

<?php

/* UU Locator Client for the Dudos Server
* Copyright (C) 2005 Wolfgang Keller
* Contact: mail.wolfgang.keller@web.de
*
* Based on the
* PHP-based Untìl Uru player lister for automatic interpreters based on structure "tiana 0x4"
* and the
* Generic PHP-based lobby server
* (both by The.Modificator)
*
* This program is free software; you can
* redistribute it and/or modify it under
* the terms of the GNU General Public License
* as published by the Free Software Foundation;
* either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope
* that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU General Public License
* for more details.
* You should have received a copy of the
* GNU General Public License along with
* this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/

error_reporting(0); //disable all errors/warnings/whatever

unset($dbserver); unset($dbuser); unset($dbpassword); unset($dbname);

$dbserver = "localhost"; // database hostname
$dbuser = "wkeller"; // database username
$dbpassword = "wk658358"; // database password

$dbname = "wkeller_db"; // database name

if(!($dbcid = mysql_connect($dbserver, $dbuser, $dbpassword)))
{
exit("ERR\nCould not connect to database.");
}

if(!mysql_select_db($dbname))
{
mysql_close($dbcid);
exit("ERR\nCould not select the database.");
}

// The cleanup work (else a server could stay too long in the list, because nobody calls
// server.php
$time = time();
$toolate = $time - 2*60;

//delete servers that timed out
$sql = "DELETE FROM `servers` WHERE `last_signal_time` < $toolate;";
mysql_query($sql,$dbcid);

// end cleanup

$sql = "SELECT `game_name`, `ki_nr` FROM servers;";
$ret = mysql_query($sql,$dbcid);
$count = mysql_num_rows($ret);

if ($count==0)
{
print "NUL\nNo players are connected.";
}


else
{
print("LST\n");

echo "$count\n";

while($data = mysql_fetch_array($ret))
{
$name=str_replace("\n","&br;",str_replace("&","&", $data['game_name'] ));
echo ($name=="") ? "\n\nunknown\n" : "\n\n$name\n";
echo $data['ki_nr'];
echo "\nDudos";
};
}

mysql_close($dbcid);

?>


[/php]
Zuletzt geändert von TheSearcher am 25.08.2005, 12:25, insgesamt 1-mal geändert.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 25.08.2005, 11:17

Thoro hatte noch bei einem Testlauf eine Verletzung des Tiana4-Formats gefunden, die ich jetzt (hoffentlich!) korrigiert habe.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
Gu.Ro
Forscher
Beiträge: 217
Registriert: 02.05.2004, 17:37
Wohnort: Zwickau
Alter: 74

Beitrag von Gu.Ro » 27.08.2005, 23:52

Ich bin begeistert.

TheSearcher hat mit seiner Idee unserem Spiel wieder einen neuen Impuls gegeben. Der erste Schritt dieser Idee ist schon getan. Er hat einen neuen Lobby-Server für DUDOS eingerichtet, der die Information über gestartete Spiele an den Uru Locator weitergeben kann. Die Kommunikation mit DUDOS funktioniert. Im Moment kann ich den Server zwar grad nicht erreichen, aber ich habe den Verdacht, das da schon jemand am Schritt zwei werkelt. :D Auch ich bin wieder am Programm dran, um es für die neue Idee anzupassen.

In der Zwischenzeit habe ich mich auch mit mairo noch einmal darüber unterhalten, wie wir es für alle Interessenten einfacher machen können, sich zu einem Spiel zu treffen. Das Ergebnis ist vorerst ein fester Termin:
Jeden Montag ab 20 Uhr wird wenigstens einer von uns beiden einen Spieltisch betreiben. Da können dann alle mitspielen, die Interesse haben. Ihr könnt aber auch einfach mal so vorbeischauen. Das Spiel erlaubt es ja auch, nur als Beobachter dabei zu sein.
Ich kann jetzt allerdings noch nicht sagen, wie lange der Spieltisch aktiv sein wird. Das hängt auch davon ab, ob jemand mitmacht. Aber schaut es Euch doch einfach mal an. Es macht wirklich Spass!

Also dann bis Montag 20 Uhr.

Viele Grüße
Gu.Ro
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 28.08.2005, 13:05

@Gu.Ro:
Nein, der Uniserver hat seit gestern abend eine Macke. Ich vermute stark, dass es wohl erst ab morgen wieder funktionieren wird.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
Gu.Ro
Forscher
Beiträge: 217
Registriert: 02.05.2004, 17:37
Wohnort: Zwickau
Alter: 74

Treff zum Spielen

Beitrag von Gu.Ro » 03.09.2005, 19:16

Hallo,

letzten Montag waren wir dummerweise noch auf dem alten Lobbyserver. Dadurch konnte niemand sehen, dass ein Spieltisch geöffnet war.
Ab sofort werden die Spieltische an jedem Montag ab 20 Uhr auf dem neuen Testserver, den TheSearcher eingerichtet hat, angemeldet. Dadurch kann man sie jetzt auch im UU Locator sehen. Ihr braucht dafür aber den Eintag des neuen Servers. Am besten ersetzt Ihr im Moment die Datei "LobbyHosts.ini" im DUDOS-Verzeichnis. Mehr dazu findet Ihr hier.
TheSearcher hat außerdem eine kleine Internetseite gemacht, auf der man ebenfalls sehen kann, ob gerade DUDOS gespielt wird: http://wase.urz.uni-magdeburg.de/wkeller/dudos/.

Also dann bis Montag

Gu.Ro
Benutzeravatar
Gu.Ro
Forscher
Beiträge: 217
Registriert: 02.05.2004, 17:37
Wohnort: Zwickau
Alter: 74

Beitrag von Gu.Ro » 05.09.2005, 18:19

Ich habe gerade beim nochmaligen Testen festgestellt, dass ein geöffneter DUDOS-Spieltisch im UU Locator immer als "privat online" angezeigt wird. Woran kann das liegen? DUDOS selbst macht da ja keine Unterschiede. Jeder Spieltisch ist öffentlich zugängig.

Bei der Gelegenheit möchte ich Euch gleich noch mal daran erinnern, dass heute ab 20 Uhr wieder gespielt wird. Ihr seid alle herzlich eingeladen.

Viele Grüße
Gu.Ro
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 05.09.2005, 19:32

@Gu.Ro:
liegt daran, dass die Welten, die in Uu nicht öffentlich sind, in UUL als "als privat" angezeigt werden. Und Dudos ist keine öffentliche Uru-Welt...
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
Thoro
Forscher
Beiträge: 1494
Registriert: 23.09.2004, 14:43
Geschlecht: männlich
KI-Nummer: 529779
Wohnort: Duisburg
Alter: 42
Kontaktdaten:

Beitrag von Thoro » 05.09.2005, 20:50

Einfach gegen die ages.dat austauschen ;)
Dateianhänge
ages.de.zip
Patch der "ages.de.dat" für Version 1.0.37 final
(563 Bytes) 582-mal heruntergeladen
Sarkasmus ... wie originell.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 39

Beitrag von TheSearcher » 06.09.2005, 10:30

Dies wird zwar temporär helfen: jedoch für eine zukünftige Version von Dudos (und des Lobby-Servers) ist es geplant, dass das Zeitalter nach dem Spieltisch benannt werden wird.

Dass dies nicht der Fall ist, liegt einfach daran, dass bisher keine Informationen über die mitspielenden Spieler an den Lobby-Server gemeldet werden, was dazu führt dass als Name der Name des Servers und als Zeitalter "Dudos" gemeldet wird - dies soll sich irgendwann ändern (habe ich als 2. Schritt angekündigt).
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Antworten