Hallo leute ich wollte eine serverliste erstellen für mehrere Gameserver.
Die Funktionen (kopiert von einem Gameserverviewer...)
Dann kommt mein teil. Ab hier soll er das so oft aufrufen wie Gameserver ips in der MYSQL drinne stehen..
Hier ist der Teil der mehrmals ausgegeben werden soll..
So nun zu meinem problem.. der Teil der mehrmals ausgegeben werden soll gibt er nur einmal aus obwohl 8 ips in der mysql stehen. er gibt aber nur eine aus und zwar die erste die abgerufen wird danach ist schicht im schacht. bitte helft mir. es kommt keine fehler nix, sondern nur eine ausgabe eines server und nicht von den 8 stück.
Am Anfang kommt noch eine funktion aber an der kann es nicht liegen die spielt keine rolle die ist nur zum zusatz deshalb habe ich sie hier nicht aufgelistet.
THX
MFG
Nostra
Die Funktionen (kopiert von einem Gameserverviewer...)
Dann kommt mein teil. Ab hier soll er das so oft aufrufen wie Gameserver ips in der MYSQL drinne stehen..
PHP-Code:
include("dbconnect.php");
$res = mysql_query("select * from serverbrowser");
$num = mysql_num_rows($res);
for ($i=0; $i<$num; $i++) {
$ip = mysql_result($res, $i, "ip");
$port = mysql_result($res, $i, "port");
$qport = mysql_result($res, $i, "qport");
PHP-Code:
// Include the webspec settings
require("./settings.inc.php");
@error_reporting(0);
// Start HTML Template Engine
$tpl = new tpl();
$body="body".rand(0,5);
$body=$$body;
eval ("\$header = \"".$tpl->get("webspec_header")."\";");
eval ("\$footer = \"".$tpl->get("webspec_footer")."\";");
// check if Server IP is given by the url or default should be used
if(isset($_REQUEST['addr'])) {
if(preg_match("#(.+):(.+)#",$addr,$match)) {
$serverinfo['ipaddress'] = $def_serveripaddress;
$serverinfo['gameport'] = $def_servergameport;
$serverinfo['queryport'] = $def_servergameport+1;
}
} else {
$serverinfo['ipaddress'] = $def_serveripaddress;
$serverinfo['gameport'] = $def_servergameport;
$serverinfo['queryport'] = $def_servergameport+1;
}
// Scan AAO GameServer now
$serveranswer = scanserver($serverinfo['ipaddress'],$serverinfo['queryport']);
// Parse Server Answer and display result
if($serveranswer!="") {
$end_serverdata = strpos($serveranswer, "leader")-1;
$start_playerdata = strpos($serveranswer, "enemy_")+7;
$strlength_playerdata = strpos($serveranswer, "score_t") - ($start_playerdata+1);
$raw_serverdata = substr($serveranswer, 0, $end_serverdata);
$raw_playerdata = substr($serveranswer, $start_playerdata, $strlength_playerdata);
// Generate Server Infos from QueryString
$tmp=explode("\0",$raw_serverdata);
for($i=0;$i<count($tmp);$i++) {
$varname=$tmp[$i];
$i++;
$serverinfo[$varname]=$tmp[$i];
}
// Generate Picture Name for Map
$serverinfo['picname'] = strtolower(str_replace(" ","_",$serverinfo['mapname']));
// Display Admin E-Mail if given in serverinfo
if($serverinfo['AdminEMail']!="") eval ("\$adminemail = \"".$tpl->get("webspec_index_adminemail")."\";");
// Better style for some variables
if($serverinfo['official'] == 1) $serverinfo['official'] = "Yes";
else $serverinfo['official'] = "No";
if($serverinfo['miles'] == 1) $serverinfo['miles'] = "Yes";
else $serverinfo['miles'] = "No";
// Server Setting Icons
if($serverinfo['password']==1) $serverinfo['password'] = "<img border=\"0\" src=\"images/server_password.gif\" title=\"Password required\" width=\"16\" height=\"16\">";
else $serverinfo['password'] = "";
if($serverinfo["miles"]==1) $serverinfo['livefire'] = "<img border=\"0\" src=\"images/server_miles.gif\" title=\"MILES Server\" width=\"16\" height=\"16\">";
else $serverinfo['livefire'] = "<img border=\"0\" src=\"images/server_livefire.gif\" title=\"LiveFire Server\" width=\"16\" height=\"16\">";
if($serverinfo['cheats']==1) $serverinfo['cheats'] = "<img border=\"0\" src=\"images/server_cheats.gif\" title=\"Official Cheats allowed\" width=\"16\" height=\"16\">";
else $serverinfo['cheats'] = "";
if($serverinfo['sv_punkbuster']==1) $serverinfo['punkbuster'] = "<img border=\"0\" src=\"images/server_punkbuster.gif\" title=\"Punkbuster required\" width=\"16\" height=\"16\">";
else $serverinfo['punkbuster'] = "";
// Convert Colored Servernames if required
if(strstr($serverinfo['hostname'],"")) {
$serverinfo['coloredhostname'] = ut2004color($serverinfo['hostname'],$ws_coloredsnames);
$serverinfo['hostname'] = ut2004color($serverinfo['hostname'],0);
} else $serverinfo['coloredhostname'] = $serverinfo['hostname'];
// Generate Player Infos from QueryString
if($serverinfo['numplayers']!=0) {
$nruser = "1";
$tempavghonor = "0";
$pfield = "0";
$playerlistbits = "";
$tmp=explode("\0",$raw_playerdata);
for($i=1;$i<count($tmp)-2;$i++) {
$pfield++;
$varname=$tmp[$i];
if($varname=="") break;
if($pfield==1) $tmpinfo["leader_".$nruser]=$varname;
elseif($pfield==2) $tmpinfo["goal_".$nruser]=$varname;
elseif($pfield==3) $tmpinfo["honor_".$nruser]=$varname;
elseif($pfield==4) $tmpinfo["player_".$nruser]=$varname;
elseif($pfield==5) $tmpinfo["ping_".$nruser]=$varname;
elseif($pfield==6) $tmpinfo["roe_".$nruser]=$varname;
elseif($pfield==7) $tmpinfo["kia_".$nruser]=$varname;
if($pfield==8 && $tmpinfo["player_".$nruser]=="") break;
elseif($pfield==8) {
$tmpinfo["enemy_".$nruser]=$varname;
$nruser++;
$pfield=0;
}
}
// Correct Number of Players
if($nruser >= "1") $serverinfo['numplayers'] = $nruser-1;
for($i=1;$i<($serverinfo["numplayers"]+1);$i++) {
$player[$i]['name'] = $tmpinfo["player_".$i];
$player[$i]['honor'] = $tmpinfo["honor_".$i];
$player[$i]['kills'] = $tmpinfo["enemy_".$i];
$player[$i]['kia'] = $tmpinfo["kia_".$i];
$player[$i]['leader'] =$tmpinfo["leader_".$i];
$player[$i]['goals'] = $tmpinfo["goal_".$i];
$player[$i]['roe'] = $tmpinfo["roe_".$i];
$player[$i]['ping'] = $tmpinfo["ping_".$i];
$tempavghonor = $tempavghonor + $player[$i]['honor'];
// Calculate Player Score
$scorekills = $player[$i]['kills']+$player[$i]['kia'];
if($scorekills <= 0) $scorekills = 0;
$player[$i]['score'] = $scorekills + $player[$i]['goals'] + $player[$i]['leader'] + ($player[$i]['roe']);
// Show colored Playername if required
if(strstr($player[$i]['name'],"")) {
$player[$i]['name'] = ut2004color($player[$i]['name'],1);
}
// Better formats for variables
$player[$i]['kills'] = $player[$i]['kills'] / 10;
$player[$i]['kia'] = 0-($player[$i]['kia'] / 10);
$player[$i]['roe'] = 0-($player[$i]['roe']);
if($player[$i]['honor']=="") $player[$i]['honor'] = "?";
if($player[$i]['leader']=="") $player[$i]['leader'] = "?";
if($player[$i]['goals']=="") $player[$i]['goals'] = "?";
}
// Sort Playerlist if required
if($sortby && $serverinfo['numplayers'] >= 1) {
if(function_exists("sort_by_".$sortby)) usort($player,"sort_by_".$sortby);
}
// Generate Playerlist
for($i=$serverinfo[numplayers];$i>=1;$i--) {
$playername=$player[$i][name];
$playerhonor=$player[$i][honor];
$playerkills=$player[$i][kills];
$playerkia=$player[$i][kia];
$playerscore=$player[$i][score];
$playergoals=$player[$i][goals];
$playerleader=$player[$i][leader];
$playerroe=$player[$i][roe];
$playerping=$player[$i][ping];
eval ("\$playerlistbits .= \"".$tpl->get("webspec_index_playerlistbit")."\";");
}
eval ("\$serverplayerlist = \"".$tpl->get("webspec_index_playerlist")."\";");
}
// Display Empty Player Message if no players are online
if($serverplayerlist=="") eval ("\$serverplayerlist = \"".$tpl->get("webspec_index_playernolistbit")."\";");
// Calculate Average Honor of all users for server info
if($serverinfo['numplayers'] >= 1) $serverinfo['avghonor'] = round($tempavghonor / $serverinfo['numplayers'],0);
else $serverinfo['avghonor'] = 0;
eval("\$tpl->output(\"".$tpl->get("webspec_index_online")."\");");
} else {
eval("\$tpl->output(\"".$tpl->get("webspec_index_offline")."\");");
}
}
So nun zu meinem problem.. der Teil der mehrmals ausgegeben werden soll gibt er nur einmal aus obwohl 8 ips in der mysql stehen. er gibt aber nur eine aus und zwar die erste die abgerufen wird danach ist schicht im schacht. bitte helft mir. es kommt keine fehler nix, sondern nur eine ausgabe eines server und nicht von den 8 stück.
Am Anfang kommt noch eine funktion aber an der kann es nicht liegen die spielt keine rolle die ist nur zum zusatz deshalb habe ich sie hier nicht aufgelistet.
THX
MFG
Nostra
Kommentar