Thor Patcher
официальный сайт: http://thor.aocea.com/
скачать : 1,2,3
топик на eathena.ws : link
Обзор:
данный патчер отличается тем, что не использует открытые конфиги и чтобы сделать патч и даже сам патчер надо воспользоваться некоторыми предоставленными тулзами (есть в архиве с патчером). Щас и сам попробую сделать такой патчер… распаковал… скажем в папку ‘patcher’. Принимаюсь за процесс:
-> заходим в папку ./patcher/tools
-> как я понял, нам надо создать запаковать в ехе – локальный конфиг + скин. Локальный конфиг – config.ini. Папка с скином – images.
-> рассмотрим config.ini :
// Thor Patcher Internal Config File
// Note: любое значение оставленное пустым примет значение по умолчанию
// True = 1
// False = 0
// Заметка: можно писать 1 или True (that's why I put "=")
[URL]
//base_url - все, кроме patch_file'a будет считываться отсюда
//Путь должен оканчиваться знаком /
//
// Пример:
// http://domain.com/patch/
// NOT
// http://domain.com/patch
//
base_url=http://amstaff.su/thor-patcher/
//notice_file - [Relative Address]
//notice_file = notice.html => base_url+notice_file = http://domain.com/patch/notice.html
notice_file=notice.html
//core_file - [Relative Address]
//этот внутренние конфиг файл, который хранит в себе то, что требуется,
//но хранится он на веб-сервере
core_file=main.ini
//TimeOut - timeout коннект в секундах
//0 по умолчанию, не меняйте, если вы не знаете что это
TimeOut=0
//=============================
// Файлы ниже хранятся на локальном диске (в папке с патчером)
//=============================
[Local]
//status_file - [Relative Address]
//файл для хранения разной информации, например номер последнего скачанного патча
status_file=server.dat
//grf_file - [Relative Address]
//я думаю, что здесь все понятно
grf_file=server.grf
//client_file - [Relative Address]
//exe для запуска клиента
client_file=game.exe
//параметры для запуска клиента - [Self Explained]
client_parameter=-1sak1
//---------------------------------------------------------------------------------
//
// Ниже продвинутые настройки, если вы не хотите настраивать дальше, можете просто
// выйти ![]()
//
//---------------------------------------------------------------------------------
//=============================
// Custom Skin controls
//=============================
[Skin]
//windows_autosize - 1 = размер окна будет автоматически подстраиваться под контент
windows_autosize=true
//windows_mode - Как окно будет представлено?
// None - с рамкой
// Single - нельзя изменить размеры окна
// Sizeable - размеры можно изменять ![]()
window_style=none
// Ширина и высота окна
// windows_autosize устанвите в 0, если хотите, чтобы работало
// Min: 1 Max: 10000
window_width=
window_height=
// если включить, то пользователь сможет передвигать окно, нажав на фоновую картинку
// рекомендовано для окон без рамки
window_handle_move=true
// Картинка для фона (Не считывает из папки с патчером, а записывается в exe)
// Поддерживаемые форматы : jpg bmp
// Заметка : патчер определяет формат картинки по формату файла.
background_file=images/bg.bmp
//Новая progress bar, используется картинка
//ВНИМАНИЕ: высокая нагрузка на CPU
NewProgressBar=False
//Картинка для progress bar (только, если NewProgressBar включени; BMP, JPG, PNG поддерживаются)
ProgressBar_back=
ProgressBar_front=
// размер progress bar? (только, если NewProgressBar отключена)
progress_bar_width=
progress_bar_height=
// Расположение progress bar
progress_bar_left=
progress_bar_top=
//Определите цвет progress bar
//используйте шестнадцетиричные цифры RGB [eg. #4C7D7E]
//Цвет для фона progress_bar
progress_bar_backcolor=
progress_bar_backcolor_end=
//цвет для "фасада" progress bar.
progress_bar_barcolor=
progress_bar_barcolor_end=
// Ширина статус сообщения (показывает текущий статус)
status_width=
// тип прижатия текста (align)
// Left , Center , Right
status_alignment=center
// Position
status_left=
status_top=
//Цвет текста, в шестнедцетиричной системе RGB [eg. #123456]
status_color=
// настройки notice (News box? Mini web browser? you name it)
notice_width=
notice_height=
notice_left=
notice_top=
// Для кнопки `start`
start_normal=images/start1.png
start_hover=images/start2.png
start_down=images/start3.png
start_left=
start_top=
// для кнопки `exit`
exit_normal=images/Exit1.png
exit_hover=images/Exit2.png
exit_down=images/Exit3.png
exit_left=
exit_top=
// для кнопки `cancel`
cancel_normal=images/Exit1.png
cancel_hover=images/Exit2.png
cancel_down=images/Exit3.png
cancel_left=
cancel_top=
// Как много своих кнопок вы хотите создать?
// Можно создать 0-255 своих кнопок
buttons=0
// - Свои кнопки -
// создание кнопок очень легкое. Формат: buttonN_<тип>,где N-номер кнопки,
// а `тип` рассмотрим ниже. Не забудьте, что все картинки будут упакованы в патчер
// _normal - адрес картинки кнопки в обычном состоянии
//button1_normal=
// _hover - адрес картинки, когда пользователь навел на кнопку
//button1_hover=
// _down - адрес картинки, когда пользователь нажмет на кнопку
//button1_down=
// _left/_top - позиция кнопки
//button1_left=
//button1_top=
// _mode - мод для кнопки (или что будет делать, когда нажмете)
// 0 = открыть ссылку
// 1 = запустить программу
// 2 = сообщение
// 3 = скрыть окно
// 4 = закрыть патчер
// 5 = клон кнопки `start`
//button1_mode=
// _action - зависит от того, какой `_mod` вы выбрали
// ex. _mode = 0 , _action=http://google.com
// откроется ссылка
//button1_action=
// Параметры для кнопки - Используется только в _mod=5
//button1_parameter=
[BGM]
//фоновая музыка, оставьте пустым, если хотите выключить (mp3/mid/wav)
bgm=
//зациклить воспроизведение музыки (повтор)
BGMLoop=False
//звук фоновой музыкы (1-100)
// рекомендовано: 40-60
// Default: 50
Volume=50
//Note: это отключить опцию bgm!
// при выборе данной опции музыка будет выбрана рандомно
//eg. BGM/
BGMDir=
[Misc]
//включите эту опцию, если хотите, чтобы можно было запустить игру, если была ошибка в подключении
Continue On Connection Fail=False
//Как будет названо окно патчера?
Title=Thor Patcher
//Включите эту опцию, если хотите сделать такой эффект при перемещении окна как и в RO
// (полу-прозрачный эффект)
FadeOnDrag=false
-> настроили как захотели (я мало менял конфиги, потом успею с ними поиграться
) И для примера использую свою adata.grf от старого сервера.
-> дальше запаковываем с помощью программы-утилиты Config_Packer.exe. [ Заходим в программу -> Browse-> выбираем файл ./patcher/Patcher/Thor.exe -> нажимаем на кнопку Pack! ]. Вот и все, ваш патчер готов, пора приняться за другие настройки… давайте продолжим с тем, что должно быть на веб-сервере…
-> давайте рассмотрим содержимое папки ./patcher/Web (по названию сразу все понятно). Все что вам будет нужно: main.ini (файл настроек, указанный в локальном конфиге), notice.html (файл, который будет показываться в браузере патчера), plist.txt (список с патчами, указанный в main.ini), папка, в которой содержатся патчи (указывается в main.ini и только если используете HTTP протокол.)
-> перед тем, как все закачать на веб-сервер, настроим main.ini:
//Thor Patcher remote config file
[Main]
//разрешить патчиться пользователям?
allow=true
//Разрешить ли патчеру запусать игру, не смотря ни на что?
Force_Start=false
/Если нет, то какое сообщение выводить?
policy_msg=Сервер отдыхает, обождите
// file_url -все патчи будут лежать по этой сслыке
// This config entry will override the one in embed config.
// o HTTP:
// http://domain.com/dir/
// o FTP:
// ftp://domain.com/dir/
// o с [Password] [Port]
// ftp://username:password@domain.com:port/dir
// для HTTP
file_url=http://amstaff.su/thor-patcher/patches/
// для FTP
// file_url=ftp://amstaff.su/pub/mypatches/
[Patch]
//используйте утилиту CheckSum, чтобы сделать хэш для client & patcher
// используется для того, чтобы не подменили ехе-шник и держать его обновленным
// (хотите отключить? оставьте поля пустыми)
ClientSum=
PatcherSum=
// пока сам не разобрался в этом, извините )
//This is compressed file for patcher & client update
// To make these work, ClientSum and/or PatcherSum can't be empty
// Note: these files should put same place as patch file (file_url in internal config)
//Relative address, not FULL URL!
ClientPath=
PatcherPath=
// файл со списком патчей
PatchList=plist.txt
[Stars]
// укажите сюда количество ваших клиентов-клонов (скорее всего, когда делали кнопкис модами запуска программ)
clients=0
// _sum - checksum, используйте утилиту CheckSum .
//client1_sum=
// _Name - имя исполняемого файла
//client1_Name=
// _Path - путь к файлу [Compressed]
//client1_Path=
[Misc]
// Установите лимит фрагментации, как только он будет достигнут, патер попросит
// пользователя сделать дефрагментацию
FragmentLimit=50
-> думаю, что содержимое файла plist.txt вам понятно, если что, там на первом месте номер патча, на втором имя файла;
-> закачиваю все содержимое по адресу `amstaff.su/thor-patcher`. Создаю там папку patches. И уже готовлюсь кидать туда патчи…
-> перед этим займемся главной .grf. Как сказали она должна быть версии 0×200. Давайте же её такой и сделаем. Качаем программу grf tool. [ запускаем программу -> Open -> выбираем нужную .grf (я выбрал adata.grf) -> в `GRF Version` выбираем 0x200 -> жмем Repack ]. Вот и все, наша .grf готова.
-> начинаем делать свой первый патч
Для этого запускаем ./patcher/Tools/ThorMaker.exe и дальше смотрим что же у нас есть…
-> после этого закачиваем полученный .thor файл на сервер, который вы указали в конфигах
-> после этого запускаем ваш патчер и все должно работать
вот вроде и все
если были какие-либо неточности – прошу укзать мне на них в комментах.


Сцуко ,скриншоты перезалей где .thor
Dd
уже перезалил )) при смене домена все поменялось )