Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Как MCTOP узнают количество игроков?

Discussion in 'Обсуждение Minecraft' started by savakms, Dec 12, 2012.

  1. Автор темы
    savakms

    savakms Старожил Пользователь

    Trophy Points:
    153
    Skype:
    savakmsrus
    Имя в Minecraft:
    savakmsRus
    Как они это делают без плагина и прочего.
    Какой то скрипт, но можно этот скрипт как то посмотреть?
     
  2. Хостинг MineCraft
    <
  3. user13

    user13 Активный участник

    Trophy Points:
    73
    Code:
    <?php
    /* Minecraft 1.4.2 server list ping script
    Originally created by lol768 -- 30/10/2012
    Available for use under the GNU LGPLv3 License
    For usage and distribution information, see: http://www.gnu.org/licenses/lgpl-3.0.html */
     
    $host = "87.98.185.189"; //IP/host of Minecraft server
    $port = 25565; //Minecraft server port, not query port
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //Create the socket
    $connected = socket_connect($socket, $host, $port); //Try and connect using the info provided above
     
    if (!$connected)
        die("Could not connect to server."); //No connection could be established
     
    socket_send($socket, "\xFE\x01", 2, 0); //Send the server list ping request (two bytes)
    $retVal = socket_recv($socket, &$data, 1024, 0); //Get the info and store it in $data
    socket_close($socket); //Close socket
     
    if ($retVal != false && substr($data, 0, 1) == "\xFF") //Ensure we're getting a kick message as expected
    {
        $data = substr($data, 9); //Remove packet, length and starting characters
        $data = explode("\x00\x00", $data); //0000 separated info
        $protocolVersion = $data[0]; //Get it all into separate variables
        $serverVersion = $data[1];
        $motd = $data[2];
        $playersOnline = $data[3];
        $playersMax = $data[4];
    }
    else
    {
        die("Couldn't get expected data"); //Either retVal was false or we didn't get a kick message
    }
     
    //Example usage:
    echo ("$motd is a $serverVersion Minecraft server with $playersOnline/$playersMax players online.");
    ?>
    Это пример кода запроса. Опкод 0хFE. Переменная $playersOnline - то, что тебе нужно. Но, хочу заметить, данный запрос действителен только для 47-го протокола и выше (1.4.1). Если сервер ниже
    этой версии, то запрос выглядит несколько по-другому.
     
  4. Автор темы
    savakms

    savakms Старожил Пользователь

    Trophy Points:
    153
    Skype:
    savakmsrus
    Имя в Minecraft:
    savakmsRus
    А нет чего то подобного на C#, а то переделывать всё это не охото.
     
    Goldenix likes this.
  5. bassikbassik

    bassikbassik Активный участник Пользователь

    Trophy Points:
    68
    Skype:
    gri.shot
    Имя в Minecraft:
    bassik0
    Смысл какой делать на C# мониторинг? залей на хост и получи содержимое файла, которое можно вывести в твоей программе!
    пример на php: echo file_get_contents('Minecraft-Servers.ru/monitoring.php'); Есть функции аналоги в C# 100%
     
  6. Автор темы
    savakms

    savakms Старожил Пользователь

    Trophy Points:
    153
    Skype:
    savakmsrus
    Имя в Minecraft:
    savakmsRus
    Дело в том, что нужно сделать програму индивидуальную под каждый сервер, программа должна пинговать сервер и узнавать игроков, делать over9000 php фалов не вариант
     
    Stalkerdeni971 likes this.
  7. bassikbassik

    bassikbassik Активный участник Пользователь

    Trophy Points:
    68
    Skype:
    gri.shot
    Имя в Minecraft:
    bassik0
    Делать можно все в один файл посылая GET запрос с названием сервера.
     
    Hilgert likes this.
  8. VaNnOrus

    VaNnOrus Старожил Пользователь

    Trophy Points:
    123
    Лучше просто
    Code:
    ?ip=127.0.0.1&p=25565
     
  9. Bonedon

    Bonedon Активный участник Пользователь Заблокирован

    Trophy Points:
    88
    Skype:
    Ybral_ot_Daynov
    Имя в Minecraft:
    Bonedon
    Господи!
    MCTOP уже давно выложил свои чертовы исходники, поройся и найди то что тебе надо!
     
  10. sashabelii

    sashabelii Старожил Пользователь

    Trophy Points:
    123
    Имя в Minecraft:
    sashabelii
    Попробуй загуглить: C# get minecraft server status
     

Share This Page