Tutoriel [Tuto] PHP pour serveur Minecraft affichage de joueur connectées

Discussion dans 'Guides et tutoriels' créé par MrFraek, 21 Mai 2016.

  1. MrFraek

    MrFraek Développeur Web attitré Beybe <3

    Inscrit:
    17 Avril 2016
    Messages:
    49
    J'aime reçus:
    0
    Bonjour, aujourd'hui, je vais vous communiqué, comment faire pour afficher le nombre, de joueur connectées sur le max de joueur sur votre serveur Minecraft , (JSONAPI es obligatoire)

    Pour ça il vous faudra un site, complais ou non :)

    Donc commençons tous de suite :

    Pour cella vous allez créer un ficher, nommée minequery.class.php (Vous pouvez changer le nom mais je vous conseil de laisser le nom minequery.class.php).

    dedans vous devrez copier et collée se code la :
    <?php
    /*
    * Minequery PHP
    * Copyright (C) 2011 Kramer Campbell
    *
    * This program is free software: you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation, either version 3 of the License, or
    * (at your option) any later version.
    *
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    *
    * You should have received a copy of the GNU General Public License
    * along with this program. If not, see <http://www.gnu.org/licenses/>.
    */

    /**
    * The Minequery PHP class.
    */
    class Minequery {
    /**
    * Queries a Minequery server.
    *
    * @static
    * @param string $address The address to the Minequery server.
    * @param int $port The port of the Minequery server.
    * @param int $timeout The time given before the connection attempt gives up.
    * @Return array|bool An array on success, FALSE on failure.
    */
    public static function query($address = "ip-du-serveur", $port = 25566, $timeout = 30) {
    $query = array();

    $beginning_time = microtime(true);

    $socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

    if (!$socket) {
    // Could not establish a connection to the server.
    return false;
    }

    $end_time = microtime(true);

    fwrite($socket, "QUERY\n");

    $response = "";

    while(!feof($socket)) {
    $response .= fgets($socket, 1024);
    }

    $response = explode("\n", $response);

    // Server port
    $query['serverPort'] = explode(" ", $response[0], 2);
    $query['serverPort'] = $query['serverPort'][1];

    // Player count
    $query['playerCount'] = explode(" ", $response[1], 2);
    $query['playerCount'] = $query['playerCount'][1];

    // Max players
    $query['maxPlayers'] = explode(" ", $response[2], 2);
    $query['maxPlayers'] = $query['maxPlayers'][1];

    // Player list
    $query['playerList'] = explode(" ", $response[3], 2);
    $query['playerList'] = explode(", ", trim($query['playerList'][1], "[]"));

    $query['latency'] = ($end_time - $beginning_time) * 1000;

    return $query;
    }

    /**
    * Queries a Minequery server using JSON.
    *
    * @static
    * @param string $address The address to the Minequery server.
    * @param int $port The port of the Minequery server.
    * @param int $timeout The time given before the connection attempt gives up.
    * @Return object|bool A stdClass object on success, FALSE on failure.
    */
    public static function query_json($address, $port = 25566, $timeout = 30) {
    $beginning_time = microtime(true);

    $socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

    if (!$socket) {
    // Could not establish a connection to the server.
    return false;
    }

    $end_time = microtime(true);

    fwrite($socket, "QUERY_JSON\n");

    $response = "";

    while(!feof($socket)) {
    $response .= fgets($socket, 1024);
    }

    $query = json_decode($response);
    $query->latency = ($end_time - $beginning_time) * 1000;

    return $query;
    }
    }

    Voila vous enregistré et vous aller maintenant aller sois créer le ficher d'informations de votre serveur depuis votre site
    En gros vous allez voir ces simple :)

    Vous allez tous simplement aller dans le ficher ou vous voulez afficher vos informations de serveur :p
    Je vais vous mêttre le code de la page d'info de mon cms :)

    <!DOCTYPE html>
    <!--[if IE 8]> <html class="ie ie8"> <![endif]-->
    <!--[if IE 9]> <html class="ie ie9"> <![endif]-->
    <!--[if gt IE 9]><!--> <html> <!--<![endif]-->
    <?php
    @session_start();
    ('Content-type: text/html; charset=utf-8');
    ?>

    <?php
    require_once ("../configuration/minequery.class.php"); // Ne pas touché !
    $dataserver = (Minequery::query("ip-du-serveur")) // Ne pas touché !
    ?>
    <!-- C O N T E N T -->
    <div class="content_wrapper">
    <div class="container">
    <div class="content_block no-sidebar row">
    <div class="fl-container span12">
    <div class="row">
    <div class="posts-block span12">
    <div class="contentarea">
    <div class="row-fluid">
    <div class="span12 module_cont module_layer_slider">
    <div class="module_content slider_type1">
    <div id="banner1" class="OneByOne_container">
    <div class="oneByOne_item ls_bg1">
    <!-- Edit these items in the theme.css stylesheet to change images and add new or more images -->
    </div>
    <div class="oneByOne_item ls_bg2">
    <!-- Edit these items in the theme.css stylesheet to change images and add new or more images -->
    </div>
    <div class="oneByOne_item ls_bg3">
    <!-- Edit these items in the theme.css stylesheet to change images and add new or more images -->
    </div>
    <div class="oneByOne_item ls_bg4">
    <!-- Edit these items in the theme.css stylesheet to change images and add new or more images -->
    </div>
    <div class="oneByOne_item ls_bg5">
    <!-- Edit these items in the theme.css stylesheet to change images and add new or more images -->
    </div>
    </div>
    </div>
    <script type="text/javascript">
    $(window).load(function(){
    $('#banner1').oneByOne({
    className: 'oneByOne1',
    easeType: 'random',
    responsive: true,
    enableDrag: false,
    width: 1170,
    height:500,
    minWidth: 300,
    slideShow: true,
    slideShowDelay: 5000
    });
    });
    </script>
    </div>
    </div><!-- .row-fluid -->
    <div class="row-fluid">
    <div class="span12 module_cont module_promo_text">
    <div class="shortcode_promoblock ">
    <div class="row-fluid">
    <div class="span9 promo_text_block">
    <h1>EltraCMS - Un CMS Gratuit dédié à Minecraft !</h1>
    <h4>EltraCMS est gratuit, avec Addons et plug-ins vendus séparément !! </h4>
    </div>
    <div class="span3 promo_button_block">
    <a href="#SiteEnCours" class="promo_button">Thèmes & Plugins</a>
    </div>
    </div>
    </div>
    </div><!--.module_cont -->
    <div class="clear"><!-- ClearFIX --></div>
    </div><!-- .row-fluid -->

    <div class="row-fluid">
    <div class="span3 module_cont module_iconboxes">
    <div class="shortcode_iconbox">
    <div class="ico">*</div>
    <h4>Communauté</h4>
    <p>Toujours plus nombreuses !.</p>
    </div>
    </div><!--.module_cont -->
    <div class="span3 module_cont module_iconboxes">
    <div class="shortcode_iconbox">
    <div class="ico">0</div>
    <h4>Site</h4>
    <p>Bientôt disponible sur smartphone !</p>
    </div>
    </div><!--.module_cont -->
    <div class="span3 module_cont module_iconboxes">
    <div class="shortcode_iconbox">
    <div class="ico">x</div>
    <h4>Flexibilité</h4>
    <p>Protection Anti-DDoS toujours disponible !</p>
    </div>
    </div><!--.module_cont -->
    <div class="span3 module_cont module_iconboxes">
    <div class="shortcode_iconbox">
    <div class="ico">z</div>
    <h4>Staff</h4>
    <p>La qualité & maturité est omni-présente dans notre staff !</p>
    </div>
    </div><!--.module_cont -->
    </div><!-- .row-fluid -->

    <hr class="light">

    <div class="row-fluid">
    <div class="span6 module_cont module_text_area">
    <h4></h4>
    <p>Un serveur sans<h1>Aucun lag</h1> les latences n'existe pas ici !.</p>
    <ul class="list_type0">
    <li>Un serveur en or</li>
    <li>un serveur optimisée !</li>
    <li>Un serveur dynamique</li>
    <li>Une communauté dingue</li>
    <li>Un serveur parfaitement configuré !</li>
    </ul>
    <p> <em><?php echo SITE; ?></em> est un serveur Minecraft à but non lucratif, de qualité, nous espérons que vous trouverez votre confort parmis nous !</p>
    <p> Le staff vous conseille fortement de prendre connaissance de notre <a href="../reglement/">règlement</a> (< clique dessus), prise en compte non obligatoire mais recommandé. </p>
    </div>
    <div class="span6 module_cont module_text_area">
    <div class="demo_frame">
    <center><h1>Informations Serveur !</h1></center>
    <h1></h1>
    <center> <center><h4>Ip: <?php echo $ip_serveur; ?></h4></center>
    <center><?php if ($dataserver = (Minequery::query("127.0.0.1"))) { echo '<span class="green">EN LIGNE</span>'; } else { echo '<span class="red">HORS LIGNE</span>'; } ?></center> <!-- Ne pas touché ! -->
    <center><?php echo $dataserver['playerCount'].'/'.$dataserver['maxPlayers']; ?> </center> <!-- Ne pas touché -->
    </div>
    </div>
    </div><!-- .row-fluid -->

    <hr class="light">

    <div class="row-fluid">
    <div class="span12 module_cont module_feature_posts">
    <h4 class="headInModule">Nos Serveurs</h4>
    <div class="featured_slider">
    <div class="carouselslider featured_posts items4" data-count="4">
    <ul class="item_list">
    <li>
    <div class="item">
    <div class="img_block"><img src="../img/pictures/carousel_blog1.jpg" /><div class="carousel_wrapper"></div><span class="post_type post_type_image"></span></div>
    <div class="carousel_title">
    <h4 class="featured_ico_video"><a href="#">Serveur PvP/Faction</a></h4>
    </div>
    <div class="carousel_desc">
    <div class="exc">Monte ta faction et devient le numéro #1 avec tes amis !</div>
    </div>
    </div>
    </li>
    <li>
    <div class="item">
    <div class="img_block"><img src="../img/pictures/carousel_blog3.jpg"/><div class="carousel_wrapper"></div><span class="post_type post_type_image"></span></div>
    <div class="carousel_title">
    <h4 class="featured_ico_img"><a href="#">Lobby</a></h4>
    </div>
    <div class="carousel_desc">
    <div class="exc">La réception de notre serveur !</div>
    </div>
    </div>
    </li>
    <li>
    <div class="item">
    <div class="img_block"><img src="../img/pictures/carousel_blog4.jpg"/><div class="carousel_wrapper"></div><span class="post_type post_type_image"></span></div>
    <div class="carousel_title">
    <h4 class="featured_ico_slider"><a href="#">Role-Play</a></h4>
    </div>
    <div class="carousel_desc">
    <div class="exc">" Si c'est toi qui paye, sa roule pour moi ! "</div>
    </div>
    </div>
    </li>
    <li>
    <div class="item">
    <div class="img_block"><img src="../img/pictures/carousel_blog1.jpg" /><div class="carousel_wrapper"></div><span class="post_type post_type_video"></span></div>
    <div class="carousel_title">
    <h4 class="featured_ico_video"><a href="#">Serveur Créatif</a></h4>
    </div>
    <div class="carousel_desc">
    <div class="exc">Exprime ta créativité en FreeBuild !</div>
    </div>
    </div>
    </li>
    <li>
    <div class="item">
    <div class="img_block"><img src="../img/pictures/carousel_blog2.jpg" /><div class="carousel_wrapper"></div><span class="post_type post_type_image"></span></div>
    <div class="carousel_title">
    <h4 class="featured_ico_video"><a href="#">En Attente...</a></h4>
    </div>
    <div class="carousel_desc">
    <div class="exc">Peut-être un nouveau mode de jeu..?</div>
    </div>
    </div>
    </li>
    </ul>
    </div>
    <div class="clear"></div>
    </div><!-- .featured_slider -->
    </div><!-- .module_cont -->
    </div><!-- .row-fluid -->

    </div><!-- .contentarea -->
    </div>
    <div class="left-sidebar-block span3">
    <!-- Left Sidebar Text -->
    </div><!-- .left-sidebar -->
    </div>
    <div class="clear"><!-- ClearFix --></div>
    </div><!-- .fl-container -->
    <div class="right-sidebar-block span3">
    <aside class="sidebar">
    //Sidebar Text
    </aside>
    </div><!-- .right-sidebar -->
    <div class="clear"><!-- ClearFix --></div>
    </div>
    </div><!-- .container -->
    </div><!-- .content_wrapper -->
    <!--------------------------------------------------------------------------------------------
    # FOOTER DU SITE INTERNET Copyright EltraCMS tous drois réservés #
    --------------------------------------------------------------------------------------------->
    </html>

    Voila maintenant voila ce que sa rend ! sur mon cms. :

    [​IMG]
    PS: Aucun serveur JSONAPI n'es relié a mon cms voila pk il y'a écrit HORS LINGE :p
    Cordialement, MrFraek Créateur/Développeur du CMS EltraCMS
     
    #1 MrFraek, 21 Mai 2016
    Dernière édition: 21 Mai 2016

Partager cette page