oto zrodla o jakie prosiles class
class_server
<?
$serv_ip = \"81.219.9.50\";
$serv_port = \"27015\";
$players = \"aktualnie nie ma zadnych graczy online\";
$pics = \"map\";
$error = \"nie mozna sie polaczyc z serverem!<br>server offline\";
$creator = true;
function fragsort ($a, $b) {
if ($a[\"frags\"] == $b[\"frags\"]) return 0;
if ($a[\"frags\"] > $b[\"frags\"]) {
return -1;
} else {
return 1;
}
}
Class CounterStrike {
var $m_playerinfo =\"\";
var $m_servervars =\"\";
var $m_serverrules =\"\";
function timenow() {
}
function getServerData($command,$serveraddress,$portnumber,$waittime) {
$serverdata =\"\";
$serverdatalen =0;
if ($waittime< 500) $waittime= 500;
if ($waittime>2000) $waittime=2000;
if (!$cssocket=fsockopen(\"udp://\".$serveraddress,$portnumber,$errnr)) {
$this->errmsg=\"No connection\";
return \"\";
}
$starttime=$this->timenow();
do {
$serverdata.=fgetc($cssocket);
$serverdatalen++;
if ($this->timenow()>($starttime+$waittime)) {
$this->errmsg=\"Connection timed out\";
return \"\";
}
} while ($socketstatus[\"unread_bytes\"] );
return $serverdata;
}
function getnextstring(&$data) {
$temp=\"\";
$counter=0;
while (ord($data[$counter++])!=0) $temp.=$data[$counter-1];
return $temp;
}
function getnextbytevalue(&$data) {
$temp=ord($data[0]);
return $temp;
}
function getnextfragvalue(&$data) {
$frags=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
if ($frags>=4294967294) $frags-=4294967296;
return $frags;
}
function getnextplaytime(&$data) {
$decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
while (strlen($binnumber) < 32
) $binnumber=\"0\".$binnumber;
if (substr($binnumber,0,1)==\"1\") $exp=0-$exp;
$man=1;$manadd=0.5;
for ($counter=9;$counter<32;$counter++) {
if (substr($binnumber,$counter,1)==\"1\") $man+=$manadd;
$manadd=$manadd/2;
}
$time=round(pow
(2
,$exp)*$man);
$playtime=\"\";
if ($time>3600) {
$playtime=sprintf(\"%2dh\",$time/3600);
}
$time%=3600;
$playtime=$playtime.sprintf(\"%2dm\",$time/60);
$time%=60;
$playtime=$playtime.sprintf(\"%2ds\",$time);
return $playtime;
}
function getServerRules($serveraddress,$portnumber,$waittime) {
$cmd=\"xFFxFFxFFxFFrulesx00\";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ;
if (strlen($serverdata)<5
) return false;
$rules=(ord($serverdata[5]))+(ord($serverdata[6])*256);
if ($rules!=0) {
$serverdata=substr($serverdata,7
);
for ($i=1;$i<=$rules;$i++) {
$rulename =$this->getnextstring($serverdata);
$rulevalue =$this->getnextstring($serverdata);
$this->m_serverrules[$rulename]=$rulevalue;
}
return true;
} else {
return false;
}
}
function getServerInfo($serveraddress,$portnumber,$waittime) {
$cmd=\"xFFxFFxFFxFFinfox00\";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime) ;
if (strlen($serverdata)<5
) return false;
$serverdata=substr($serverdata,5
);
$this->m_servervars[\"serveraddress\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"servername\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"mapname\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"game\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"gamename\"] =$this->getnextstring($serverdata);
$this->m_servervars[\"currentplayers\"] =$this->getnextbytevalue($serverdata);
$this->m_servervars[\"maxplayers\"] =$this->getnextbytevalue($serverdata);
return true;
}
function getServerPlayers($serveraddress,$portnumber,$waittime) {
$cmd=\"xFFxFFxFFxFFplayersx00\";
$serverdata=$this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
if (strlen($serverdata)<5
) return false;
$players=ord($serverdata[5]);
$serverdata=substr($serverdata,7
);
for ($i=1;$i<=$players;$i++) {
$frags =$this->getnextfragvalue($serverdata);
$playtime =$this->getnextplaytime($serverdata);
$this->m_playerinfo[$i] =array(\"name\"=>$playername,\"frags\"=>$frags,\"time\"=>$playtime);
}
if ($players>1
) usort($this->m_playerinfo,\"fragsort\");
return true;
}
}
?>
oraz plik server1.inc
<? require 'counterstrikeClass.php'; ?>
<div align=\"left\">
<table width=\"698\" height=\"350\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
<tr>
<td height=\"350\" valign=\"top\">
<center>.::SERVER 1::.</center>
<br>
<?
$serveradr =\"$serv_ip\";
$serverport=\"$serv_port\";
$csinfo=new CounterStrike;
$status=$csinfo->getServerInfo($serveradr,$serverport,1000);
if ($status) {
$server = new CounterStrike;
$status=$server->getServerPlayers($serveradr,$serverport,1000);
if ($status) {
?>
<TABLE>
<TR>
<TD width=\"598\" height=\"196\">
<TABLE width=\"400\">
<TR>
<TD width=\"75\">Servername :</TD>
<TD width=\"313\">
<?=$csinfo->m_servervars[\"servername\"] ?>
</font></TD>
</TR>
<TR>
<TD>Server ip :</TD>
<TD>
<?=$csinfo->m_servervars[\"serveraddress\"] ?>
</font></TD>
</TR>
<TR>
<TD>Slots :</TD>
<TD>
<?=$csinfo->m_servervars[\"currentplayers\"] ?>
/
<?=$csinfo->m_servervars[\"maxplayers\"]?>
</font></TD>
</TR>
<TR>
<TD>Map :</TD>
<TD>
<?=$csinfo->m_servervars[\"mapname\"]?>
</font></TD>
</TR>
<TR>
<TD COLSPAN=\"2\"> </TD>
</TR>
<TR>
<TD height=\"106\" COLSPAN=\"2\" ALIGN=\"CENTER\">
<div align=\"left\"><IMG SRC=\"<?
if(is_file($pics . $csinfo->m_servervars[\"mapname\"] . \".gif\")) { print $pics . $csinfo->m_servervars[\"mapname\"] . \".gif\"; } else { print $pics . \"cstrike_nopicture.gif\"; } ?>\" width=\"130\"
height=\"100\" ALT=\"<?=$csinfo->m_servervars[\"mapname\"]?>\"> </div></TD>
</TR>
</TABLE>
<table>
<tr>
<td width=\"85\">Name</td>
<td width=\"78\">Frags</td>
<td width=\"84\">Time</td>
</tr>
<?
while (list
(,$player) = each ($server->m_playerinfo)) { ?>
<tr>
<td><?=$player['name'];?></td>
<td><?=$player['frags'];?></td>
<td><?=$player['time'];?></td>
</tr>
<?
}
} else {
?>
<tr>
<td class=\"error\" colspan=\"3\">
<? echo $players ?></td>
</tr>
<?
}
?>
</table></TD>
</TR>
<? } else {
} ?>
</TABLE>
<?
} else {
?>
<strong>
<? echo $error ?></strong>
<?
}
?>
</td>
</tr>
</table>
</div>