|
 |
Gameserver-Class |
Gargamelunregistriert

|
|
404 - DEPUBLIZIERT
Dieser Beitrag wurde auf Wunsch des Urhebers ohne Anerkennung einer Rechtspflicht gelöscht
Bitte nicht die Google Cache Funktion benutzen.
|
|
|
|
|
racepat
Zu-Hause-Esser
  
Dabei seit: 30.11.2006
Beiträge: 70

|
|
unten hab ich mal die ganze Datei angehängt.
bei Zeile 91 ist etwas krumm:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
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;
}
}
?>
|
|
|
|
|
|
|
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von racepat
unten hab ich mal die ganze Datei angehängt.
bei Zeile 91 ist etwas krumm:
Das ist nicht schlimm, nur eine Warnung das die Variable eigentlich ein Array sein sollte. Das passiert weil du keine Spieler auf dem Server hast, und deshalb $ol_playerinfo leer ist. Wenn ein Spieler drauf ist ist es weg.
unelegante Lösung:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
|
//error_reporting(E_ALL);
//ini_set('display_errors', '1');
|
|
Kommentar weg und ändern in
error_reporting(E_ERROR);
ini_set('display_errors', '0');
Damit ist die Variable zwar immernoch undefiniert, aber die Warnung wird nichtmehr angezeigt.
elegante Lösung:
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
|
$ol_playerinfo = array();
|
|
oder
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
1:
2:
3:
4:
5:
|
if $playercount > 1 {
usort($ol_playerinfo, array("serverstatusquery","vergleichen"));
}
|
|
edit "> 1" reicht auch, bei einem Spieler gibt es nichts zu sortieren.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Kellerkind: 01.12.2006 16:57.
|
|
|
|
|
racepat
Zu-Hause-Esser
  
Dabei seit: 30.11.2006
Beiträge: 70

|
|
vielen Dank für deine schnelle Hilfe!!!!!!
Code angehängt. Klicke hier zum Ein-/Ausblenden
| code: |
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:
101:
102:
|
<?
/*
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;
if $playercount > 1 {
usort($ol_playerinfo, array("serverstatusquery","vergleichen"));
}
$erg["playerdata"] = $ol_playerinfo;
$erg["ip"] = $ip;
$erg["port"] = $port;
return $erg;
}
}
?>
|
|
|
|
|
|
|
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
upps, damn, mein Fehler
if $playercount > 1 {
muss heissen
if ($playercount > 1) {
spätestens hier:
Da fehlt eine Klammer oder du hast in einer Zeile irgendwo vorher ein Semikolon vergessen.
hätte ich das aber auch merken können. Asche auf mein, naja du weißt schon...
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
|
|
|
|
|
Kelli
... sehr viel alleine
 
Dabei seit: 09.11.2006
Beiträge: 2.504

|
|
Original von racepat
ach was, wer solche Codes beherrscht
beherrschen ist was anderes. Ich kann php gerade so lesen und nachvollziehen was wo gemacht wird. Aber auf einem weißen Blatt Papier eine Serverabfrage zusammenschreiben - das würde ich nicht hinbekommen.
Original von racepat
Kennste den Code von Netskin ?
Nein, bis jetzt nicht.
__________________ „ Allah ist Groß, und wir sind armselige Tröpfe mit unseren ganzen Wissenschaften Herrlichkeit.“
Dieser Beitrag wurde 420 mal editiert, zum letzten Mal von der Bundesregierung Niemand: Heute, 11:42.
https://kkde.de/scum/
|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|