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

Туториал [UPD] Система авторизации клиента

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем karolize, 10 июн 2012.

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

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

    Баллы:
    153
    Всем добрых суток! В данном туториале я расскажу как сделать лаунчер с автообновлением, систему загрузки скинов, привязку клиент<->сервер.
    Вот файлы и программы которые нам понадобятся.

    1) Начнём с модификации клиента. Скачиваем InClassTranslator. Открываем minecraft.jar и вытаскиваем следующие файлы:

    Для версии 1.5.2
    bdk.class - Заменяем http://session.minecraft.net/game/joinserver.jsp?user= на путь к файлу joinserver.php | В конец ссылки обязательно допишите ?user=
    bfj.class
    , bfk.class и - Заменяем http://skins.minecraft.net/MinecraftSkins на путь к папке с плащами; Заменяем http://skins.minecraft.net/MinecraftCloaks на путь к папке со скинами. | В конце ссылок обязательно должны быть слэши "/"

    2) Теперь возьмемся за редактирование исходников лаунчера. Качаем их и распаковываем. Скачиваем и устанавливаем NetBeans. Открываем программу, нажимаем Файл->Создать проект... В появившемся окне в левом столбике выбираем "Java", а в правом "Приложение Java". Жмём "Далее". Тут можно выбрать название проекта, и его расположение. Теперь, важно, убираем галочку с "Создать главный класс" и жмём "Готово". Нажимаем на проект правой кнопкой мыши и выбираем "Свойства". В "Папки с пакетами исходных файлов:" удаляем папку "src", нажимаем "Добавить папку" и выбираем папку с исходниками лаунчера. В "Формат исходного/двоичного кода" выбираем JDK 7. Жмём "Ок". Теперь щёлкаем по нашему проекту два раза. У нас выплыло меню. Два раза щёлкаем по первой строчке, затем по последней (net.minecraft).
    Открываем GameUpdater.java. Ищем на 171 строчке ссылку на скачку обновлений. Меняем на свою. Открываем LauncherFrame.java и на 101 строчке заменяем ссылку на наш auth.php. Открываем LoginForm.java. На 300 строке меняем ссылку регистрации на свою (к файлу reg.php). На 355 строке меняем ссылку на скачку вашего лаунчера. На 189 строке меняем ссылку на ваши новости. Теперь, если вы хотите изменить директорию игры, то откройте Util.java. На 29 строке измените "minecraft" на ваше название. Затем откройте minecraft.jar, идите по пути net/mineraft/client и вытаскивайте файл Minecraft.class. Откройте его с помощью InClassTranslator. Строку
    minecraft (с маленькой буквы) меняем на своё название. Засовываем обратно. Поздравляю, второй этап завершён!

    3) Скачиваем и распаковываем скрипты авторизации. Открываем connect.php. Внутри файла подробная инструкция настройки, но если что-то непонятно пишите в комментарии. Заливаем все файлы (кроме папки sql) на свой сайт. Теперь заходим в phpMyAdmin. Выбираем базу данных и жмём "Импорт". Нажимаем "Выбрать файл" и закачиваем все файлы из папки sql (Откройте с помощью любого текстового редактора файл add_columns.sql и в первой строке вместо tabe_name напишите название вашей таблицы с пользователями). Теперь давайте проверим, правильно ли вы настроили connect.php. Скачиваем скрипты проверки авторизации и закидываем их в туже папку, в которой находятся скрипты авторизации. Откройте файл index1.php. Введите ваш логин и пароль, а в поле "Версия лаунчера" введите 13. Если вы настроили всё правильно, то скрипт вам выдаст что-то типа этого: "цифры:буквы_цифры:логин:нужные_нам_цифры:" Копируем "нужные_нам_цифры" и открываем index2.php. Вводим логин, в поле "Сессия" вводим нужные_нам_цифры. а в поле "Сервер" вводим 1. Если скрипт выдал YES, то открываем index3.php. Там вводим логин, а в поле "Сервер" вводим 1. Если скрипт выдал "ОК" то поздравляю вас, вы всё правильно настроили. На этом заканчивается 3 этап.

    4) Это последний этап нашего туториала. Откройте ваш Craftbukkit с помощью архиватора. Зайдите в папку net/minecraft/server. Вытащите файл ThreadLoginVerifier.class. Откройте его, и измените http://session.minecraft.net/game/checkserver.jsp?user= на вашу сылку к файлу checkserver.php | Внимание! В конец ссылки обязательно припишите ?user= Засовываем обратно. В настройках сервера ставим online mod=true и пробуем зайти.
    Всё! На этом основная часть туториала заканчивается!


    5) Теперь о файлах обновления. Скачиваем архив с файлами обновления. Распаковываем. Это уже в принципе готовый комплект файлов обновления, вам остаётся лишь добавить сюда свой minecraft.jar и client.zip. Теперь подробнее поговорим о нём. В этом архиве содержаться дополнительные файлы и папки. Например texturpacks, servers.dat settings.txt. P.S. client.zip обязательно должен присутствовать в папке с обновлениями, даже если он пустой. Сделали всё необходимое? Молодцы! Заливайте эти файлы в папку откуда должны качаться обновления.
    5.1) Теперь поговорим о том, как изменить версию игры, чтобы лаунчер предупредил вас об этом и запросил разрешение на закачку новой версии игры. Для этого нужно зайти в phpMyAdmin, перейти в таблицу с версиями игры и лаунчера и изменить значение в строке latest-game-build.
    Как изменить версию лаунчера. Для этого опять же зайдите в phpMyAdmin, выберите таблицу с версиями лаунчера и игры и измените значение в строке launcher-version. Теперь откройте исходники лаунчера, конкретно файл LauncherFrame.java и измените значение у
    VERSION = новая_версия; | Находится в районе 18-20 строк.
    (userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + новая_версия; | Находится в районе 100-105 строк.
    Теперь откройте LoginForm.java и в районе 354-360 строк замените ссылку на путь к скачке лаунчера.
    Всё, мы изменили версию лаунчера. При заходе со старого нам будет писаться что текущий лаунчер устарел, и попросит вас скачать новый.


    Ответы на часто задаваемые вопросы:
    В: Скрипты авторизации работают нормально, но при входе через клиент пишет "Failed To Verify Username!".
    О: Вы не указали или указали неверную ссылку к скрипту joiserver.php с файле NetClientHandler.java.

    В: Не могу зайти на сервер. Пишет "Bad Login".
    О: Внимательно проверьте connect.php. Возможно вы указали неверную таблицу с пользователями, или неверные названия колонок сессии игрока и сессии сервера.

    В: В файле регистрации вместо букв отображаются кракозябры.
    О: Перекодируете его в ASCII.

    В: Лаунчер пишет "Невозможно подключиться к базе данных"
    О: Проверьте, импортировали ли вы таблицу data в вашу базу данных и правильное ли название колонок сессии игрока и сервера вы указали.

    В: Лаунчер пишет "Неверный логин или пароль"
    О: Проверьте, правильную ли ссылку вы указали к файлу auth.php.
    Исходники лаунчеров
    Империя - Язык: Java
    Asn007-Launcher - Язык: Java
    Лаунчер AnjoCaido - Язык: Java
    Slenky Launcher - Язык: Java
    [TXDL SE] - Язык: Java
    Maximusorg Launcher - Java
    ThisCraft - Язык: Visual Basic .NET
    Open Source Visual basic Launcher - Язык: Visual Basic .NET
    vLauncher - Язык: C++

    -----------------------------------------------------------
    Monocraft [OpenSource, Framework, Launcher]
    Примеры настройки connect.php
    DLE
    <?php
    if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
    $crypt = 'hash_dle';
    $db_host= 'localhost'; // Ip-адрес базы данных
    $db_port= '3306'; // Порт базы данных
    $db_user= 'root'; // Пользователь базы данных
    $db_pass= 'root'; // Пароль базы данных
    $db_database= 'DATABASE';
    $db_table = 'dle_users';
    $db_columnUser = 'name';
    $db_columnPass = 'password';
    $db_columnSesId = 'sesId';
    $db_columnServer = 'serverId';
    $db_GameDatatable = 'data';
    $db_Propertycolumn = 'property';
    $db_Valuecolumn = 'value';
    $link = @mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die('Невозможно установить соединение с базой данных!');
    mysql_select_db($db_database,$link);
    mysql_query("SET names UTF8");
    ?>
    WordPress
    <?php
    if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
    $crypt = 'hash_wordpress';
    $db_host= 'localhost'; // Ip-адрес базы данных
    $db_port= '3306'; // Порт базы данных
    $db_user= 'root'; // Пользователь базы данных
    $db_pass= 'root'; // Пароль базы данных
    $db_database= 'DATABASE';
    $db_table = 'wp_users';
    $db_columnUser = 'user_login';
    $db_columnPass = 'user_pass';
    $db_columnSesId = 'sesId';
    $db_columnServer = 'serverId';
    $db_GameDatatable = 'data';
    $db_Propertycolumn = 'property';
    $db_Valuecolumn = 'value';
    $link = @mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die('Невозможно установить соединение с базой данных!');
    mysql_select_db($db_database,$link);
    mysql_query("SET names UTF8");
    ?>
    Xenforo
    <?php
    if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
    $crypt = 'hash_xenforo';
    $db_host= 'localhost'; // Ip-адрес базы данных
    $db_port= '3306'; // Порт базы данных
    $db_user= 'root'; // Пользователь базы данных
    $db_pass= 'root'; // Пароль базы данных
    $db_database= 'DATABASE';
    $db_table = 'xf_user';
    $db_columnUser = 'username';
    $db_columnPass = 'data';
    $db_tableOther = 'xf_user_authenticate';
    $db_columnSesId = 'sesId';
    $db_columnServer = 'serverId';
    $db_GameDatatable = 'data';
    $db_Propertycolumn = 'property';
    $db_Valuecolumn = 'value';
    $link = @mysql_connect($db_host.':'.$db_port,$db_user,$db_pass) or die('Невозможно установить соединение с базой данных!');
    mysql_select_db($db_database,$link);
    mysql_query("SET names UTF8");
    ?>
    Личный кабинет
    McShop v2 - полноценный ЛК с покупкой блоков, статусов, системой скинов. Туториал.
    Webplace - новый личный кабинет от FoBoTeam
    Webmcr - ЛК+RCON-Консоль | WebMCR MOD
    Полезности для сайта
    Если появились кроказябры
    [​IMG]
     
    Последнее редактирование: 30 мар 2014
  2. Raptor2108

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

    Баллы:
    173
    Лучше напиши классы в которых править joinserver и скины, чтобы из за такой мелочи не декомпилить клиент.
     
    volkovsema нравится это.
  3. Автор темы
    karolize

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

    Баллы:
    153
    Ммм...точно, сейчас всё добавлю)
     
    syllik, volkovsema, Gaz777 и 2 другим нравится это.
  4. ufatos

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

    Баллы:
    143
    Skype:
    ufa_to
    нафига писать ещё одну гору текста?
    А те туторы, которые были очень даже понятные!
     
    Пароль123456789 нравится это.
  5. Автор темы
    karolize

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

    Баллы:
    153
    Я просил Бухара обновить ссылки в туториале, но он молчит. Из-за этого у всех старые версии исходников и файлов авторизации, да плюс ещё кодировка слетает.
     
    tuz, Alastar и BJIaD нравится это.
  6. ufatos

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

    Баллы:
    143
    Skype:
    ufa_to
    Бухар давно свалил с форума.
     
    Likeobot, Сникерсни, Evil_in_Hall и ещё 1-му нравится это.
  7. Raptor2108

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

    Баллы:
    173
    Скины и плащи:
    rv.class
    vq.class
    yw.class

    Путь до joinserver.php:
    adl.class
     
  8. ufatos

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

    Баллы:
    143
    Skype:
    ufa_to
    Путь до joinserver.php:
    adl.class

    а вообще это нужно добавить в первый пост
     
  9. Raptor2108

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

    Баллы:
    173
    прошу прощения, исправил.
     
  10. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    п»їп»ї
    xrusha это твой скин
    [​IMG]
    Файл .png размером 64x32:почему вот так пишет? а на прямую сылку захожу .. нормально пишет. .... когда скин загружаю ... пишет вы сначало авторизуйтесь
     
  11. Автор темы
    karolize

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

    Баллы:
    153
    1) Перекодируй файл index.php в ANCII. Крокозябры пропадут
    2) Какой движок у сайта?
    П.С. топик завтра отредактирую и до ума доведу, сейчас не могу.
     
    tuz и BJIaD нравится это.
  12. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    dle 9.5
     
  13. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    Как перекодировать?
     
  14. ufatos

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

    Баллы:
    143
    Skype:
    ufa_to
    Через notepad++, например.
     
    Оригинало_о нравится это.
  15. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    спасибо ..
    блин захожу на сервер и пишет user not premium
     
  16. ufatos

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

    Баллы:
    143
    Skype:
    ufa_to
    Значит что-то не так сделал. :cap:
    Проверь все скрипты
     
  17. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    да вроде все правильно делал все по инструкции ... (((
     
    Goldenix и slavik123123123 нравится это.
  18. ufatos

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

    Баллы:
    143
    Skype:
    ufa_to
    скрипты для проверки использовал?
     
    ВремяПриключений нравится это.
  19. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    да да ... все ок там
     
  20. qwqqwq

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

    Баллы:
    68
    Имя в Minecraft:
    xrusha
    4) Это последний этап нашого туториала. Откройте ваш Craftbukkit с помощью архиватора. Зайдите в папку net/minecraft/server. Вытащите файл ThreadLoginVerifier.class. Откройте его, и изменитеhttp://session.minecraft.net/game/checkserver.jsp?user= на вашу сылку к файлу checkserver.php |Внимание! В конец ссылки обязательно припишите ?user= Засовываем обратно. В настройках сервера ставим online mod=true и пробуем зайти.
    у меня вот что там пишется NO ((
     
    slavik123123123 нравится это.

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