2016-03-27 12 views
1

Şu anda ağın web sitesinde bulunan bir Minecraft sunucusu ağına bağlı oyuncuların sayısını gösteren bir canlı oynatıcı sayacı oluşturmaya çalışıyorum. Örneğin, Hyperbian, sayfanın sağ üst tarafında bir oyuncu sayacına sahiptir.Web sayfasındaki başka bir php dosyasından dizi görüntüleme

Ping, motd, bağlanan oyuncular ve sunucu adı gibi bilgiler için ana sunucuyu sorgulayan ve temiz küçük bir tabloda görüntüleyen bir .php betiği kurmayı başardım.

Players.php

Ben bağlanan oyuncuların miktarını görüntülemek için sayaç almaya çalışıyorum
<?php 
//ini_set("display_errors", 1); 
//ini_set("track_errors", 1); 
//ini_set("html_errors", 1); 
//error_reporting(E_ALL); 
//The following script is tested only with servers running on Minecraft 1.7. 
$SERVER_IP = "142.4.210.112"; //Insert the IP of the server you want to query. 
$SERVER_PORT = "25565"; //Insert the PORT of the server you want to ping. Needed to get the favicon, motd, players online and players max. etc 
$QUERY_PORT = "25565"; //Port of query.port="" in your server.properties. Needed for the playerlist! Can be the same like the port or different. Query must be enabled in your server.properties file! 
$HEADS = "3D"; //"normal"/"3D" 
$show_max = "unlimited"; // how much playerheads should we display? "unlimited"/"10"/"53"/ ... 
$SHOW_FAVICON = "on"; //"off"/"on" 
$TITLE = "My fancy Serverpage"; 
$TITLE_BLOCK_ONE = "General Information"; 
$TITLE_BLOCK_TWO = "Players"; 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
$ping = json_decode(file_get_contents('http://api.minetools.eu/ping/' . $SERVER_IP . '/' . $SERVER_PORT . ''), true); 
$query = json_decode(file_get_contents('http://api.minetools.eu/query/' . $SERVER_IP . '/' . $QUERY_PORT . ''), true); 
//Put the collected player information into an array for later use. 
if(empty($ping['error'])) { 
    $version = $ping['version']['name']; 
    $online = $ping['players']['online']; 
    $max = $ping['players']['max']; 
    $motd = $ping['description']; 
    $favicon = $ping['favicon']; 
} 
if(empty($query['error'])) { 
    $playerlist = $query['Playerlist']; 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title><?php echo htmlspecialchars($TITLE); ?></title> 
     <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.no-icons.min.css"> 
     <link href='http://fonts.googleapis.com/css?family=Lato:300,400' rel='stylesheet' type='text/css'> 
     <link href="https://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet"> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
     <script type="text/javascript" src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> 
     <script language="javascript"> 
     jQuery(document).ready(function(){ 
      $("[rel='tooltip']").tooltip(); 
     }); 
     </script> 
     <style> 
     /*Custom CSS Overrides*/ 
     body { 
      font-family: 'Lato', sans-serif !important; 
     } 
     </style> 
    </head> 
    <body> 
    <div class="container"> 
     <h1><?php echo htmlspecialchars($TITLE); ?></h1><hr>  
     <div class="row"> 
      <div class="span4"> 
       <h3><?php echo htmlspecialchars($TITLE_BLOCK_ONE); ?></h3> 
       <table class="table table-striped"> 
        <tbody> 
         <tr> 
          <td><b>IP</b></td> 
          <td><?php echo $SERVER_IP; ?></td> 
         </tr> 
        <?php if(empty($ping['error'])) { ?> 
         <tr> 
          <td><b>Version</b></td> 
          <td><?php echo $version; ?></td> 
         </tr> 
        <?php } ?> 
        <?php if(empty($ping['error'])) { ?> 
         <tr> 
          <td><b>Players</b></td> 
          <td><?php echo "".$online."/".$max."";?></td> 
         </tr> 
        <?php } ?> 
         <tr> 
          <td><b>Status</b></td> 
          <td><?php if(empty($ping['error'])) { echo "<i class=\"icon-ok-sign\"></i> Server is online"; } else { echo "<i class=\"icon-remove-sign\"></i> Server is offline";}?></td> 
         </tr> 
        <?php if(empty($ping['error'])) { ?> 
        <?php if(!empty($favicon)) { ?> 
        <?php if ($SHOW_FAVICON == "on") { ?> 
         <tr> 
          <td><b>Favicon</b></td> 
          <td><img src='<?php echo $favicon; ?>' width="64px" height="64px" style="float:left;"/></td> 
         </tr> 
        <?php } ?> 
        <?php } ?> 
        <?php } ?> 
        </tbody> 
       </table> 
      </div> 
      <div class="span8" style="font-size:0px;"> 
       <h3><?php echo htmlspecialchars($TITLE_BLOCK_TWO); ?></h3> 
       <?php 
       if($HEADS == "3D") { 
        $url = "https://cravatar.eu/helmhead/"; 
       } else { 
        $url = "https://cravatar.eu/helmavatar/"; 
       } 
       if(empty($query['error'])) { 
        if($playerlist != "null") { //is at least one player online? Then display it! 
         $shown = "0"; 
         foreach ($playerlist as $player) { 
          $shown++; 
          if($shown < $show_max + 1 || $show_max == "unlimited") { 
         ?> 
           <a data-placement="top" rel="tooltip" style="display: inline-block;" title="<?php echo $player;?>"> 
           <img src="<?php echo $url.$player;?>/50" size="40" width="40" height="40" style="width: 40px; height: 40px; margin-bottom: 5px; margin-right: 5px; border-radius: 3px; "/></a> 
        <?php } 
         } 
         if($shown > $show_max && $show_max != "unlimited") { 
          echo '<div class="span8" style="font-size:16px; margin-left: 0px;">'; 
          echo "and " . (count($playerlist) - $show_max) . " more ..."; 
          echo '</div>'; 
         } 
        } else { 
         echo "<div class=\"alert\" style=\"font-size:16px;\"> There are no players online at the moment!</div>"; 
        } 
       } else { 
        echo "<div class=\"alert\" style=\"font-size:16px;\"> Query must be enabled in your server.properties file!</div>"; 
       } ?> 
      </div> 
     </div> 
    </div> 
    </body> 
</html> 

bu html dosyası

<!DOCTYPE HTML> 

<html> 
    <head> 
    <title>Arylion Network</title> 

     <!-- load and instantiate ScrollReveal first --> 
    <script src="https://cdn.jsdelivr.net/scrollreveal.js/3.1.2/scrollreveal.min.js"></script> 

</script> 
    <script> 
     window.sr = ScrollReveal(); 

     // Add class to <html> if ScrollReveal is supported 
     if (sr.isSupported()) { 
     document.documentElement.classList.add('sr'); 
     } 

    </script> 

     <meta charset="utf-8" /> 
     <meta name="viewport" content="width=device-width, initial-scale=1" /> 
     <!--[if lte IE 8]><script src="assets/js/ie/html5shiv.js"></script><![endif]--> 
     <link rel="stylesheet" href="assets/css/main.css" /> 
     <!--[if lte IE 8]><link rel="stylesheet" href="assets/css/ie8.css" /><![endif]--> 




     <script> 
      window.sr = ScrollReveal(); 
     </script> 

    </head> 
    <body class="landing"> 
     <div id="page-wrapper"> 

      <!-- Header --> 
       <header id="header" class="alt"> 
        <h1><a href="index.html">Arylion Network</a></h1> 
        <nav id="nav"> 
         <ul> 
          <li><a href="index.html">Home</a></li> 

          <li><a href="#" class="button">Login</a></li> 
          <li><a href="#" class="button special">Sign Up</a></li> 

         </ul> 
        </nav> 
       </header> 


      <!-- Banner --> 


       <section id="banner"> 



        <h2>Arylion Network</h2> 
        <p>play.arylion.net</p> 
        <?php include 'players.php'; 
        echo "Join $players other players right now!"; 
        ?> 
          <p>Join *insert amount of players right now* other players right now!</p> 
         <ul class="list"> 
         <li><a href="#">Factions</a></li> 
         <li><a href="#">Skyblock</a></li> 
         <li><a href="#">Vote</a></li> 
         <li><a href="#">Store</a></li> 

       </section> 

       <script> 
        sr.reveal('.list', { duration: 2000}, { delay: 200}); 
       </script> 

      <!-- Main --> 
       <section id="about-us"> 

        <h2>About Us</h2> 
        <p>Arylion, established in ... with one mission: Provide brilliant, safe and competitive fun with a rich community. </p> 


       </section> 

      <!-- Footer --> 
       <footer id="footer"> 
        <ul class="icons"> 
         <li><a href="#" class="icon fa-twitter"><span class="label">Twitter</span></a></li> 
         <li><a href="#" class="icon fa-facebook"><span class="label">Facebook</span></a></li> 
         <li><a href="#" class="icon fa-instagram"><span class="label">Instagram</span></a></li> 
         <li><a href="#" class="icon fa-github"><span class="label">Github</span></a></li> 
         <li><a href="#" class="icon fa-dribbble"><span class="label">Dribbble</span></a></li> 
         <li><a href="#" class="icon fa-google-plus"><span class="label">Google+</span></a></li> 
        </ul> 
        <ul class="copyright"> 
         <li>&copy; Arylion Network All rights reserved.</li><li>Design: <a href="http://cmnatic.co.uk">CMNatic</a></li> 
        </ul> 
       </footer> 


     </div> 

     <!-- Scripts --> 
      <script src="assets/js/jquery.min.js"></script> 
      <script src="assets/js/jquery.dropotron.min.js"></script> 
      <script src="assets/js/jquery.scrollgress.min.js"></script> 
      <script src="assets/js/skel.min.js"></script> 
      <script src="assets/js/util.js"></script> 
      <!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]--> 
      <script src="assets/js/main.js"></script> 

    </body> 
</html> 
içine (Ben $ oyuncuların veya $ playerlist ya inanmak)

Daha spesifik olarak html dosyasımda <p>Join *insert amount of players right now* other players right now!</p> çıktısını almak istiyorum dizilim

Bunu yapmaya çalıştığımı görebilirsiniz (Ama nasıl yapamayacağımı bildiğim tek yol) işlendi)

Phew. Bu çok uzun oldu, eğer çok yardımcı olacak her şeye yardım edebilirseniz!

+0

Soruyu güncelledim, teşekkür ederim :) – user2908236

+0

Sorular. 1. players.php'de çok fazla html var, tüm bunları görüntülemek ister misiniz? 2. $ oyuncu listesindeki yeri belirleyemiyorum, bu sadece $ playerlist’deki satırlardan hangisi? – Terminus

+0

1. Özellikle bu soru için değil, her sunucu için players.php için bir bağlantı yapmayı planlıyorum, bu yüzden oyuncular bir sunucunun durumunu görüntüleyebilir, php dosyasındaki HTML tüm sorgu bilgilerini okunabilir temiz masa. 2. Geriye dönüp baktığımda $ playerlist içindeki satır sayısını görüyorum, orada kod var: 'foreach ($ player as $ player)' – user2908236

cevap

0

Neden player.php'deki oyuncu sayısını doğrudan yanlılamıyorsunuz?

+0

Beni affet, php ile hiçbir şekilde aşina değilim. Bunu yapmak zorunda mıyım? 'code' Şu anda oyunculara katıl!

?> HTML dosyasında – user2908236

+0

echo 'Join' .count ($ playerlist) 'seçeneğini deneyin. şimdi diğer oyuncular! '; echo yerine "Şu anda diğer oyunculara katılın!"; – YukiAsuna

+0

Kodu şunun gibi önerdim: ' ' Ancak, çıktı almıyorum, bu bir kodlama sorunu mu yoksa bir sorgu sorunu mu? Teşekkürler – user2908236

İlgili konular