Haløjsa.
Jeg har et problem. Jeg vil lave en serverliste på min webside. Har fået strikket et program sammen, og har fået den til at hente server info'en. Dette gør den rigtig nok. Men så skal jeg også have den til at hente info omkring de spillere der er på serverene. Dette virker også fint på den første server i listen. Men ikke på den næste...???
Nogen der kan have en idé om hvorfor den ikke gør det.
Her er koden jeg bruger til at hente info'en :
<?php
$server_id = $_GET['serverid'];
$serverip = "";
$serverport = "";
switch($server_id) {
case(1):
$serverip = "213.115.128.51";
$serverport = "27015";
break;
case(2):
$serverip = "stivan.gaming.nu";
$serverport = "27015";
break;
}
//Forbinder serveren
$fp = fsockopen("udp://".$serverip, $serverport);
if(!$fp) {
echo "<b>Kunne ikke forbinde til serveren</b>";
} else {
//Sender en query om at få detaljer om serveren
$send="\\377\\377\\377\\377details".chr(0);
fwrite($fp,$send);
$tmp=fgets($fp,5);
//Sætter alle standard værdi'erne
$text=""; $count=0;
$antal = 0;
$Servernavn = '';
$Servermap = '';
$Serverdir = '';
$Servertype = '';
$Serveractiveclient = '';
$Servermaxclient = '';
$Servertyp = '';
$Serveros = '';
$Serverpass = '';
//Går svaret igennem
do {
$antal++;
$tmp=fgets($fp,1);
//De forskellige informationer sættes
if ($count == 1) {
$Servernavn = $Servernavn.$tmp;
}
if ($count == 2) {
$Servermap = $Servermap.$tmp;
}
if ($count == 3) {
$Serverdir = $Serverdir.$tmp;
}
if ($count == 4) {
$Servertype = $Servertype.$tmp;
}
if ($count == 5) {
if ($antal == 1) {
$Serveractiveclient = $Serveractiveclient.ord($tmp);
}
if ($antal == 2) {
$Servermaxclient = $Servermaxclient.ord($tmp);
}
if ($antal == 4) {
$Servertyp = $Servertyp.chr(ord($tmp));
}
if ($antal == 5) {
$Serveros = $Serveros.chr(ord($tmp));
}
if ($antal == 6) {
$Serverpass = $Serverpass.ord($tmp);
}
}
$text=$tmp;
if (!ord($tmp)) { $count++; $text.=""; $antal = 0; }
} while ($count<11);
//Password og OS rettes til et tekst
$Serverpass = 'Kræves ikke';
if ($Serverpass == '1') {
$Serverpass = 'Kræves';
}
$Serveros = 'Windows';
if ($Serveros == 'l') {
$Serveros = 'Linux';
}
//Informationen skrives
echo '<table bgcolor="black" height=100% width=100% valign=top><tr><td>';
echo '<table align=center width="400" style="border:1px solid #652a2a ; background-color : black ; color : white ;
font : Garamond ; font-size : x-small">';
echo '<tr><td colspan="2" align="center"><h2>'.$Servernavn.'</h2></td></tr>';
echo '<tr><td colspan="2" align="left"><b>Information:</b></td></tr>';
echo '<tr><td width="50">Map:</td><td>'.$Servermap.'</td></tr>';
echo '<tr><td>Type:</td><td>'.$Servertype.'</td></tr>';
echo '<tr><td>Spillere:</td><td>'.$Serveractiveclient.' af '.$Servermaxclient.'</td></tr>';
echo '<tr><td>Kode:</td><td>'.$Serverpass.'</td></tr>';
echo '<tr><td>OS:</td><td>'.$Serveros.'</td></tr>';
echo '</table>';
//Begynder at hente spillere
echo '<table align=center width="400" style="border:1px solid #652a2a ; color : white ; font : Garamond ; font-size : x-small">';
echo '<tr><td colspan="3" align="left"><b>Spillere:</b></td></tr>';
echo '<tr><td>Id</td><td>Navn</td><td>Frags</td></tr>';
//Sender en query om at få spillere på serveren
$countantal = 2;
$sidstelinje = 0;
$activespillere = 1;
$send="\\377\\377\\377\\377players".chr(0);
fwrite($fp,$send);
$tmp=fgets($fp,5);
echo $tmp;
$text=""; $count=0;
$antal = 0;
$spillere = array();
$spillernr = -1;
//Går svaret igennem
do {
$antal++;
$tmp=fgets($fp,1);
if ($count == 1) {
if ($antal == 8) {
//Finder ud af hvor mange aktive der er på serveren og putter det ind i en variabel
$countantal = ord($tmp) * 4 + 1;
$activespillere = ord($tmp);
}
//Udskriver de forskellige informationer om spillerne
if ($antal == 9) {
$spillernr = $spillernr + 1;
$spillere[$spillernr] = array();
$spillere[$spillernr][2] = ord($tmp);
$sidstelinje = $count;
}
if ($antal > 9) {
$spillere[$spillernr][1] = $spillere[$spillernr][1].str_replace("'", "'", $tmp);
}
} else {
if ($antal == 5) {
$spillernr = $spillernr + 1;
$spillere[$spillernr] = array();
$spillere[$spillernr][2] = ord($tmp);
$sidstelinje = $count;
}
if ($antal > 5) {
$spillere[$spillernr][1] = $spillere[$spillernr][1].str_replace("'", "'", $tmp);
}
if ($antal == 1 AND $sidstelinje+1 == $count) {
$spillere[$spillernr][0] = ord($tmp);
}
}
$text = $text.$tmp;
if (!ord($tmp)) { $count++; $text.="<br>"; $antal = 0; }
} while ($count<$countantal);
//Skriver hvis der ikke er nogle på serveren
if ($activespillere == 0) {
echo "<tr><td colspan='3' align='center'>Ingen aktive spillere</td></tr>";
} else {
//Udskriver spillerne hvis der er nogle
for ($i = 0; $i < sizeof($spillere); $i++) {
echo "<tr><td>".$spillere[$i][2]."</td><td>".$spillere[$i][1]."</td><td>".$spillere[$i][0]."</td></tr>";
}
}
echo "</table>";
//Lukker forbindelsen til serveren
fclose($fp);
};
echo '<table align=center width="400" style="border:1px solid #652a2a ; color : white ; font : Garamond ; font-size : x-small">';
echo '<tr><td align=center valign=middle><a href="halflife://213.115.128.51:27015"><font color=white>Click & Frag</font></a></td></tr>';
echo '</table></td></tr></table>';
?>
Du kan se det i action, på min hjemmeside :
http://www.hotboys.dkGlæder mig til at høre noget....
Har ikke svar på alt, men tror det... 8)