Dies ist eine alte Version des Dokuments!
Dieses Script kann Informationen von einem HL2/CS:S-Server auslesen und anzeigen.
Um nur die Informationen zu bekommen (z.B. Servername, Map usw)
Um Spieler vom Server ab zu fragen (z.B. Playername, Frags usw.), muss eine Art „Ticket“ angefordert werden. Dieses Ticket ist eine begrenzte Zeit gültig und ermöglicht es die Informationen zu bekommen.
Serversettings sind ähnlich wie die Player, auch mit einem Ticket
Wir wollen das ganze in einer Klasse zusammenfassen, damit man es später leicht anpassen und für verschiedene Server verwenden kann. Oder z.B. nur um die Serverinfo´s abfragen und auf den Rest zu verzichten.
class HLServerAbfrage { }
Jetzt werden die wichtigsten Variablen deklariert und einige schon mit Werten füllen um diese Werte dann später zu unserem Gameserver zu senden:
var $server_address; var $ip; var $port; var $fp; var $challenge; var $serverinfo; var $playerlist; var $cvarlist; var $A2S_SERVERQUERY_GETCHALLENGE = "\x57"; // challenge var $A2S_INFO = "TSource Engine Query\x00"; // info var $A2S_PLAYER = "\x55"; // player var $A2S_RULES = "\x56"; // rules
function hlserver($server_address = 0) { list($this->ip, $this->port) = explode(":", $server_address); }
function connect() { $this->fp = fsockopen("udp://".$this->ip, $this->port, $errno, $errstr, 3); if (!$this->fp) { $Fehler = 1; } }
Damit wird eine und Verbindung zu dem Server hergestellt und speichern sie in der Variable „$this→fp“.
Die Funktion fsockopen
brauch dazu die beiden Variablen mit der IP und dem PORT.