Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
|
php_server_query_script [2009/02/15 18:44] DeaD_EyE angelegt |
— (aktuell) | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== PHP HL² Server-Query Script ====== | ||
| - | Dieses Script kann Informationen von einem HL2/CS:S-Server auslesen und anzeigen. | ||
| - | ===== Funktionen ===== | ||
| - | Um nur die Informationen zu bekommen (z.B. Servername, Map usw) | ||
| - | * Verbindung zum Server herstellen | ||
| - | * Einen Wert zum Server schicken | ||
| - | * Die Daten die der Server zurückschickt auffangen und auswerten | ||
| - | * Daten ins Array laden | ||
| - | 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. | ||
| - | * Verbindung zum Server herstellen | ||
| - | * Ein Ticket anfordern (Challenge) | ||
| - | * Einen Wert zum Server schicken mit angehängten Ticket (das was wir vorher abgefragt haben) | ||
| - | * Die Daten die der Server zurückschickt auffangen und auswerten | ||
| - | * Daten ins Array laden | ||
| - | Serversettings sind ähnlich wie die Player, auch mit einem Ticket | ||
| - | ===== PHP-Code ===== | ||
| - | 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. | ||
| - | <code=php>class HLServerAbfrage { | ||
| - | }</code> | ||
| - | Jetzt werden die wichtigsten Variablen deklariert und einige schon mit Werten füllen um diese Werte dann später zu unserem Gameserver zu senden: | ||
| - | <code=php>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</code> | ||
| - | ==== Funktionen ==== | ||
| - | === IP und PORT aus der Serveradressen Variable zu trennen === | ||
| - | <code=php>function hlserver($server_address = 0) { | ||
| - | list($this->ip, $this->port) = explode(":", $server_address); | ||
| - | }</code> | ||
| - | === Verbindung zum Server aufzubauen === | ||
| - | <code=php>function connect() { | ||
| - | $this->fp = fsockopen("udp://".$this->ip, $this->port, $errno, $errstr, 3); | ||
| - | if (!$this->fp) { | ||
| - | $Fehler = 1; | ||
| - | } | ||
| - | }</code> | ||
| - | 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. | ||
| - | === Mit dem Server zu kommunizieren === | ||
| - | <code=php>function [b]send_strcmd[/b]($strcmd) { | ||
| - | fwrite($this->fp, sprintf('%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, $strcmd, 0x00)); | ||
| - | }</code> | ||