User Tools

Site Tools


q3astatus

q3astatus.php

This snippet displays the current map and players on your quake3arena server on your homepage. Just include it somewhere.

<?
$server = "yourserver.com";
$port   = 27960;
$query  = "getstatus";
 
$fp = fsockopen("udp://$server", $port, $errno, $errstr);
if (!$fp) {
   echo "ERROR: $errno - $errstr<br />\n";
   exit;
} else {
   fwrite($fp,"\xFF\xFF\xFF\xFF".$query);
   $answer = fread($fp, 10000);
   fclose($fp);
}
 
$rows = split("\n",$answer);
 
preg_match('#mapname\\\\(.*?)\\\\#',$rows[1],$matches);
$map = $matches[1];
?>
 
<table style="background-color:#cccccc">
<tr>
  <th>Frags</th>
  <th>Player</th>
  <th>Ping</th>
</tr>
<?
for($i=2; $i<count($rows); $i++){
  list($frags,$ping,$name) = split(' ',trim($rows[$i]));
  $name = str_replace('"','',$name);
 
  //decode colors
  $name = preg_replace('!(\^0)(.*?)(?=\^\d|$)!','<span style="color:black">\\2</span>',$name);
  $name = preg_replace('!(\^1)(.*?)(?=\^\d|$)!','<span style="color:red">\\2</span>',$name);
  $name = preg_replace('!(\^2)(.*?)(?=\^\d|$)!','<span style="color:green">\\2</span>',$name);
  $name = preg_replace('!(\^3)(.*?)(?=\^\d|$)!','<span style="color:yellow">\\2</span>',$name);
  $name = preg_replace('!(\^4)(.*?)(?=\^\d|$)!','<span style="color:blue">\\2</span>',$name);
  $name = preg_replace('!(\^5)(.*?)(?=\^\d|$)!','<span style="color:lightblue">\\2</span>',$name);
  $name = preg_replace('!(\^6)(.*?)(?=\^\d|$)!','<span style="color:ff00cc">\\2</span>',$name);
  $name = preg_replace('!(\^7)(.*?)(?=\^\d|$)!','<span style="color:white">\\2</span>',$name);
 
  print "<tr>";
  print "<td>$frags</td>";
  print "<td>$name</td>";
  print "<td>$ping</td>";
  print "</tr>";
}
?>
<tr>
  <th>Map:</th>
  <td colspan="2"><?=$map?></td>
</tr>
</table>
q3astatus.txt · Last modified: 2006/11/08 02:35 by 84.142.251.254