TeCk | Datums: Otrdiena, 2010-02-02, 3:45 PM | Ziņojums # 1 |
Gandrīz speciālists
Grupa: Administrators
Ziņojumu skaits: 363
Statuss:
| Code <div style="color:#000000"> <?php error_reporting(0);
############################################################ ####################=DATU NORĀDĪЉANA=####################### ############################################################
//SERVERA ADRESE $adrese = "IP"; //VAI JŪS IZMANTOSIET MONITORU, KĀ INCLUDI - IEKĻAUSIET LAPĀ, VAI NĒ yes/JĀ no/NĒ $man_incluudot = "yes"; //KARЉU ADRESE $maps = "Links uz mapem";
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 = ""; // Info about players var $m_servervars = ""; // Info about the server current map, players etc var $m_serverrules = ""; // Server rules var $m_challenge = ""; // Server challenge number
// // Get exact time, used for timeout counting // function timenow() { return doubleval(ereg_replace('^0\.([0-9]*) ([0-9]*)$','\\2.\\1',microtime())); }
// // Read raw data from server // function getServerData($command,$serveraddress,$portnumber,$waittime) { $serverdata = ""; $serverdatalen = 0;
if ($waittime< 500) $waittime= 500; if ($waittime>2000) $waittime=2000; $waittime=doubleval($waittime/1000.0);
if (!$cssocket = @fsockopen("udp://".$serveraddress,$portnumber,$errnr)) { $this->errmsg="No connection"; return ""; }
socket_set_blocking($cssocket,true); socket_set_timeout($cssocket,0,500000); fwrite($cssocket,$command,strlen($command)); // Mark $starttime=$this->timenow(); do { $serverdata.=fgetc($cssocket); $serverdatalen++; $socketstatus=socket_get_status($cssocket); if ($this->timenow()>($starttime+$waittime)) { $this->errmsg = "Connection timed out"; fclose($cssocket); return ""; } } while ($socketstatus["unread_bytes"] ); fclose($cssocket); return $serverdata; }
function getnextstring(&$data) { $temp=""; $counter=0; while (ord($data[$counter++])!=0) $temp.=$data[$counter-1]; $data=substr($data,strlen($temp)+1); return $temp; }
function getnextbytevalue(&$data) { $temp=ord($data[0]); $data=substr($data,1); 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; $data=substr($data,4); return $frags; }
function getnextplaytime(&$data) { $decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24); $binnumber=base_convert($decnumber,10,2); while (strlen($binnumber) < 32) $binnumber="0".$binnumber; $exp=abs(base_convert(substr($binnumber,1,8),2,10))-127; 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("%2d:",$time/3600); } $time%=3600; $playtime=$playtime.sprintf("%2d:",$time/60); $time%=60; $playtime=$playtime.sprintf("%2d",$time); $data=substr($data,5); return $playtime; }
// ********************************************************************** // getServerRules // Read rules/setup from the gameserver into m_serverrules // Return true if successful // ********************************************************************** function getServerRules($serveraddress,$portnumber,$waittime) { // Get a challenge number if (!$this->getChallenge($serveraddress,$portnumber,$waittime)) return false;
// Send a request for "rules" to the server $cmd = "\xFF\xFF\xFF\xFFV" . $this->m_challenge; $serverdata = $this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
// Check length of returned data, if < 5 something went wrong if (strlen($serverdata)<5) return false; // Figure out how many rules there are $rules=(ord($serverdata[5]))+(ord($serverdata[6])*256); if ($rules != 0) { // Strip OOB data $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; } }
// ********************************************************************** // getServerinfo // Read information about the gameserver into m_servervars // Serveraddress,servername,current map etc etc // Return true if successful // ********************************************************************** function getServerInfo($serveraddress,$portnumber,$waittime) { // Send a request for "info" to the server $cmd = "\xFF\xFF\xFF\xFFTSource Engine Query\x00"; $serverdata = $this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
// Check length of returned data, if < 5 something went wrong if (strlen($serverdata)<5) return false; // Strip OOB data $serverdata=substr($serverdata,6); $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);
// Get a challenge number if (!$this->getChallenge($serveraddress,$portnumber,$waittime)) return false;
// Send a request for "rules" to the server $cmd = "\xFF\xFF\xFF\xFFU" . $this->m_challenge; $serverdata = $this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
// Check length of returned data, if < 5 something went wrong if (strlen($serverdata)<5) return false;
// Check number of players to read data for $players = ord($serverdata[5]);
// Strip OOB data and other stuff $serverdata = substr($serverdata,7);
for ($i=1;$i<=$players;$i++) { $playername = htmlspecialchars($this->getnextstring($serverdata)); $frags = $this->getnextfragvalue($serverdata); $playtime = $this->getnextplaytime($serverdata); $this->m_playerinfo[$i] = array("name"=>$playername,"frags"=>$frags,"time"=>$playtime); } // Sort players in fragorder if ($players>1) usort($this->m_playerinfo,"fragsort"); return true; }
// ********************************************************************** // getChallenge // Read a challenge number from the gameserver into m_challenge // Return true if successful // ********************************************************************** function getChallenge($serveraddress,$portnumber,$waittime) { $cmd = "\xFF\xFF\xFF\xFFW"; $serverdata = $this->getServerData($cmd,$serveraddress,$portnumber,$waittime);
// Check length of returned data, if < 5 something went wrong if (strlen($serverdata)<5) return false; $this->m_challenge = substr($serverdata,5); return true; }
}
function applaunch($game) { $game = str_replace("cstrike", "10", $game); $game = str_replace("dod", "30", $game); $game = str_replace("valve", "70", $game); $game = str_replace("czero", "80", $game); $game = str_replace("bshift", "130", $game); $game = str_replace("dmc", "40", $game); $game = str_replace("gearbox", "50", $game); $game = str_replace("ricochet", "60", $game); $game = str_replace("tfc", "20", $game); $game = str_replace("czeror", "100", $game); $game = str_replace("redorchestra", "1200", $game);
return $game; }
function applaunch2($game) { $game = str_replace("cstrike", "240", $game);
return $game; }
function joinip($ip, $port, $game, $type) { if($type == "HL1") { $game = applaunch($game); } elseif($type == "HL2") { $game = applaunch2($game); } return "<a href='steam: \"-applaunch ".$game."\" +connect ".$ip.":".$port."'>".$ip.":".$port."</a>"; }
function getMapImage($map) { if (!file_exists("csslmore/".$map.".gif")) { $map = "cstrike/cstrike_nopicture"; }
return "<img border=\"1\" src=\"csslmore/".$map.".gif\">"; }
list($serverip, $serverport) = explode(":", $adrese); $csinfo=new CounterStrike; $status=$csinfo->getServerInfo($serverip,$serverport,1000); if($csinfo->m_servervars["gamename"] == "р") { $servers["servername"] = htmlentities($csinfo->m_servervars["serveraddress"]); $servers["gamename"] = $csinfo->m_servervars["game"]; $servers["game"] = $csinfo->m_servervars["mapname"]; $servers["mapname"] = $csinfo->m_servervars["servername"]; $servers["currentplayers"] = $csinfo->m_servervars["currentplayers"]; $servers["maxplayers"] = $csinfo->m_servervars["maxplayers"]; $servers["type"] = "HL2"; } //HL1 else { $servers["servername"] = htmlentities($csinfo->m_servervars["servername"]); $servers["gamename"] = $csinfo->m_servervars["gamename"]; $servers["game"] = $csinfo->m_servervars["game"]; $servers["mapname"] = $csinfo->m_servervars["mapname"]; $servers["currentplayers"] = $csinfo->m_servervars["currentplayers"]; $servers["maxplayers"] = $csinfo->m_servervars["maxplayers"]; $servers["type"] = "HL1"; } $tag = $servers["currentplayers"]; $max = $servers["maxplayers"]; $nosaukums = $servers["servername"]; $mape = $servers["mapname"]; $statuss = $max-$tag; if ($statuss == "1") { $statuss = "viens brīvs"; } else if ($statuss == "0") { $statuss = "nav slotu"; } else { $statuss = "$statuss brīvi sloti"; } $players = "<font color='green'>$tag</font>/<font color='red'>$max</font>";
if (empty($mape)) { echo "Serveris Offline<br />"; } else{ echo " <style>
#container { font: 95% Tahoma, 'Lucida Grande', 'Trebuchet MS', verdana, arial, sans-serif; color:#303030; }
.img_border { padding:0; border:2px solid #98a6b8; background-color:#fffff; }
</style>
<table> <tr> <td>Statuss:</td> <td>".$statuss."</td> </tr> <tr> <td>Adrese:</td> <td>".$adrese."</td> </tr> <tr> <td>Spēlētāji:</td> <td>".$players."</td> </tr> <tr> <td>Karte:</td> <td>".$mape."</td> </tr> <tr> <td colspan='2'> <br /> <div style='width:144px; margin:0 auto;'> <span style='padding: 3px; background-color: #98a6b8; none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(255, 255, 255); -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px;'>".$mape."</span> <img class='img_border' src='$maps".$mape.".jpg' alt='' /> </div> </td> </tr> </table>"; }
?> </div>
|
|
| |