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

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

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

Для версии 1.3.1
asu.class - Заменяем http://session.minecraft.net/game/joinserver.jsp?user= на путь к файлу joinserver.php | Внимание! В конец ссылки обязательно допишите ?user=
aup.class - Заменяем http://s3.amazonaws.com/MinecraftSkins/ на путь к папке со скинами. | Внимание! В конце ссылки обязательно должен быть слэш "/"
auq.class - Заменяем http://s3.amazonaws.com/MinecraftSkins/ на путь к папке со скинами. | Внимание! В конце ссылки обязательно должен быть слэш "/"
Для версии 1.2.5
adl.class - Заменяем http://session.minecraft.net/game/joinserver.jsp?user= на путь к файлу joinserver.php | Внимание! В конец ссылки обязательно допишите ?user=
rv.class - Заменяем http://s3.amazonaws.com/MinecraftSkins/ на путь к папке со скинами. | Внимание! В конце ссылки обязательно должен быть слэш "/"
vq.class - Заменяем http://s3.amazonaws.com/MinecraftSkins/ на путь к папке со скинами. | Внимание! В конце ссылки обязательно должен быть слэш "/"
yw.class - Заменяем http://s3.amazonaws.com/MinecraftCloaks/ на путь к папке с плащами. | Внимание! В конце ссылки обязательно должен быть слэш "/"

2) Теперь мы будем редактировать исходники лаунчера. Качаем их (лично я рекомендую брать auth_system_launcher_zip_src.zip). Скачали, распаковали. Скачиваем и устанавливаем NetBeans. Установили. Открываем NetBeans, нажимаем Файл->Создать проект... В появившемся окне, в левом столбике выбираем "Java", а в правом "Приложение Java". Жмём "Далее". Тут можно выбрать название проекта, и его расположение. Теперь, важно, убираем галочку с "Создать главный класс" и жмём "Готово". Мы создали проект. Теперь нажимаем на него правой кнопкой мыши и выбираем "Свойства". В "Папки с пакетами исходных файлов:" удаляем папку "src", нажимаем "Добавить папку" и выбираем папку с исходниками лаунчера. Выбрали. В "Формат исходного/двоичного кода" я советую выбрать JDK 6. Жмём "Ок". Теперь щёлкаем по нашему проекту два раза. У нас выплыло меню. Два раза щёлкаем по первой строчке, затем по последней (net.minecraft). Теперь приступим к редактированию исходников. Два раза щёлкаем GameUpdater.java. Ищем на 171 строчке ссылку на скачку обновлений. Меняем на свою. Открываем LauncherFrame.java. На 101 строчке видим ссылку. Меняем её на ссылку к файлу auth.php. Открываем LoginForm.java. На 300 строке меняем ссылку регистрации на свою (к файлу reg.php). На 355 строке меняем ссылку на скачку вашего лаунчера. На 189 строке меняем ссылку на ваши новости. Теперь, если вы хотите изменить директорию игры, то откройте Util.java. На 29 строке измените "minecraft" на ваше название. Откроем minecraft.jar. Идём в net/cmineraft/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");
?>
Система скинов
Вообщем вот что должно получиться.
Скачиваем, распаковываем архив, заливаем файлы на свой сайт и настраиваем bd_con.php под себя. Далее импортируем файлы из папки MySQLImport в вашу БД. Чтобы назначить себя администратором, вам требуется зарегистрироваться, зайти в таблицу с пользователями и изменить в колонке lvl цифру 1 на 15.
П.С. Здесь встроена функция новостей для лаунчера. Сам скрипт вывода находится в папке mcraftServer под названием news.php.
Автор NC22
Внутриигровой магазин
Ссылка. Инструкция внутри.
Автор mops1k
Если появились кроказябры
NUe9YGjeZg4.jpg
Не легче было создать тотуриал?
 
Проблема в следующем - при проверке index1 выдает ответом
"
Запрос к базе завершился ошибкой
".


$db_host = 'mysql.hostinger.ru'; // Ip-адрес базы данных
$db_port = 'u661847234_forum'; // Порт базы данных - название базы данных и имя юзера одинаковое
$db_user = 'u661847234_forum'; // Пользователь базы данных
$db_pass = '**********'; // Пароль базы данных
хостинг - hostinger (знаю лажа но работать то вроде должно!(?)) движок xenforo. И при попытке коннекта к серверу выдает "Невозможно подключится к серверу"

mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.") не могу расшифровать))
 
Проблема в следующем - при проверке index1 выдает ответом
"
Запрос к базе завершился ошибкой
".


$db_host = 'mysql.hostinger.ru'; // Ip-адрес базы данных
$db_port = 'u661847234_forum'; // Порт базы данных - название базы данных и имя юзера одинаковое
$db_user = 'u661847234_forum'; // Пользователь базы данных
$db_pass = '**********'; // Пароль базы данных
хостинг - hostinger (знаю лажа но работать то вроде должно!(?)) движок xenforo. И при попытке коннекта к серверу выдает "Невозможно подключится к серверу"

mysql_query("UPDATE $db_table SET $db_columnSesId='$sessid' WHERE $db_columnUser = '$login'") or die ("Запрос к базе завершился ошибкой.") не могу расшифровать))

А таблицы настраивал?
 
да config.php я сначала настроил в соответствии с примером автора в туториале. Потом после того как это не сработало, скинул просто копи-пастом пример в свой конфиг и собственно настроил
<?php
if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение данного файла!');
$crypt = 'hash_xenforo';
$db_host= 'mysql.hostinger.ru'; // Ip-адрес базы данных
$db_port= 'u661847234_forum'; // Порт базы данных
$db_user= 'u661847234_forum'; // Пользователь базы данных
$db_pass= '************'; // Пароль базы данных
$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");
?>
Естественно использовал пример для xenforo.
 
да config.php я сначала настроил в соответствии с примером автора в туториале. Потом после того как это не сработало, скинул просто копи-пастом пример в свой конфиг и собственно настроил

Естественно использовал пример для xenforo.
Эм
$db_database= 'DATABASE';
У тебя так называется ?
 
А нужно имя своей базы данных там указать? указал вместо DATABASE в строчке
  1. $db_database= 'DATABASE'; ​
имя своей базы данных теперь при проверке index1 выводит Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in/home/u661847234/public_html/update/auth.phpon line26
Bad login
 
Простите как можно не понять это? Если вы даже это не умеете настраивать, то зачем лезть в эти дела?
нет, я понимаю , я 1000 раз перепроверял все параметры моей базы данных но почему то не получается
 
Такая проблемка::(
Запускаю лаунчер. Ввожу ник и пароль. Заходит, предлагает скачать обновления. Нажимаю "ДА", скачивает, а потом вылезает ошибка:
8358d1d19cc448ff63b3832d9a88da48.png


2efca3ecd86b4c8de8b707c774e0c0d6.png


617e312c99bf329b3fc5670ee40c2965.png
Помогите плиз)
 
Такая проблемка::(
Запускаю лаунчер. Ввожу ник и пароль. Заходит, предлагает скачать обновления. Нажимаю "ДА", скачивает, а потом вылезает ошибка:
8358d1d19cc448ff63b3832d9a88da48.png


2efca3ecd86b4c8de8b707c774e0c0d6.png


617e312c99bf329b3fc5670ee40c2965.png
Помогите плиз)
Сколько у тебя client.zip весит? о_О
 
помогите пожалуйста, когда я пытаюсь зарегистрироваться на сайте у меня выдаёт вот такую ошибку
Код:
Регистрация
 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u713346384/public_html/registration.php on line 95
Запрос к базе завершился ощибкой.
 
Назад
Верх