Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //SERVERA ADRESE
- $adrese = "xxxxxxxxxxxxxxxx";
- //VAI JUS IZMANTOSIET MONITORU, KA INCLUDI - IEKLAUSIET LAPA, VAI NE yes/JA no/NE
- $man_incluudot = "no";
- //KARSU ADRESE
- $adrese_mapeem = "xxxxxxxxxxxxxxxxxxxxxxxx";
- 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 = "yes"; // 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 brivs slots";
- } else if ($statuss == "0") {
- $statuss = "nav brivu slotu";
- } else {
- $statuss = "$statuss brivi sloti";
- }
- $players = "$tag/$max";
- if ($man_incluudot !== "yes") {
- echo '';
- }
- echo "<div class='serveris_nr'>
- <div class='label label-info servstat'><i class='icon-info-sign'></i> xxxxxxx DEATHRUN</div>
- <div class='label label-inverse servstat'><i class='icon-info-sign icon-white'></i> xxxxxxx.LV:27015</div>
- <div style='padding-left:6px;'><img src='$adrese_mapeem".$mape.".jpg' class='img-polaroid bnw' style='width:215px;height:135px;' alt='' /></div>
- <center>
- <div class='label label-success servstat'><i class='icon-eye-open'></i> ".$mape."</div>
- <div class='label label-inverse servstat'><i class='icon-user icon-white'></i> Spēlētāji: ".$tag."/".$max."</div>
- </center>
- </div>";
- if (empty($mape)) {
- echo "";
- }
- echo "";
- if ($man_incluudot !== "yes") {
- echo '';
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment