Jump to content
GIGN Forum

Monitors Nestrada.


cickens
 Share

Recommended Posts

Kad nemu no sejienes(sms.h2.lv) serveri neviens monitors nestrada, bet kad uzlieku kadu citu serveri, tad viss strada.

Seit ir monitors:

<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 = "Mapju adreses"; 


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 
    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 /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  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><b>Statuss:</b></td>
<td>".$statuss."</td>
</tr>
<tr>
<td><b>Adrese:</b></td>
<td>".$adrese."</td>
</tr>
<tr>
<td><b>Spēlētāji:</b></td>
<td>".$players."</td>
</tr>
<tr>
<td><b>Karte:</b></td>
<td>".$mape."</td>
</tr>
<tr>
<td colspan='2'>
<div style='width:162px; margin:0 auto;'>
<img class='img_border' src='$maps".$mape.".jpg' alt='' />
</div>
</td>
</tr>
</table>";
}




?>
</div>

Edited by cickens
Link to comment
Share on other sites

skripts neatbalsta serverus zem p48 protokola...

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...