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

Туториал Полная инструкция по настройке FMX Launcher

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

Статус темы:
Закрыта.
  1. Автор темы
    NuaN

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

    Баллы:
    76
    Имя в Minecraft:
    NuaN
    [​IMG]
    Инструкция by HoShiMin
    Все вопросы задавать в официальной теме!
    FMXLauncher – серверный лаунчер, построенный на платформе FireMonkey в среде Delphi XE7.



    Возможности:

    – Веб-часть на PDO
    – Запуск игры через JNI
    – Работа с online-mode по стандартному протоколу Yggdrasil
    – Работа со своей Java-машиной: защита от всех универсальных обходов
    – Шифрование и GZip-сжатие запросов
    – Мультисерверность\мультиклиентность
    – Пофайловая проверка и загрузка клиентов
    – Полноценные 3D-скины с возможность установки, удаления и загрузки на диск
    – Простая настройка на стороне сервера
    – Поддержка клиентов с любой файловой иерархией
    – 32х-битные и 64х-битные версии под соответствующие разрядности JVM
    – Широкое использование библиотеки параллельного программирования PPL для многократного ускорения работы
    – Антиотладочная защита СЗПУ “Периметр”
    – Защита от редакторов памяти СЗПУ “Ратиборец”


    Технические особенности платформы FM³:

    – Полная поддержка DirectX 11.1
    – Использование возможностей GPU при расчёте графики
    – Лёгкое создание оформления: начиная нестандартными формами и заканчивая анимациями и шейдерными эффектами
    – Стилизация стандартных элементов управления


    В стандартном комплекте поставляются:

    – Веб-часть
    – Исходники формы и главного модуля лаунчера со всей логикой
    – Полные исходники защиты лаунчера (СЗПУ “Периметр” и СЗПУ “Ратиборец”)
    – PSD дизайна и распарсенный дизайн
    – Bat-файлы для упаковки ресурсов и сжатия лаунчера​


    Скачать: Офф.тема

    Скриншоты:
    [​IMG]
    [​IMG]


    Настройка:

    Для настройки нам понадобятся Delphi XE8 (скачать с Яндекс-диска), Notepad++ и FileZilla.


    Настройка веб-части:
    Создадим в корне сайта пустую папку, назовём её, например, Minecraft. Туда загружаем содержимое папки WebFMX:
    [​IMG]

    Перед привязкой к базе необходимо создать дополнительную таблицу, где будут храниться данные авторизации игроков, для этого необходимо в phpMyAdmin в разделе SQL выполнить запрос из Tokens.sql:
    Код:
    CREATE TABLE IF NOT EXISTS `Tokens` (
      `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `uuid` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `accessToken` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      `serverId` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
      UNIQUE KEY `username` (`username`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Если у вас DLE:
    По-умолчанию DLE блокирует загрузку файлов, не имеющих расширений (например, файлы assets’ов), вместо них выдавая HTML-страницу об ошибке. Чтобы это предотвратить, нужно открыть .htaccess в корне сайта, найти там следующую строчку:
    Код:
    RewriteRule ^([^.]+)/?$ index.php?do=cat&category=$1 [L]
    И закомментировать её (перед ней поставить #).

    Настраиваем дальше:

    Открываем файл settings.php:
    Код:
    <?php
    $dbhost = 'localhost';
    $dbname = 'dbName';
    $dbuser = 'User';
    $dbpass = '12345';
    $players_table_name = 'Players'; // Имя таблицы с данными игроков (для DLE = dle_users)
    $tokens_table_name  = 'Tokens'; // Имя таблицы с данными для авторизации (запрос на создание в Tokens.sql)
    $main_folder = 'http://gaga121as.pe.hu/Minecraft/'; // Путь к рабочей папке на хостинге
    $servers_list    = 'servers.json'; // Название файла с настройками клиентов
    $skins_folder    = 'MinecraftSkins'; // Папка со скинами
    $cloaks_folder   = 'MinecraftCloaks'; // Папка с плащами
    $previews_folder = 'Previews'; // Папка с превью-картинками серверов
    $key = '12345'; // Ключ для шифрования запросов
    ?>
    Имя базы, имя пользователя и пароль выдаёт хостер.

    Имя таблицы с аккаунтами – зависит от CMS. Например, в DLE это ‘dle_users’.

    Имя таблицы с авторизационными данными – таблица, которую мы создали выше (в нашем случае ‘Tokens’).

    Файл с настройками клиентов – JSON с настройками каждого клиента, ссылками на необходимые скрипты и файлы Java (servers.json).

    ПЛАЩИ (для 1.7.5 и выше):
    В папке $cloaks_folder должны быть плащи с добавкой “_cloak”, например так: “Player_cloak.png”. Если у вас плащи называются по-другому, редактируйте имя в profile_info.php, но имя плаща не должно совпадать с именем скина!



    Следующим шагом настроим запрос для выборки пользователя в базе аккаунтов.

    Открываем файл sql_utils.php:

    В массиве $user настраиваем хэширование пароля: например, для DLE = md5(md5(…)).

    В SQL-запросе меняем названия столбцов таблицы на свои (для DLE это name и password соответственно):


    Код:
    $user = array(
    'login'    => $login,
    'password' => md5(md5($password))
    );
    ...
    $sql = $db_handle->prepare("SELECT COUNT(1) FROM `{$players_table_name}` WHERE `name`=:login AND BINARY `password`=:password");
    Привязка к базам закончена, теперь настроим клиенты.



    Готовые клиенты и аргументы для них можно скачать ЗДЕСЬ.



    В папке со скриптами веб-части создаём папки Clients, Previews и Java:

    Clients – в эту папку будем загружать необходимые клиенты (Clients\ClientName)

    Previews – здесь будут располагаться превью-картинки серверов (Previews\ServerPreview.png)

    Java – здесь будет располагаться Java обеих разрядностей (Java\x32\…; Java\x64\…)



    Настроим Sandbox-клиент 1.7.10 с оптифайном и шейдерами 30FPS.

    Все библиотеки лежат в папке libraries, *.jar-файл клиента в папке versions\30FPS\, natives-библиотеки в versions\30FPS\natives:

    Содержимое папки Sandbox:
    [​IMG]

    Содержимое папки libraries:
    [​IMG]

    Содержимое папки versions\30FPS\:
    [​IMG]
    Клиент готов к загрузке на сервер, но прежде необходимо переключить файлзиллу в режим передачи двоичных данных:
    [​IMG]
    Это необходимо для корректной загрузки бинарных файлов (assets’ов).


    Итак, загружаем клиент в папку */Minecraft/Clients/Sandbox:
    [​IMG]

    Дальше загружаем 32х-битную и 64х-битную джаву в соответствующие папки (Java/x32 и Java/x64):
    [​IMG]
    Когда все файлы загружены, необходимо их проиндексировать и пересчитать все контрольные суммы. Для этого открываем браузер и выполняем скрипт client_utils.php:
    [​IMG]

    Все файлы подготовлены и проиндексированы, можно приступать к настройке клиента.
     
    Последнее редактирование: 1 окт 2015
  2. Хостинг MineCraft
    <
  3. Автор темы
    NuaN

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

    Баллы:
    76
    Имя в Minecraft:
    NuaN
    Открываем файл servers.json и видим 3 блока:

    launcher_info – информация о версии лаунчера и ссылки на обновления
    java_settings – информация и настройки иерархии джавы
    servers – список серверов и настройки клиентов

    Разберём каждый блок.


    launcher_info:
    Код:
    "launcher_info" : {
    "version" : 2,
    "link32"  : "http://gaga121as.pe.hu/Minecraft/FMXLauncher32.exe",
    "link64"  : "http://gaga121as.pe.hu/Minecraft/FMXLauncher64.exe"
    }
    version – номер версии лаунчера
    link32 – ссылка на 32х-битный лаунчер
    link64 – ссылка на 64х-битный лаунчер


    java_settings:
    Код:
    "java_settings":{
    "jvm32_library_path" : "bin/client/jvm.dll",
    "jvm64_library_path" : "bin/server/jvm.dll",
    "java32_executable_path" : "bin/java.exe",
    "java64_executable_path" : "bin/java.exe",
    
    "java_version"       : 8,
    "jvm_arguments"      : "-Xmn128m",
    "java_checked_folders" : [
    {
    "name"      : "bin",
    "type"      : "*.jar",
    "recursive" : "true"
    },
    {
    "name"      : "lib",
    "type"      : "*.jar",
    "recursive" : "true"
    },
    {
    "name"      : "bin",
    "type"      : "*.dll",
    "recursive" : "true"
    },
    {
    "name"      : "lib",
    "type"      : "*.dll",
    "recursive" : "true"
    }
    ]
    }
    jvm32(64)_library_path – путь к jvm.dll относительно java32(64)_folder
    java32(64)_executable_path
    – путь к java(w).exe относительно java32(64)_folder для legacy-запуска
    java_version – версия java на сервере (число 6 для Java 6, число 7 для Java 7, число 8 для Java 8)
    jvm_arguments – аргументы JVM
    java_checked_folders – проверяемые файлы и папки:
    name – имя проверяемой папки
    type – тип проверяемых файлов (можно указать имя конкретного файла)
    recursive – проверять ли в подпапках, может принимать значения true (да) или false (нет)

    Чтобы отключить использование джавы с сервера, необходимо поставить восклицательный знак перед именем блока:
    Код:
    "!java_settings" : {
        ...
    },

    servers:
    Код:
    "servers":[
    {
    "name" : "Sandbox Server",
    "info" : "1.7.10 + GLSL Shaders",
    "ip"   : "127.0.0.1",
    "port" : "25565",
    "legacy_Launch" : "false",
    
    "client_folder"    : "Clients/Sandbox",
    "natives_folder"   : "versions/$client_version/natives",
    "assets_folder"    : "assets",
    "asset_index"      : "1.7.10",
    
    "version"    : "30FPS",
    "main_class" : "net.minecraft.launchwrapper.Launch",
    "arguments"  : "--username $username --version $client_version --gameDir $client_dir --assetsDir $client_dir/assets --assetIndex 1.7.10 --accessToken $access_token --uuid $uuid --userProperties [] --userType legacy --tweakClass optifine.OptiFineTweaker --tweakClass shadersmodcore.loading.SMCTweaker",
    "!manual_loading" : [
    {"name" : "libraries/launchwrapper.jar"},
    {"name" : "versions/$client_version.jar"}
    ],
    "jar_folders" : [
    {"name" : "libraries"},
    {"name" : "versions/30FPS"}
    ],
    
    "client_checked_folders" : [
    {
    "name"      : "libraries",
    "type"      : "*.jar",
    "recursive" : "true",
    "exclusives" : [
    {"name" : "custom_folder"},
    {"name" : "custom_lib.jar"},
    {"name" : "else_custom_lib.jar"}
    ]
    },
    {
    "name"      : "versions",
    "type"      : "*.jar",
    "recursive" : "true"
    },
    {
    "name"      : "resourcepacks",
    "type"      : "*.zip",
    "recursive" : "true"
    }
    ],
    "preview_image"         : "Sandbox.png",
    "requested_client_name" : "Sandbox"
    },
    {
    ...
    }
    ]
    name – отображаемое в лаунчере имя сервера
    info – отображаемая в лаунчере информация о сервере
    client_folder – путь к папке с клиентом относительно main_folder из host_info

    natives_folder – папка с natives-библиотеками относительно client_folder
    assets_folder
    – папка с assets’ами
    asset_index – индекс версии assets’ов (например, 1.7.10)

    legacy_launch – тип запуска: true – через java(w).exe, false – через JNI

    version – название версии клиента
    main_class – главный класс (смотреть в JSON’е собираемого клиента)
    arguments – параметры запуска (смотреть в JSON’е собираемого клиента)
    manual_loading – список jar-файлов, которые необходимо загрузить
    jar_folders – список папок, из которых необходимо подключить все jar-файлы (эта опция перекрывает manual_loading!)
    client_checked_folders – список проверяемых файлов и папок
    * поле exclusives – список исключаемых из проверки файлов и папок
    preview_link – имя превьюшки в папке previews_folder в host_info
    requested_client_file
    – имя папки с клиентом в Clients


    Для использования в блоке servers доступны следующие переменные:

    $username
    – ник игрока

    $client_dir
    – путь к папке с клиентом (%APPDATA%\.FMXLauncher\Clients\ClientName)

    $client_version
    – содержимое поля version в блоке servers

    $access_token
    – сессия

    $uuid
    – UUID игрока

    $ip
    – IP сервера

    $port
    – порт сервера


    Также можно использовать переменные из оригинального JSON’а (скопировав и вставив строку запуска целиком).


    Настройка поля arguments:

    Если клиент был собран с помощью TLauncher’a или официального лаунчера от Mojang, то в папке с *.jar-файлом клиента будет лежать

    JSON-файл с аргументами запуска. Открываем его в Notepad++ и находим поле ‘minecraftArguments':
    [​IMG]
    Копируем строку запуска в поле arguments, по желанию вручную настраиваем аргументы.

    Внимание! Использовать только прямые слэши (“/”)!

    Сохраняем servers.json, обновляем его на FTP. Настройка веб-части закончена.


    Настройка лаунчера:

    Распаковываем из архива на диск папку FMXLauncher и ищем файл полного проекта:
    [​IMG]
    Открываем его в Delphi:
    [​IMG]
    Открываем LauncherSettings.pas:
    Код:
    var
      // Необходимые скрипты:
      AuthScriptAddress     : string = 'http://gaga121as.pe.hu/Minecraft/auth.php';
      SkinScriptAddress     : string = 'http://gaga121as.pe.hu/Minecraft/skin_utils.php';
      GetFilesScriptAddress : string = 'http://gaga121as.pe.hu/Minecraft/get_client_files.php';
    
      // Информация об иерархии на хосте:
      PreviewsHostFolder : string = 'http://gaga121as.pe.hu/Minecraft/Previews/';
      BaseHostFolder     : string = 'http://gaga121as.pe.hu/Minecraft/';
    
      MainFolder   : string = '.FMXLauncher'; // Имя папки в %APPDATA%
      RegistryPath : string = 'FMXLauncher';  // Название записи в реестре в ветке HKEY_CURRENT_USER\\Software\\
    
      LauncherVersion: Integer = 3;
    
      Key: AnsiString = '12345';
    Прописываем адреса скриптов, имя рабочей папки, имя ветки в реестре для хранения настроек, версию лаунчера (не должна быть меньше, чем указано в servers.json, иначе лаунчер потребует обновиться, а также ключ – должен совпадать с ключом в settings.php.


    Открываем Definitions.inc:
    Код:
    //{$DEFINE USE_PERIMETER} // Использовать СЗПУ "Периметр" (только х32)
    //{$DEFINE USE_RATIBOR}   // Использовать СЗПУ "Ратиборец"
    
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    // Настройки СЗПУ "Ратиборец":
    //{$DEFINE HIDE_PROCESS}          // Скрывать процесс
    //{$DEFINE FLUSH_PROCESS_INFO}    // Стирать информацию о процессе
    //{$DEFINE INVALIDATE_PROCESS_ID} // Сделать идентификатор процесса недействительным одним из следующих способов:
      //{$DEFINE EQUALS_9999}           // Заменить ProcessID на 9999
      //{$DEFINE AS_CURRENT_PROCESS_ID} // Заменить на ID процесса, пытающегося получить доступ к лаунчеру
      //{$DEFINE RANDOM_PROCESS_ID}     // Случайный ProcessID в диапазоне [0..9999]
    {$DEFINE MEMORY_READ_PROTECT}  // Защита от чтения памяти
    {$DEFINE MEMORY_WRITE_PROTECT} // Защита от изменения памяти
    
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    {$DEFINE HOOK_JAVA_HALT} // Перехватывать завершение процесса из клиента (для отладки, только в Debug-режиме)
    {$DEFINE HIDE_LAUNCHER} // Скрывать лаунчер перед запуском игры
    {$DEFINE CLEAR_JVM_FLAGS} // Очищать флаги JVM перед запуском игры
    {$DEFINE INGAME_CLIENT_CHECKING} // Проверка клиента во время игры
    
    // Загрузка файлов:
    //{$DEFINE DOWNLOAD_FILES_LIST_ONCE}  // При проверке файлов не загружать список файлов
    {$DEFINE SINGLE_THREAD_DOWNLOADING} // Загрузка файлов в один поток
    {$DEFINE GZIP_DOWNLOADS}            // GZip-сжатие файлов при загрузке
    
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    // Настройки рендера FireMonkey (по-умолчанию используется DirectX 10/11.1):
    //{$DEFINE USE_DIRECTX_9}        // Использовать DirectX 9.0c
    //{$DEFINE USE_SOFTWARE_DIRECTX} // Софтварное ускорение
    //{$DEFINE NOT_USE_DIRECTX}      // Не использовать DirectX
    //{$DEFINE NOT_USE_CLEAR_TYPE}   // Не использовать ClearType для рендеринга шрифтов
    Комментируя или раскомментируя эти флаги, можно менять функционал лаунчера.

    По окончании настройки жмём Shift + F9 (собрать проект),

    в соответствующей архитектуре и режиму компиляции папке (Win32/Win64 -> Debug/Release) будет создан FMXLauncher.exe.

    Поочерёдно собираем лаунчер в режиме релизной компиляции для Win32 и Win64 (см. скрин выше), переходим в папку с исходниками и запускаем Pack’n’Capture.bat – этот батник извлечёт из Win32/Release и Win64/Release скомпилированный лаунчер в корень папки с исходниками, сожмёт его UPX’ом и переименует в FMXLauncher32.exe/FMXLauncher64.exe – это и есть готовый к использованию лаунчер.


    Настройка дизайна:

    Смена картинок в TImage’ах:
    [​IMG]
    [​IMG]
    Смена фона:
    [​IMG]
    [​IMG]
     
Статус темы:
Закрыта.

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