Wie funktioniert HLSW etc?

meilon

Erfahrenes Mitglied
Hallo,
ich wollte gerne mal wissen, wie Gameserver so ticken :D Habe vor, eine kleine aktuelle Serverstatistik mit den aktuellen Spielern, eingeschaltete Mods etc anzuzeigen. Werde das wohl in PHP machen, sieht graphisch besser aus/lässt graphisch mehr machen :D

Aber leider weiß ich nicht, wie ich an die Daten herankomme. Habe einfach mal mit telnet die Query Ports angerufen, aber es het einer gleich wieder aufgelegt ;(

Und ja, ich kenn das Serverabfrageprogramm QStat, aber ich will etwas selber basteln :D

mfg
 
Naja, in der Theorie ist es ganz einfach. Du schicks per Telnet einen passenden Request an den Server deines Wals ;) und verarbeitest die Antwort... Welche Kommandos das genau sind guckst du dir am besten in einem derartigen Script ab.
 
Wenn das so einfach wär :( "Herstellen der Verbindung wird absichtlich verweigert" sagt mir VB wenn ich versuche, auf den QueryPort zuzugreifen. Es kommt nicht mal eine Verbindung zu stande :(

Aber ich gugg erstmal, ob es von qstat Quellcode online gibt, dann schau ich da mal rein.....

mfg
 
Pear bietet doch auch eine Gameserver-Query klasse an, schau einfach dort mal nach, wenn du Quelltext sichten willst.
 
Ich habe jetzt wohl endlich die richtigen Stichpunkte für Google eingegeben und was dolles gefunden: UT2003/2004 arbeiten über das UDP-Protokol und wie ich was zu senden habe weiß ich jetzt auch schon. Jetzt bleib ich an einem Problem hängt es noch: da gibt es nur Beispiele für UT2003, im Grunde soll es UT2004 ähneln, aber ist nicht das Selbe.

Soll heißen, dass ich nicht weiß, wie ich den Server genau mit welchem Packet Abfrage Aber da ich jetzt weiß, nach was ich alles so zu suchen habe, werde ich wohl noch an die benötigten Infos kommen :D

mfg

Achja! Das mit der Pear-Klasse verschieben wir :D
 
UPDATE

Hiho
Hab es jetzt geschaft, den Server abzufragen und auch die Antwort herauszubekommen. Da Alles über UDP läuft, muss man Binär arbeiten.

Hab bisher die Allgemeinen Serverinformationen (Servername, Map) und nähere Dateils (Aktivierte Mutatoren etc) aus einem UT2004 Server gequetscht.

Hier mal ein bisschen Code für die Leute, die auch gern einen UT 2004 Server abfragen möchten. Das Parsing überlass ich euch :D
PHP:
<?
$sock = fsockopen("udp://<ip>", <queryport>); //Der QueryPort ist bei UT immer Gameport + 1
if ($sock === false) {
	echo "Unbekannter Host";
} else  {
	socket_set_timeout($sock, 1, 0);

	//Abfrage der Allgemeinen Serverinformationen
	//Weitere Abfragen sind "\x78\x00\x00\x00\x01"für Details und
	//"\x78\x00\x00\x00\x02" für Spieler
	fwrite($sock, "\x78\x00\x00\x00\x00"); 

	//Alles rausholen was kommt :D
	while ($buffer = fgets($sock,4096)) { 
		$data.= $buffer;
	}

	//0x00 ist das binäre Trennzeichen
	$splitted = explode("\x00",$data); 
	$serverdata["name"] = $splitted[15];
	$serverdata["map"] = $splitted[16];
	$data = "";
?>
Viel Spaß beim weiteren Parsen :D

mfg
 

Neue Beiträge

Zurück