1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал [Object Pascal] Пишем свой лаунчер с нубом!

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

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

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

    Баллы:
    88
    Skype:
    kabala1790
    Имя в Minecraft:
    dzikar
    Пишем свой лаунчер с нубом!

    Приветствую посетителей темки! В ней вас будут просвещать как написать свой простой лаунчер на не совсем популярном языка программирования Object Pascal. Для этого уважаемые читающие, вам потребуется всего ничего! Найти где либо Lazarus или Delphi и для начала компонент Indy 10, да HtmlViewer.

    Этапы создания своего лаунчера:
    1. Создаём форму, размещаем нужные компоненты, научимся выводить новости в лаунчер без лишних телодвижений (парсинг только для сильных духом!)
    2. Авторизация на примере веб части сашок, либо другой.
    3. Кнопка настроек и вывод настроек (пока без функционала, что бы было) в том же окне.
    4. Получаем от веб части скин и его отрисовываем с помощью OpenGL/DirectX
    5. Читаем в веб части список серверов. Парсим его и разлаживаем как нам надо, и возможно даже подгружаем картинку.
    6. Делаем возможным скачать клиент и проводить его проверку.
    7. Простой запуск майнкрафта, заполняем пустое окно настроек, Делаем выбор сервера кликабельным для выбора. Размещаем кнопку "Запустить".
    8. Пробуем делать пассивные методы защиты, запуск со своей джава машиной. Введение в JNI.
    9. Пробуем JNI.
    10. Пробуем написать запускатор на C# как отдельную библиотеку.
    11. Вынос защиты во внешнюю библиотеку запускатора.
    12. Шифрование.
    13. Завершение цикла этапов, подведение итогов.

    Вот такой списочек у нас получился уважаемые читатели. Размещаться будут примеры кода, подробное описание что и как работает в меру моего понимания ситуации. В среднем, периодичность написания статей будет порядка двух недель.

    P.S. Если вам что то не нравиться, хочется показаться умнее и так далее, просьба держать своё мнение при себе. Либо создавайте свою тему и делайте то же что и я но так как вам кажется правильным. Я не претендую на звание гуру, поэтому код вполне может не оправдывать ваших ожиданий.

    Этап 1: Создаём форму, размещаем нужные компоненты, научимся выводить новости в лаунчер без лишних телодвижений.
    Итак уважаемые посетители темы. Приступим к уроку. Надеюсь у вас уже установлен Delphi или Lazarus и компоненты Indy 10, HtmlViewer.
    Итак. Запускаем IDE и создаём новый проект. На созданной форме размещаем HTMLViewer (сразу растягиваем как вам нужно), IdHTTP, IdAntiFreeze (Антифриз нужен для того что бы при активном сетевом соединении сама программа не зависала и подавала признаки жизни. Конечно IdHTTP можно вынести в отдельный поток, но выйдет гораздо сложнее в плане понимания будущего кода). И наконец, разместив всё, получим примерно такой вид (пока смотрим правую часть окна):
    [​IMG]
    Всё, переходим к коду. В самом начале думал разместить два варианта кода, но пришёл к выводу и одного хватит, без создания промежуточного файла. Размещать код будем в "procedure TForm1.FormCreate" что бы загружать новость сразу как только запуститься программа. Можно и по другому, но так понятнее.
    Код:
    var
      Stream : TMemoryStream;
    begin
        Stream := TMemoryStream.Create; //Создаём стрим
        Try
        IdHTTP1.Get('http://site.ru/news.php', Stream); //Подключаемся к нужной нам странице и получаем то что и требовалось сразу отправляя в стрим
        Except
          ShowMessage('Ошибка подключения к сети #1'); //Обрабатываем исключение и выводим сообщение если что-то с подключением
        end;
        HtmlViewer1.LoadFromStream(Stream); //Выводим  полученное
        Stream.Free; //Очищаем стрим и можно также закрыть соединение, даже нужно, но как домашнее задание, поищите сами как это сделать.
    end;  
    Вот небольшой такой кусочек кода, вполне хорошо работает. Только не забудьте вставить свой адрес. И да, можно выводить новости не только из веб части лаунчера сашок но и создавать отдельную html страницу и даже с сайта брать новости, однако в последнем случае нам скорее всего придётся парсить что бы не выводить лишнего и использовать тот метод что я хотел изначально вам показать.
     
    Последнее редактирование: 19 дек 2015
  2. Автор темы
    dzikar

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

    Баллы:
    88
    Skype:
    kabala1790
    Имя в Minecraft:
    dzikar
    *Резерв*
     
  3. Vladlen_198

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

    Баллы:
    108
    Skype:
    ultrashock98
    Имя в Minecraft:
    UltraShock
    Лаунчер на pascal, okay.
     
  4. Blooderino

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

    Баллы:
    66
    Хм, не думаю, что самая лучшая идея писать для Minecraft лаунчер на Pascal: не важно, будь то Object Pascal, PascalABC.NET и т.д., ибо сама-то игра кроссплатформенная и вопрос тогда встает: как запустить игру и зайти на Ваш сервер с Linux\Mac OS? Вот если бы Вы переписали бы ядро Pascal на Java, на основе которого можно было бы писать на языке Pascal, а потом все это компилировать под Java и потом запускать как обычную Java-программу (как это сделано в PascalABC.NET, только там, вроде, в оболочку C++ все делается), то было бы великолепно. А так - этих туториалов более чем достаточно.
     
  5. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Было бы интересно.
     
  6. VolanDeVovan

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

    Баллы:
    66
    Лаунчер на паскаль? Бред.
    Автор молодец, полезная статья но лаунчер на паскале писать смысла нет.
     
  7. Автор темы
    dzikar

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

    Баллы:
    88
    Skype:
    kabala1790
    Имя в Minecraft:
    dzikar
    Тему давно забросил, но писал я на линуксе. Обьект паскаль работает и на винде и на линуксе. Потом я начал делать на си шарпе но тож забросил. Надоел майнкрафт .:)

    Была сделана часть со скачкой файлов и авторизацией.
     

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