1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
|
<?
/*
Dateiname: gameserver_class.php
Version: 0.5 (beta)
Erstellt: 20.11.2005 07:50 GMT
Letzte Änderung: 20.11.2005 12:20 GMT
Autor: Nighthawk <nighthawk@opferlamm-clan.de>
Support: www.opferlamm-clan.de
------------------------------------------------------------
Beschreibung:
-------------
Dieses Script liest "Call of Duty", "Call of Duty United Offensive" und
"Call od Duty 2" Gameserver aus.
Bildet einfach eine neue Instanz pro Server. Beispiel:
$ausgabe = new serverstatusquery();
$ergebnis = $ausgabe->serverstatus("213.202.211.44","28960");
print_r($ergebnis);
Es wäre schön, wenn du den Headder hier stehen lässt, damit man nachvollziehen kann
woher das Teil kommt. Nicht weil mein Nick oben steht, aber das Script wird
weiterentwickelt und sobald es neue Versionen gibt erfahrt ihr es auf der oben
angegebenen Webseite. Und wenn einer das hier als sein Script weiter geben möchte,
nehmt bitte den Headder raus, dann leistet auch bitteschön Support :-)
So, das wars von mir.
Greetz Nighthawk
*/
//error_reporting(E_ALL);
//ini_set('display_errors', '1');
class serverstatusquery {
var $x;
var $ip = "";
var $port = "";
var $serverdata = "";
var $serverdatalen = "";
function vergleichen($a, $b) {
return $comp = ($a < $b) ? 1:0;
}
function serverstatus($ip,$port) {
$erg = array();
$command = "\xFF\xFF\xFF\xFFgetstatus\n";
$verbindung=fsockopen("udp://".$ip."",$port,$errnr) or die($error."(".$errno.")") ;
fwrite($verbindung,$command,strlen($command));
do {
$this->serverdata .=fgetc($verbindung);
$this->serverdatalen++;
$socketstatus=socket_get_status($verbindung);
} while ($socketstatus["unread_bytes"] );
fclose($verbindung);
$this->serverdata = substr($this->serverdata,strpos($this->serverdata,"\n")+1);
$kette = strtok($this->serverdata,"\\");
while($kette) {
$this->x++;
$array_name = $kette;
$kette = strtok("\\");
$erg["".$array_name.""] = "".$kette."";
$kette = strtok("\\");
}
$players=substr($this->serverdata,strpos($this->serverdata,"\n")+1);
$two = $players;
$players = substr($players,0,strlen($players)-1);
$playercount=0;
if (strlen($players) > 0) {
$playercollection=explode("\n",$players);
while (list($key,$data) = each ($playercollection)) {
eregi("^([-0-9]+) ([-0-9]+) \"(.*)\"",$data,$player);
$ol_playerinfo[$key]=array("pkt"=>$player[1],"ping"=>$player[2],"name"=>$player[3]);
$playercount++;
}
}
$erg["current_player"] = $playercount;
usort($ol_playerinfo, array("serverstatusquery","vergleichen"));
$erg["playerdata"] = $ol_playerinfo;
$erg["ip"] = $ip;
$erg["port"] = $port;
return $erg;
}
}
?>
|