Serverliste für Gameserver..

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Serverliste für Gameserver..

    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..

    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"); 
    Hier ist der Teil der mehrmals ausgegeben werden soll..

    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($serveranswer0$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==&& $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

  • #2
    wäre es evtl möglich den code auf eine verträgliche breite umzubrechen?

    Kommentar


    • #3
      ja kla.. also..

      ich rufe meine mysql ab welche dann 8 daten zurück gibt. Also läuft meine schleife 8 mal durch. und der inhalt dieser schleife soll 8 mal ausgegeben werden und sollte auch daher was anderes sein wegen den ips aber das tut er nicht er gibt mir nur 1 gameserver aus.

      Kommentar


      • #4
        nee, ich hatte mich auf diesen Teil unserer Regeln bezogen:

        Nur die entsprechende Stelle posten
        Niemandem nützt es, wenn ihr die komplette PHP-Datei postet. 500 Zeilen Code sind zu viel und die wird sich auch keiner durchlesen. Also postet den Quelltext in einem angemessenen Rahmen. Meist reicht die Fehlerzeile +/- etwa 5 bis 10 Zeilen. Wenn der Fehler auf eine Schleife zurückzuführen ist, darf's auch mal die ganze schleife sein. Aber vielleicht kann man dann in der Schleife sinnvoll(!) kürzen.


        Keine horizontalen Scrollbalken
        Informatiker sind FAUL! Folglich mag hier niemand eine horizontale Scrollbar nach rechts bewegen. Achtet also beim Posten darauf, dass ihr bei "breitem" Quelltext entsprechende Umbrüche in den Text einfügt, so dass euer Posting bei einer Auflösung von 1024 Pixeln (Breite) ohne Hindernisse zu lesen ist.
        Tipp: Meist sind lange SQL-Queries oder HTML-Codes die Ursache. Diese lassen sich ohne bedenken umbrechen, kürzen oder sogar entfernen.

        Kommentar


        • #5
          tja leute tut mir leid ich glaube ihr könnt mir net helfen ich kann es nicht kürzen es geht nicht..

          Kommentar


          • #6
            Stell mal das unterdrücken der Fehlermeldungen aus!

            Folgende Zeile muss weg:
            PHP-Code:
            @error_reporting(0); 
            Dann teste das Script nochmal und poste die ausgegebenen Fehlermeldungen.
            hopka.net!

            Kommentar

            Lädt...
            X