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

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

Тема в разделе "Обсуждение Minecraft", создана пользователем savakms, 12 дек 2012.

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

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

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

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

    Баллы:
    73
    Код:
    <?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). Если сервер ниже
    этой версии, то запрос выглядит несколько по-другому.
     
    savakms, nvidia_hl2, 1lyaSweeper и ещё 1-му нравится это.
  4. Автор темы
    savakms

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

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

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

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

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

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

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

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

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

    Баллы:
    123
    Лучше просто
    Код:
    ?ip=127.0.0.1&p=25565
     
  9. Bonedon

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

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

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

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

Поделиться этой страницей