статус на cs сървър online/offline

stun4o

Registered
http://cs-bg.info/reklama-na-serveri.php?view=all&page=1
значи вижте както е тука. като се цъкне Провери и изкарва статуса.
Това може ли да се направи и без lgsl?
 
Код:
 <?php
$ip = "ипто на сървъра";
$port = "27015"; //порта
if(@fsockopen($ip,$port,$errno,$errstr,1)) {
$status = "Online";
} else {
$status = "Offline";
}
echo $status;
?>
 
мда, пробвах

ето какво прочетох в едн форум:
Hi,
udp protocal is connectionless, and you have to check if the server is avaliable by receiving some data from it. The flow is:
1. send data to remote server
2. wait for the server's responsing data
3. response is received indicates it's avaliable, timeout indicates not.

So, you must send some data to the server, and the data should be in the right format that will cause the server to response something to it.
Hope it helps.

ще помисля...
 
Код:
<?
//***************************************************
// Peter Huizenga CS status Script v1.0
// This is an Counter Strike Server info script!
//
//
// This Script is Free and may not be for sale in any way!
// You can change it very easy to youre own will,
// and server info!
//
// Thanks Peter Huizenga
// webmaster@clandoa.tk
//***************************************************


// Edit below to youre own server info!

// Server info
$serv_ip = "84.252.43.29";                            // IP-to na server
$serv_port = "27015";                                // porda

// Site style
$title = "Server Info and player stats";            // Title of the site
$players = "There are no players online!";            // If no players are on the server this message will apere
$pics = "/images/csmaps/";                            // Place of the map images!!
$error = "Can't connect to gameserver!<br>Server is down!!";    // Message if no connection to server!
$bgcolor = "#262d40";                                // Background color

$font1 = "#FF0000";                                    // Color of the Error!
$font2 = "#FFFFFF";                                    // Color of the Name
$font3 = "#f5d300";                                    // Color of the information leters
$size1 = "10";                                        // Size of the Error!
$size2 = "4";                                        // Size of Name
$size3 = "2";                                        // Size of the information leters

$copy = "#333333";                                    // color for copyright
$border ="#000000";                                    // colot tabelen

$tab1  = "#8898A8";                                    // Tabellenkop
$tab2  = "#41556D";                                    // Tabellenkleur 2

$creator = true;                                    //true; or false; Support the Creator!


//Do not Edit Below this line!!
//*******************************************************************************************************

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  ="";                          // Serverrules

	//
	// 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("%2dh",$time/3600);
		}
		$time%=3600;
		$playtime=$playtime.sprintf("%2dm",$time/60);
		$time%=60;
		$playtime=$playtime.sprintf("%2ds",$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) {
		$cmd="\xFF\xFF\xFF\xFFrules\x00";
		$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) {
		$cmd="\xFF\xFF\xFF\xFFinfo\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,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;
	}
	//
	// Get Playerinfo
	// Read information about the players into m_playerinfo
	// Name,frags,playtime
	// Return true if successful
	//
	function getServerPlayers($serveraddress,$portnumber,$waittime) {
		// Servercommand
		$cmd="\xFF\xFF\xFF\xFFplayers\x00";
		$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;
	}
}
?>


// Server.php


<?php
//Do not Edit Below this line!!
//*******************************************************************************************************
require('counterstrikeClass.php');
?>

<html>
<head>
<TITLE><? echo $title ?></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>
<BODY bgcolor="<? echo $bgcolor ?>">
</head>

<body background="achtergrondje.gif" leftmargin="0" topmargin="7" marginwidth="0" marginheight="0">
<div align="left">
<table width="748" height="355" border="1" cellpadding="1" cellspacing="1" bordercolor="#000000" bgcolor="#F3F3F3">
<tr>
<td height="351" valign="top">
<?
// Get server Adress and port!
$serveradr ="$serv_ip";
$serverport="$serv_port";

// Get server info!
$csinfo=new CounterStrike;
$status=$csinfo->getServerInfo($serveradr,$serverport,1000);
if ($status) {

	// Get info about players, frags, timep!
	$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"><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Servername :</font></TD>
		<TD width="313"><font color="<? echo $font3 ?>" size="<? echo $size3 ?>">
		<?=$csinfo->m_servervars["servername"] ?>
		</font></TD>
		</TR>
		<TR>
		<TD><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Server ip :</font></TD>
		<TD><font color="<? echo $font3 ?>" size="<? echo $size3 ?>">
		<?=$csinfo->m_servervars["serveraddress"] ?>
		</font></TD>
		</TR>
		<TR>
		<TD><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Spelers :</font></TD>
		<TD><font color="<? echo $font3 ?>" size="<? echo $size3 ?>">
		<?=$csinfo->m_servervars["currentplayers"] ?>
		</font><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">/</font>              <font color="<? echo $font3 ?>" size="<? echo $size3 ?>">
		<?=$csinfo->m_servervars["maxplayers"]?>
		</font></TD>
		</TR>
		<TR>
		<TD><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Map :</font></TD>
		<TD><font color="<? echo $font3 ?>" size="<? echo $size3 ?>">
		<?=$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"><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Name</font></td>
		<td width="78"><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Frags</font></td>
		<td width="84"><font color="<? echo $font2 ?>" size="<? echo $size2 ?>">Time</font></td>
		</tr>
		<?
		if (is_array($server->m_playerinfo)) {
			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"><font color="<? echo $font3 ?>" size="<? echo $size13 ?>"><? echo $players ?></font></td>
			</tr>
			<?
		}
		?>
		</table></TD>
		</TR>
		<? } else {
	} ?>
	</TABLE>
	<?
} else {
	?>
	<strong><font color="<? echo $font1 ?>" size="<? echo $size1 ?>"><? echo $error ?></font></strong>
	<?
}
?>
<? if($creator) { echo(" <font color='#FFFFFF' size='2'>Peter Huizenga CS status Script v1.0</font>"); } ?> </td>
</tr>
</table>
</div>
</body>
</html>


Това намерих в нета виж дали ти помага

Сега ще пробвам дал иработи и ще ти дам и демо


ПП:апф явно иска файлове които не са дадени в сайта... ще потърся друг
 
аз иамам нещо за цс сурвур но бачка само на вин32 и линух ако е от мац сурвура не се показва
 
Код:
<?
$ip = "88.203.208.25";
$ip = gethostbyname($ip); 
$port = "27015";
if($sock = @fsockopen($ip,$port,$errno,$errstr,1))
{ 
fgetc($sock); 
$status = '<B><FONT COLOR=red>Offline</b></FONT>';
}
else
{
$status = '<B><FONT COLOR=lime>Online</b></FONT>';
}
echo "<table border='1'>
<tr><td><center>Сървар IP</center></td><td><center>Порт</center></td><td>Статус</td></tr>
<tr><td width='20'>$ip</td><td>$port</td><td><center>$status</center></td></tr>
</table>";
?>


така трябва да стане..



Мисля, че това е по добре http://www.amxmodxbg.org/forum/viewtopic.php?t=4428
 
Това разгледа ли ? http://www.amxmodxbg.org/forum/viewtopic.php?t=4428
 
Wicz каза:
Код:
<?
$ip = "88.203.208.25";
$ip = gethostbyname($ip); 
$port = "27015";
if($sock = @fsockopen($ip,$port,$errno,$errstr,1))
{ 
fgetc($sock); 
$status = '<B><FONT COLOR=red>Offline</b></FONT>';
}
else
{
$status = '<B><FONT COLOR=lime>Online</b></FONT>';
}
echo "<table border='1'>
<tr><td><center>Сървар IP</center></td><td><center>Порт</center></td><td>Статус</td></tr>
<tr><td width='20'>$ip</td><td>$port</td><td><center>$status</center></td></tr>
</table>";
?>


така трябва да стане..



Мисля, че това е по добре http://www.amxmodxbg.org/forum/viewtopic.php?t=4428

Ти да не си играл преди в моят сървър ? Самоче сега IP е 88.203.208.25:27016 . А до скрипка показва винаги Online
 
Абе ето ви момчета кода работи!
Код:
	 <?php
	
		$ip1 ="asd"]; //ипто
		$port1 = "sad"; //порта

		$output = @fsockopen("udp://$ip1", $port1, $errno, $errstr, 0.25);
		@socket_set_timeout($output, 1);
		@socket_set_blocking($output, 1);

		@fwrite($output, "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00");

		$buffer = @fread($output, 4096);

		if (!$buffer) { 
		$on = "<font color=\"red\">offline</font>";
		} else {
		$on = "<font color=\"green\">online</font>";
		}
echo $on; 
?>
 
Код:
	 <?php
	
		$ip1 ="asd"; //ипто
		$port1 = "sad"; //порта

		$output = @fsockopen("udp://$ip1", $port1, $errno, $errstr, 0.25);
		@socket_set_timeout($output, 1);
		@socket_set_blocking($output, 1);

		@fwrite($output, "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00");

		$buffer = @fread($output, 4096);

		if (!$buffer) { 
		$on = "<font color=\"red\">offline</font>";
		} else {
		$on = "<font color=\"green\">online</font>";
		}
echo $on; 
?>
 
FreeStylerz каза:
Код:
	 <?php
	
		$ip1 ="asd"; //ипто
		$port1 = "sad"; //порта

		$output = @fsockopen("udp://$ip1", $port1, $errno, $errstr, 0.25);
		@socket_set_timeout($output, 1);
		@socket_set_blocking($output, 1);

		@fwrite($output, "\xFF\xFF\xFF\xFF\x54\x53\x6F\x75\x72\x63\x65\x20\x45\x6E\x67\x69\x6E\x65\x20\x51\x75\x65\x72\x79\x00");

		$buffer = @fread($output, 4096);

		if (!$buffer) { 
		$on = "<font color="red">offline</font>";
		} else {
		$on = "<font color="green">online</font>";
		}
echo $on; 
?>

А как мога да изкарам име на картата и играчи/макс.играчи
 

Back
Горе