Gameserver auslesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anpassen
array
auslese
aussehen
code
glauben
helfen
http
jemand
leute
not
port
pos
rank echo
richtig auslesen
server
status
string
stunden
suche
-
Hallo Leute
Ich suche ein Script, dass einen Call of Duty 4 Server auslesen kann. Habe jetzt ca. 1,5 Stunden gegooglet... hab da immer sowas wie Gametracker und SQuery gefunden. SQuery is ja schon ganz toll, aber das lässt sich kaum bzw garnet modifizieren vom Aussehen her... kennt jemand ein einfaches Script, dass auch funktioniert und sich leicht anpassen lässt... Squery zerschieß ich immer...
ansonsten will ichs alleine machen, hab aber 0 Peil wie... wäre nett, wenn mir jemand helfen könnte.
Gruß
technofan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich glaube hier sitzen mehr programmierer als leute die iwas zocken...ich habe davon ehrlich gesagt keine Ahnung^^
-
es geht sich ja ums Programmieren ^^
Nen Gameviewer... habs im übrigen auch gerade geschafft... mit ein bischen murks hats geklapt... aber kann die aktuelle Karte noch net auslesen, vllt kann mir dabei ja jemand helfen XD -
xD ja aber wer ...ich sach mal so... das Genre nicht versteht der kann es auch nich so einfach prgrammieren^^
schick mal dein code, vllt. kann ich dir ja dann helfen^^ -
COD4ServerStatus.php
class COD4ServerStatus{ var $server = '84.200.243.203'; var $port = '28960'; var $protocol = 'udp'; var $data = ''; var $serverData = array(); var $players = array(); var $scores = array(); var $pings = array(); var $meta = array(); var $timeout = 1; function COD4ServerStatus($server, $port, $timeout = 1){ $this->server = $server; $this->port = $port; $this->timeout = $timeout; } function getServerStatus(){ $error = false; if (!empty($this->server) && !empty($this->port)){ $handle = @fsockopen($this->protocol . '://' . $this->server, $this->port); if ($handle){ // had to do this... trying to figure out a way not to do this socket_set_timeout($handle, $timeout); stream_set_blocking($handle, 1); stream_set_timeout($handle, 5); ///////////////////////////////// fputs($handle, "\xFF\xFF\xFF\xFFgetstatus\x00"); fwrite($handle, "\xFF\xFF\xFF\xFFgetstatus\x00"); // we have to do one read out here to set meta data $this->data = fread($handle, 8192); $this->meta = stream_get_meta_data($handle); $counter = 8192; //////////// while (!feof($handle) && !$error && $counter < $this->meta['unread_bytes']){ $this->data .= fread($handle, 1); $this->meta = stream_get_meta_data($handle); if ($this->meta['timed_out']){ $error = true; } $counter += 1; } if ($error){ echo 'Request timed out.'; return false; }else{ if (strlen(trim($this->data)) == 0){ echo 'No data received from server.'; return false; }else{ return true; } } }else{ echo 'Could not connect to server.'; return false; } fclose($handle); } } function parseServerData(){ $this->serverData = explode("\n", $this->data); //$this->serverData = array_shift($this->serverData); THIS WAS MISBEHAVING $tempplayers = array(); for ($i = 2; $i <= sizeof($this->serverData) - 1; $i++){ $tempplayers[sizeof($tempplayers)] = trim($this->serverData[$i]); } $tempdata = array(); $tempdata = explode('\\', $this->serverData[1]); $this->serverData = array(); foreach($tempdata as $i => $v){ if (fmod($i, 2) == 1){ $t = $i + 1; $this->serverData[$v] = $tempdata[$t]; } } $this->serverData['sv_hostname'] = $this->colorCode($this->serverData['sv_hostname']); $this->serverData['_Maps'] = explode('-', $this->serverData['_Maps']); // frags ping "player name" foreach($tempplayers as $i => $v){ if (strlen(trim($v)) > 1){ $temp = explode(' ', $v); $this->scores[sizeof($this->scores)] = $temp[0]; $this->pings[sizeof($this->pings)] = $temp[1]; $pos = strpos($v, '"') + 1; $endPos = strlen($v) - 1; $this->players[sizeof($this->players)] = substr($v, $pos, $endPos - $pos); } } } function colorCode($string){ $string .= "^"; $find = array( '/\^0(.*?)\^/is', '/\^1(.*?)\^/is', '/\^2(.*?)\^/is', '/\^3(.*?)\^/is', '/\^4(.*?)\^/is', '/\^5(.*?)\^/is', '/\^6(.*?)\^/is', '/\^7(.*?)\^/is', '/\^8(.*?)\^/is', '/\^9(.*?)\^/is', ); $replace = array( '<span style="color:#000000;">$1</span>^', '<span style="color:#F65A5A;">$1</span>^', '<span style="color:#00F100;">$1</span>^', '<span style="color:#EFEE04;">$1</span>^', '<span style="color:#0F04E8;">$1</span>^', '<span style="color:#04E8E7;">$1</span>^', '<span style="color:#F75AF6;">$1</span>^', '<span style="color:#FFFFFF;">$1</span>^', '<span style="color:#7E7E7E;">$1</span>^', '<span style="color:#6E3C3C;">$1</span>^', ); $string = preg_replace($find, $replace, $string); return substr($string, 0, strlen($string) - 1); } function returnData(){ return $this->data; } function returnMeta(){ return $this->meta; } function returnServerData(){ return $this->serverData; } function returnPlayers(){ return $this->players; } function returnPings(){ return $this->pings; } function returnScores(){ return $this->scores; } }
view.php
include('COD4ServerStatus.php'); $status = new COD4ServerStatus('84.200.243.203', '28960'); if ($status->getServerStatus()){ $status->parseServerData(); $serverStatus = $status->returnServerData(); $players = $status->returnPlayers(); $pings = $status->returnPings(); $scores = $status->returnScores(); ?> <h1>Server: <? echo $serverStatus['sv_hostname'];?></h1> <p>Admin: <? echo $serverStatus['_Admin'];?><br /> Spieler: <? echo count($players);?> / <? echo $serverStatus['sv_maxclients'];?><br /> Map: <? echo $serverStatus['sv_Currentmap'];?><br /> Gametyp: <? echo $serverStatus['sv_mapRotation'];?><br /> Email: <? echo $serverStatus['_Email'];?><br /> IRC: <? echo $serverStatus['Irc'];?><br /> Location: <? echo $serverStatus['_Location']; ?><br /> Website: <a href="http://<? echo $serverStatus['_Website']; ?>">http://<? echo $serverStatus['_Website']; ?></a><br /> <br /> </p> <table width="50%" cellspacing="1" cellpadding="1" border="1"> <tr> <th width="5%">#</th> <th>Player</th> <th width="15%">Score</th> <th width="15%">Ping (ms)</th> </tr> <? $rank = 1; foreach($players as $i => $v){ ?> <tr> <td><? echo $rank; ?></td> <td><? echo $players[$i]; ?></td> <td><? echo $scores[$i]; ?></td> <td><? echo $pings[$i]; ?></td> </tr> <? $rank++; } ?> </table> <? }
mal sehen ob den einer versteht ^^
Map und Gametyp kann ich noch nicht richtig auslesen
mehr Infos zum Spiel gibt's unter http://www.opferlamm-clan.de/index.php?menu=199
da müsst ihr euch an CoD2 orientieren.
-
Hallo Leute
Ich suche ein Script, dass einen Call of Duty 4 Server auslesen kann. Habe jetzt ca. 1,5 Stunden gegooglet... hab da immer sowas wie Gametracker und SQuery gefunden. SQuery is ja schon ganz toll, aber das lässt sich kaum bzw garnet modifizieren vom Aussehen her... kennt jemand ein einfaches Script, dass auch funktioniert und sich leicht anpassen lässt... Squery zerschieß ich immer...
ansonsten will ichs alleine machen, hab aber 0 Peil wie... wäre nett, wenn mir jemand helfen könnte.
//Edit
Und noch ne andere Frage.... wie sortiere ich die ausgelesenen user nach scores? XD
kann nen Server auslesen, aber für sowas bin ich zu doof. :P
Gruß
technofan
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage