<?
// Serverstatus Script by Sub7even - tlw-clan.de
// copyright by Sub7even
include("config_statusserver_cod4.php");
?>
<?php
$timeout = 0.5; //Timeout in Sekunden
$html = <<<HEREDOC
<table width="165" border="0" cellpadding="0" cellspacing="2" align="center">
<tr>
<td align="center"><div align="center">{gamename} - {fs_game}</div></td>
</tr>
<tr>
<td align="center"><div align="center">{sv_hostname}</div></td>
</tr>
<tr>
<td align="center"><div align="center">IP : {ip}:{port}</div></td>
</tr>
<tr>
<td align="center"><img border="1" src="images/maps/{mapname}.jpg"></td>
</tr>
<tr>
<td align="center"><div align="center">{mapname} / {g_gametype}</div></td>
</tr>
<tr>
<td align="center"><div align="center">{currentplayers} Players online </div></td>
</tr>
<tr>
<td align="center"><div align="center">{playerlist}</a></div></td>
</tr>
</table>
HEREDOC;
/* CONFIG END */
$con = fsockopen("udp://$ip", $port, $errno, $errstr, 3);
if (!$con) {
echo "<b class='status_error'>Server offline</b>\n";
}
else {
fwrite($con, "\xFF\xFF\xFF\xFFgetstatus\x00");
stream_set_timeout($con, (int) $timeout, ($timeout - ((int) $timeout)) * 100000);
$start = microtime(true);
$s = "";
do {
$s .= substr(fread($con, 9999), 10);
$info = stream_get_meta_data($con);
if (!isset($end)) {
$end = microtime(true);
}
}
while(!$info["timed_out"]) ;
if (empty($s)) {
echo "<b class='status_error'>Server offline!</b>\n";
}
else {
$ping = round(($end - $start) * 1000) . " ms";
list($dummy, $dvarslist, $playerlist) = explode("\n", $s, 3);
$dvarslist = explode("\\", $dvarslist);
$dvars = array();
for ($i = 1; $i < count($dvarslist); $i += 2) {
$dvars[$dvarslist[$i]] = htmlentities(trimcolor($dvarslist[$i + 1]));
}
$playerlist = explode("\n", $playerlist);
array_pop($playerlist);
$players = array();
foreach ($playerlist as $value) {
list($score, $pingp, $name) = explode(" ", $value, 3);
$players[] = array(
"name" => htmlspecialchars(trimcolor(substr($name, 1, -1))),
"score" => $score,
"ping" => $pingp
);
}
$dvars["mapname"] = getmap($dvars["mapname"]);
$dvars["g_gametype"] = getgametype($dvars["g_gametype"]);
$dvars["fs_game"] = getmods($dvars["fs_game"]);
$dvars["sv_punkbuster"] = getpb($dvars["sv_punkbuster"]);
$dvars["pswrd"] = getpw($dvars["pswrd"]);
$playerlist = "";
foreach ($players as $value) {
$playerlist .= "<tr><td>$value[name] : $value[score] Pkt.</td></tr>\n";
}
$search[] = "{playerlist}";
$replace[] = $playerlist;
$search[] = "{ping}";
$replace[] = $ping;
$search[] = "{ip}";
$replace[] = $ip;
$search[] = "{port}";
$replace[] = $port;
$search[] = "{currentplayers}";
$replace[] = count($players);
foreach ($dvars as $key => $value) {
$search[] = "{" . $key ."}";
$replace[] = $value;
}
echo str_replace($search, $replace, $html);
}
}
function trimcolor($name) {
return preg_replace('|\^.|', '', $name);
}
function getmap($short) {
$maps = array(
// Call of Duty: World at War Maps
"mp_castle" => "Castle",
"mp_roundhouse" => "Roundhouse",
"mp_makin" => "Makin",
"mp_airfield" => "Airfield",
"mp_asylum" => "Asylum",
"mp_shrine" => "Cliffside",
"mp_dome" => "Dome",
"mp_downfall" => "Downfall",
"mp_hangar" => "Hangar",
"mp_outskirts" => "Outskirts",
"mp_seelow" => "Seelow",
"mp_suburban" => "Upheaval",
"mp_courtyard" => "Hof",
// Call of Duty 4: Modern Warfare Maps
"mp_backlot" => "Backlot",
"mp_bloc" => "Bloc",
"mp_bog" => "Bog",
"mp_cargoship" => "Wet Work",
"mp_citystreets" => "District",
"mp_convoy" => "Ambush",
"mp_countdown" => "Countdown",
"mp_crash" => "Crash",
"mp_crash_snow" => "Winter Crash",
"mp_crossfire" => "Crossfire",
"mp_farm" => "Downpour",
"mp_overgrown" => "Overgrown",
"mp_pipeline" => "Pipeline",
"mp_showdown" => "Showdown",
"mp_strike" => "Strike",
"mp_vacant" => "Vacant",
"mp_shipment" => "Shipment",
"mp_broadcast" => "Broadcast",
"mp_carentan" => "Chinatown",
"mp_creek" => "Creek",
"mp_killhouse" => "Killhouse"
);
if (array_key_exists($short, $maps)) {
return $maps[$short];
}
return $short;
}
function getgametype($short) {
$gametypes = array(
"dom" => "DOM",
"dm" => "DM",
"war" => "TDM",
"sab" => "SAB",
"sd" => "S+D",
"koth" => "KOTH",
"ctf" => "CTF",
"twar" => "TWAR"
);
if (array_key_exists($short, $gametypes)) {
return $gametypes[$short];
}
return $short;
}
function getmods($short) {
$mods = array(
"" => "MW",
"mods/pam4" => "Pam4",
);
if (array_key_exists($short, $mods)) {
return $mods[$short];
}
return $short;
}
function getpb($short) {
$pb = array(
"1" => "An",
"0" => "Aus",
);
if (array_key_exists($short, $pb)) {
return $pb[$short];
}
return $short;
}
function getpw($short) {
$pw = array(
"1" => "Ja",
"0" => "Nein",
);
if (array_key_exists($short, $pw)) {
return $pw[$short];
}
return $short;
}
?>
</body>
</html> |