Nem akartam új témát nyitni, mert idevág a következő kérdésem is. (Tehát elnézést a dupla post-ért!)
Mivel nagyon minimálisan értek a php-hez, el is akadtam.
Az Iron által linkelt szerver infós scriptet használom, egy szervert le is tudok vele kérdezni, viszont többet már nem, ehhez kérnék egy kis segítséget.
Kód:
<link rel="stylesheet" type="text/css" href="css/style.css" />
<?php /* v teto casti nastavujeme hodnoty pro vas server */
$servername ="";
$serverip =""; // IP serveru bez portu a dvojtecky //
$serverport =""; // Port //
Class CounterStrike {
var $m_servervars = ""; // Info about the server current map, players etc
//
// 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));
//
$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;
}
// **********************************************************************
// getServerinfo
// Return true if successful
// **********************************************************************
function getServerInfo($serveraddress,$portnumber,$waittime) {
$cmd="\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";
$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
// Return true if successful
// **********************************************************************
}
$serveradr ="$serverip";
$serverport="$serverport";
$csinfo=new CounterStrike;
$status=$csinfo->getServerInfo($serveradr,$serverport,1000);
?>
<!-- konec hlavniho skriptu -->
<!-- defionovani vzhledu -->
<div class="morelink2">
<?php echo"$servername"; ?> (Map: <?=$csinfo->m_servervars["mapname"] ?>) <br>
IP: <?php echo"$serverip:$serverport"; ?> Slot:
<?=$csinfo->m_servervars["currentplayers"] ?> /
<?=$csinfo->m_servervars["maxplayers"] ?>
</div>
Tehát a kérdésem a következő, hogyan tudok vele több szervert lekérdezni. Próbáltam még egy ilyen külön oldalt készíteni és be include-zni a főoldalba, de nem jött össze.
A segítséget előre is köszönöm!