kostenloser Webspace werbefrei: lima-city


Gameserver auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ich glaube hier sitzen mehr programmierer als leute die iwas zocken...ich habe davon ehrlich gesagt keine Ahnung^^
  4. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    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
  5. 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^^
  6. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    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.
  7. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.


    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

  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!