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

Туториал Получаем инфо о сервере без сторонних плагинов

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем Lazy, 9 дек 2011.

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

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

    Баллы:
    103
    Добрый день. Последнее время я все чаще стал заходить на рубуккит в качестве паразита, питающегося информацией, поэтому делюсь тем, чего тут нет, но наверняка пригодится.

    Сейчас сформировался джентльменский набор любого порядочного сервера: клиент, лаунчер, скины и тд. Добавляем туда сканирование и выведение информации о сервере.
    Гуляя по просторам топов, увидел интересную фишку у топкрафта, которой нет больше не в одном топе (на данный момент) - плашка с информацией об онлайне сервера, количестве игроков, айпи и тд. Вот она:
    [​IMG]
    (сейчас у них что-то сломалось, но неважно, мы сделаем свою).

    Можно, конечно, просто зарегистрироваться в топе и скопировать ссылку картинки, но это не дело. Все мы знаем, кто так делает. Школьники.
    Если вас это устраивает - можете сразу переходить к пункту 4.
    В любом случае, причин может быть много, сейчас попробую объяснить, как это все делается.

    Итак, начнем.

    Нам потребуются:
    • Сайт с поддержкой php (т.е. юкоз не пойдет [​IMG])
    • php - скрипты (зеркало)
    • Собственно, сервер
    • Скорее всего вам понадобится гугль (хотя бы даже для того, что бы найти необходимые цвета)
    Разобьем всё условно на 4 этапа:
    1. Настройка php-скрипта и получение информации
    2. Создание изображения
    3. ??????
    4. PROFIT!
    Разбор ориентируется на тех, кто совсем ничего не знает в php (как и я), так что профессионалам некоторые действия могут показаться смешными и абсурдными, если вы знаете, как можно сделать лучше - просим вас в комментарии)

    Если вы не хотите в этом разбираться и редактировать php коды, а просто хотите получить заветную картинку - переходите сразу к пункту 2.

    1. Получаем необходимую информацию о сервере.

    В архиве 2 скрипта - MinecraftStatus.class и online_img.
    Первый - является рабочим, второй - необязательный - является результатом работы.
    1й скрипт трогать, в-общем то и не надо, поэтому просто кидайте его в рабочую папку.
    2й скрипт - лишь пример, вы можете править там что угодно по своему вкусу.
    Буду всё объяснять по примеру.

    Как получить информацию о сервере?
    Для того, что бы все заработало, в своем скрипте (где вы хотите разместить информацию), необходимо "включить" 1й скрипт. Делается это строчкой
    PHP:
    include('MinecraftStatus.class.php');
    Если ваш рабочий скрипт ( MinecraftStatus.class.php) находяится не в той же папке, что и скрипт-результат, то нужно указать полный путь (например /home/site/public_html/scripts/MinecraftStatus.class.php )

    Теперь мы должны указать скрипту наш сервер:
    PHP:
    $Server = new MinecraftStatus($IP 'Тут вводим IP сервера'$Port 'Вводим порт сервера');
    После $IP = и $Port = вписываем ip и порт сервера (например $Server = new MinecraftStatus($IP = '78.46.91.135', $Port = '25568'); )

    Вот, собственно, и всё, теперь мы можем вытаскивать из MinecraftStatus.class.php необходимые данные.

    Какую информацию о сервере я могу получить?
    Всё, что указывается при "листинге" сервера в списке серверов, а это:
    • Доступность - $Server->Online (возвращает true или false, ниже подробнее об этом)
    • Адрес - $Server->IP
    • Порт - $Server->Port
    • "Сообщение дня (MOTD)" или "пояснение" - $Server->MOTD
    • Количество игроков - $Server->CurPlayers
    • Количество слотов - $Server->MaxPlayers
    Вызвать эти данные очень легко. Для этого нужно лишь написать соответствующее обращение.

    Небольшой урок PHP для тех, кто не знает вообще ничего.

    Если вам этого достаточно - можете смело переходить к пункту 4.

    2.Создание изображения

    Теперь будем идти от теории к практике.
    Так как мы можем получить иформацию и можем сгенерировать картинку - почему бы не совместить это? Хотя бы для наглядности.

    Откройте скрипт примера из архива online_img.

    Вы можете сразу скинуть его на ваш сервер и редактировать там.
    На восьмой строчке вписывайте айпи и порт сервера.
    Сохраните изменения.
    В итоге получаем следующую картинку:
    когда доступен
    [​IMG]
    когда недоступен
    [​IMG]

    (сам скрипт является картинкой, и поэтому её адресом в интернете - будет адрес вашего скрипта, например site.ru/scripts/online_img.php)
    Полученная плашка может быть вставлена куда угодно.
    Если вам этого достаточно - переходите к пункту 4.
    Если вы хотите настроить изображение (цвета, надписи, шрифт) - читаем дальше. Жирным выделены обязательные пункты:

    7я строка, подключаем скрипт получения информации. Если ваш рабочий скрипт ( MinecraftStatus.class.php) находяится не в той же папке, что и скрипт-результат, то нужно указать полный путь (например /home/site/public_html/scripts/MinecraftStatus.class.php )

    в 8й строке указываем адрес и порт сервера

    в 9й строчке вы можете изменить отображение игроков не "20 из 30", а "20\30", например.

    в 10й строке необходимо указать шрифт. Шрифт может быть абсолютно любой, в формате .ttf . Необходимо указать полный путь, как и в 6й строке, но только к шрифту.

    11 строка: Текст "Онлайн: "

    12 строка: Текст, когда сервер недоступен "Недоступен."

    13. строка - размер изображения в пикселях, дефолтно стоит 125 на 20.

    14 -15. Цвет фона при онлайне\офлайне сервера. Цвета указываются 3мя параметрами (R, G, B). Коды цветов можно найти например здесь.

    16. Цвет текста

    Вот, в-общем и вся настройка. Хотите что-то добавить/изменить - пробуйте.

    3. ??????
    Я подробно все описал, руководствуясь этой статьей и справочником по html/php можно наворотить что угодно) Например вы можете настроить цвет текста при оффлайн сервере или сделать фоном картинку, или выводить дополнительную информацию на картинке, или вообще не использовать в картинке, а использовать в других скриптах. Все ограничивается вашей фантазией.
    Скрипт-обработчик информации я взял отсюда. Там же вы найдете еще парочку функций и чуть более подробное их описание.

    4.PROFIT!
    Поздравляю! Вы добились желаемого результата! Надеюсь я вам помог сделать свой сервер чуточку лучше. Я честно старался и очень долго все это писал. Оцените мой труд, и, если вы знаете, как решить проблему с кодировкой - напишите в комментариях.

    Всем удачи, и счастливого нового года!
     
    Gentalion, Nixx, Zombanak и 30 другим нравится это.
  2. Хостинг MineCraft
    <
  3. Автор темы
    Lazy

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

    Баллы:
    103
    Небольшой урок пхп:
    PHP - штука несложная. Что бы написать простенький скрипт (как здесь) - нужно понять лишь несколько вещей:
    1. Скрипт начинается с "<?php ", а кончается " ?>", всё, что внутри этих скобочек - рассматривается как скрипт. Скрипт можно вставить прямо в текст, но файл, использующий php, должен иметь разрешение .php (script.txt или script.html исполняться не будет).
    2. Необходимо соблюдать порядок при написании скриптов. Например нельзя использовать еще не введенные переменные - сначала введи её, потом используйте. Так же скобки открытия и закрытия скрипта должны быть на одной и той же вертикальной линии.
    2. Каждое выражение скрипта должно заканчиваться ";" - это значит, что данное выражение закончено.
    3. За чертами "//" следует комментарий, он не выполняется и остается только "на бумаге", нужен для того, что бы было проще ориентироваться в скрипте. После комментария не нужно ставить ";"
    Переменные:
    Начинаются с $ (например $test). Очень простая и удобная вещь. Переменная может иметь самые разные значения - текст, число, "заряд" и т.д.
    Вы сами можете объявлять переменные, просто написав её название (какое угодно) и дав ей значение знаком равно ( например "$test = тест1", тут "$test", как ни странно, будет равен "тест1"). т.е. переменные являются своего рода ссылками на информацию. Вызвать переменную можно просто набрав её название. "Сложить" 2 переменные можно при помощи "." подробнее в примере.
    Действия:
    Их очень много, мы же рассмотрим всего одно - echo. Это действие просто выведет то, что ему скажут - текст, значение переменной и т.д.
    Функции:
    Функции сродни Действиям, но у функций есть параметры - обязательные и нет.
    Пример функции: imagefill (resource image, int x, int y, int col) - выполняет заливку, начиная с координат x, y (верхний левый угол имеет координаты 0, 0), цветом col на изображении image.
    Заряд
    Настоящее название -Булев, но я назвал так, потому что пишу для тех, кто этого не знает, и им будет проще понять, что булев - это как заряд редстоуна: либо он есть, либо его нет, 1 или 0, true или false. На этих значениях можно строить логические функции (if, else и тд).
    Логические Функции
    Это уже глубоко. Мы рассмотрим всего одну, которая используется в скрипте примера. - функция if.
    Что бы понять, используем всего одну фразу:
    Родитель - мужчина ? папа : мама ;
    т.е. если значение верно - результатом будет 1й вариант, если неверно - 2й. "Вопросы" и "ответы" могут быть любыми.

    Теперь применим всё это в одном скрипте для примера:
    PHP:
     Всё, что я сказал  - <?php //Начинаем скрипт
    $text1 "правда" // Вводим переменную и объявляем её значение
    $text2 "ложь" //Вторая переменная
    $text3 "чистая " //Третья переменная, чисто для примера
    $check TRUE //Переменная проверки, назначем её положительной, TRUE
      
    echo $check ?  $text3.$text1 :  $text3$text2 ;//выведет значение переменной  $text3 + $text1, поскольку  $check  = тру (равнялся бы false - вывел бы  $text3 + $text2
    ?> ! 
    В итоге, скрипт выводит нам:"Всё, что я сказал - чистая правда !
    Поздравляю, вы прошли курс молодого бойца, и можете сами писать свои простенькие скрипты для того, что бы выводить информацию о сервере.

    Наверх.
     
    MineMan910, Coffee, SanchesMix и 8 другим нравится это.
  4. LiveD

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

    Баллы:
    153
    Skype:
    LiveDRus
    Нормально.
     
    slavik123123123 нравится это.
  5. Masterm

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

    Баллы:
    68
    Имя в Minecraft:
    masterm
    Функция написана отлично,а вот вывод данных можно закрутить до неузнаваемости
    +1 автору
     
  6. Автор темы
    Lazy

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

    Баллы:
    103
    если интересно - могу попробовать прикрутить сообщения при полном сервере или сделать визуальное отображение заполненности)
     
    SanchesMix нравится это.
  7. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    Я конечно полный нуб, но всё же создатель можешь мне по скайпу немного помочь?
     
  8. rostex

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

    Баллы:
    68
    Сделай, чтобы при офф сервер была показывалась одна картинка, а при включеном другая
     
    DavidShabaev и Оригинало_о нравится это.
  9. Автор темы
    Lazy

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

    Баллы:
    103
    Выкладывай здесь свою проблему, возможно ты не один столкнешься с ней и решение твоей проблемы поможет и другим. Правда это гораздо эффективнее общения в скайпе?
    [​IMG] [​IMG]
    А сейчас что, сильно похожие?
     
    Jack11398, SanchesMix и WorldCount нравится это.
  10. rostex

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

    Баллы:
    68
    Это у тебя они рисованные, а мне интересен момент, когда true вставляется например online.png, когда false offline.png
     
  11. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    Моя проблема непонятие как его вставить, можешь в скайпе добавить invader3um
     
  12. Автор темы
    Lazy

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

    Баллы:
    103
    Я подробно описал в первом посте как вставить, читай внимательнее. Если кратко - нужно 1й скрипт скинуть в любую папку на твоем сайте, а в том месте, где тебе нужно вывести информацию, указать его в пхп скрипте строчками
    PHP:
    <?php
     
    include('MinecraftStatus.class.php');
     
    $Server = new MinecraftStatus($IP 'Тут вводим IP сервера'$Port 'Вводим порт сервера');
     
    ?>
    Это 1й пункт моего топика.
     
  13. IstominHero

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

    Баллы:
    103
    Почему у меня не грузит изображение?
     
  14. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    Извини, я же просто так читаю, ну вообще полностью прочитал, но я так внимательно читаю же обычно ))
    Вообщем спасибо огромное!
     
  15. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    Блин и всё таки не получается, можешь меня в скайп добавить?
     
    Сникерсни нравится это.
  16. Автор темы
    Lazy

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

    Баллы:
    103
    Я уже ответил почему предпочитаю разбирать такие вопросы на форуме.

    Скинь свой скрипт, где ты пытаешься вывести информацию)
     
    SanchesMix нравится это.
  17. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    Скинуть скрипт сам, как я его на своё ип адресс настроил или то куда я его пытаюсь впихнуть?
     
  18. Автор темы
    Lazy

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

    Баллы:
    103
    все вместе)
     
    HoShiMin и SanchesMix нравится это.
  19. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    Вот так вот, ставлю на дле.
    У меня файлы лежат в папке moni, сама папка лежит в корне сайта.
    Вставляю вот так вот:
    <?php

    include('/moni/MinecraftStatus.class.php');

    $Server = new MinecraftStatus($IP = '195.245.97.3', $Port = '25565');

    ?>
     

    Вложения:

    • файл.zip
      Размер файла:
      2,4 КБ
      Просмотров:
      40
  20. Автор темы
    Lazy

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

    Баллы:
    103
    Тебе нужна картинка? если да, то просто настрой файл online_img (у тебя там сейчас не указан шрифт, скинь по своему вкусу, например этот, и укажи его в 10 строчке), сохрани скрипт, и там, где тебе нужна картинка, просто указывай файл online_img.php как будто это картинка.

    Строчки
    PHP:
    <?php
    include('/moni/MinecraftStatus.class.php');
    $Server = new MinecraftStatus($IP '195.245.97.3'$Port '25565');
    ?>
    Нужны только если ты хочешь выводить информацию как текст, а не как картинку)
     
    Сникерсни и SanchesMix нравится это.
  21. 3um

    3um Старожил

    Баллы:
    103
    Skype:
    invader3um
    Имя в Minecraft:
    i3um
    А вот если я буду выводить картику, то что мне писать в поле там где я хочу это выводить?
     

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