Benutzer-Werkzeuge

Webseiten-Werkzeuge


php_server_query_script

Dies ist eine alte Version des Dokuments!


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.

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

Funktionen

IP und PORT aus der Serveradressen Variable zu trennen

function hlserver($server_address = 0) {
  list($this->ip, $this->port) = explode(":", $server_address);
}

Verbindung zum Server aufzubauen

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.

Mit dem Server zu kommunizieren

function [b]send_strcmd[/b]($strcmd) {
  fwrite($this->fp, sprintf('%c%c%c%c%s%c', 0xFF, 0xFF, 0xFF, 0xFF, $strcmd, 0x00));
}
php_server_query_script.1256385632.txt.bz2 · Zuletzt geändert: 2012/11/02 02:08 (Externe Bearbeitung)