Подключение бота к серверу: различия между версиями

Материал из Руководство по OpenKore
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
==Получение информации о сервере==
==Получение информации о сервере==
Вместе с OpenKore идут настройки только для официальных серверов, но не для приватных. Из-за того, что приватных серверов великое множество, невозможно поддерживать настройки для них в актуальном состоянии. Таким образом, игрокам приватных серверов следует выяснить самостоятельно настройки их серверов, пользуясь при этом данным гайдом.
Вместе с OpenKore идут настройки только для официальных серверов, но не для приватных. Из-за того, что приватных серверов великое множество, невозможно поддерживать настройки для них в актуальном состоянии. Таким образом, игрокам приватных серверов следует выяснить самостоятельно настройки их серверов, пользуясь при этом данным руководством.


Прежде чем приступить к чтению гайда, прочитайте список [[unsupported servers|неподдерживаемых серверов]]. На вашем сервере может быть защита от ботов, что может препятствовать OpenKore и такой сервер не будет поддерживаться OpenKore.
Прежде чем приступить к чтению руководства, просмотрите список [[unsupported servers|неподдерживаемых серверов]]. На вашем сервере может быть защита от ботов, что может препятствовать OpenKore и такой сервер не будет поддерживаться OpenKore.


OpenKore нуждается в следующей информации о сервере Ragnarok Online, прежде чем сможет залогиниться:
OpenKore нуждается в следующей информации о сервере Ragnarok Online, прежде чем сможет залогиниться:


* Имя сервера.
* Название сервера.
* Адрес сервера в интернете (IP-адрес или доменное имя) и номер порта.
* Адрес сервера в интернете ([[wikipedia:IP address|IP-адрес]] или [[wikipedia:hostname|доменное имя]]) и [[wikipedia:computer port (software)|номер порта]].
* Номер '''master version''' сервера.
* Параметры сервера: '''master_version''', '''version''', '''charBlockSize''' и '''serverEncoding''' - кодировку текста.
* Номер '''version''' сервера.
* СерверТип [[serverType]] сервера.  
* Кодировка текста.
* '''addTableFolders''' для поиска табличных файлов с настройками OpenKore.
* СерверТип '''serverType''' сервера.  


Существует два подробных руководства по сбору информации о сервере с помощью [http://wpepro.net WPE] или [http://www.wireshark.org Wireshark]. Если описанные тут WPE и Wireshark не работают, то подобным образом можно воспользоваться и другими утилитами.
Существует два подробных руководства по сбору информации о сервере с помощью [http://wpepro.net WPE] или [http://www.wireshark.org Wireshark]. Если описанные тут WPE и Wireshark не работают, то подобным образом можно воспользоваться и другими утилитами.
Строка 133: Строка 132:
OpenKore читает настройки сервера из файла '''tables\servers.txt'''. Если вашего сервера нет в списке, тогда добавьте в этот файл новую запись. Если же ваш сервер уже есть в списке, тогда измените существующую запись. После изменения файла '''servers.txt''' следует перезапустить OpenKore.
OpenKore читает настройки сервера из файла '''tables\servers.txt'''. Если вашего сервера нет в списке, тогда добавьте в этот файл новую запись. Если же ваш сервер уже есть в списке, тогда измените существующую запись. После изменения файла '''servers.txt''' следует перезапустить OpenKore.


=== Правописание ===
=== Синтаксис ===
Записи в файле '''servers.txt''' имеют следующий формат:
Записи в файле [[servers.txt]] имеют следующий формат:
<pre>
<pre>
[<server name>]
[<server name>]
ip <number/host>
ip <ip-адрес или dns-имя>
port <number>
port <номер>
version <number>
version <число>
master_version <number>  
master_version <число>  
serverType <serverType name>
serverType <название сервертипа>
serverEncoding <enconding>
charBlockSize <число>
charBlockSize <number>
addTablesFolder [<пути до папок>]
recvpackets [<имя файла>]
serverEncoding <кодировка>
 


#Следующие настройки сервера необязательны
#Следующие настройки сервера необязательны
addTableFolders <folder path>
chatLangCode [<булев флаг>]
chatLangCode <boolean flag>
field_<location> [<имя файла>]
field_<location> <filename>
gameGuard [<флаг>]
gameGuard <flag>
private [<булев флаг>]
private <boolean flag>  
paddedPackets [<булев флаг>]
paddedPackets <boolean flag>
paddedPackets_attackID [<заголовки пакетов>]
paddedPackets_attackID <packet switches>
paddedPackets_skillUseID [<заголовки пакетов>]
paddedPackets_skillUseID <packet switches>
secureLogin [<булев флаг>]
secureLogin <boolean flag>
secureLogin_type [<тип>]
secureLogin_type <type>
secureLogin_requestCode [<строка 16-ричных чисел>]
secureLogin_requestCode <hex string>
secureLogin_account [<булев флаг>]
secureLogin_account <boolean flag>
storageEncryptKey [<ключ шифрования>]
storageEncryptKey <encrypt key>
masterLogin_packet [<заголовок пакета>]
recvpackets <file name>
</pre>
</pre>
 
=== Обязательные ===
; [<server name>]
; [<server name>]
: Имя вашего сервера, '''должно быть''' между квадратных скобок '''[''' и ''']'''.
: Название игрового сервера, '''должно быть''' между квадратных скобок '''[''' и ''']'''.


; ip <number/host>
; ip <ip-адрес или dns-имя>
: IP-адрес или DNS-имя логин-сервера.
: IP-адрес или DNS-имя логин-сервера.


; port <number>
; port <номер>
: Номер порта логин-сервера.
: Номер порта логин-сервера. Обычно - ''6900''.


; version <number>
; version <number>
Строка 177: Строка 178:
: Десятичное число, обозначающее мастер-версию сервера.
: Десятичное число, обозначающее мастер-версию сервера.


; serverType <serverType name>
; [[serverType]] <название сервертипа>
: Тип сервера, так называемый СерверТип. Для каждого официального сервера есть свой собственный сервер-тип. Для приватных же серверов используются '''kRO сервертипы''', соответсвующие экзешным файлам. Ранее использовались числовые сервертипы, которые на данный момент устарели. Ну, разве что, остался от них '''serverType 0''', на котором основаны сервертипы для официальных серверов. Используйте цифровые сервертипы только в том случае, если вы действительно уверены в такой необходимости, например для старых версий серверов.
: Так называемый СерверТип. Каждый официальный сервер имеет свой сервертип. Приватные сервера используют '''kRO-шные сервертипы''' в соответствии с датой компиляции запускаемых файлов клиента.
: Пример kRO-шного сервертипа - RagexeRE_2009_12_15a.
 
: Пример буквенного сервертипа - rRO, это сервертип официального российского сервера.
; charBlockSize [<число>]
: Список новых сервертипов [[serverType]].
: Длина в байтах блока информации о персонаже. Используются числа 106 (стандарт), 108, 112, 116, 128. Эта настройка сервера прописывается если у чара отображается неправильно имя, джоб и левел во время выбора персонажа в аккаунте (см. [Frequently_Asked_Questions#Корявый список персонажей на аккаунте|FAQ]]).
 
; addTablesFolder <пути до папок>
: Список путей до папок (относительно папки tables), в которых нужно искать табличные файлы.
: Используется только если не был указан параметр командной строки [http://openkore.com/index.php/Command_Line_Arguments --tables].
: Для использования англоязычных табличных файлов можно прописать
addTableFolders translated/kRO_english
: или же
addTableFolders iRO


; serverEncoding <enconding>
; recvpackets [<имя файла>]
: Тип кодировки текста. Кодировка текста не может быть автоматически определена, поэтому её нужно прописывать руками. Вот список возможных кодировок:
: Имя файла с ресивпакетами конкретно для вашего сервера. Стандартное значение - [[recvpackets.txt]]. Поиск файла ведётся по списку табличных папок - ''addTablesFolder''. См. также руководство [[Packet_Length_Extractor|Извлечение ресивпакетов]]. Хотя эта настройка не обзательна, но очень желательна.


; serverEncoding <кодировка текста>
: Кодировка текста. Кодировка текста не определяется автоматически, поэтому её нужно прописывать руками. Вот список возможных кодировок:
{| class="wikitable" border="1" cellspacing="0"
{| class="wikitable" border="1" cellspacing="0"
|-style=background-color:#F9F9F9;
|-style=background-color:#F9F9F9;
Строка 212: Строка 223:
|  Тайский язык.
|  Тайский язык.
|}
|}
 
=== Необязательные ===
; charBlockSize <number>
<!--  
: Длина в байтах блока информации о персонаже. Используются числа 106 (значение по умолчанию), 108, 112, 116, 128. Эта настройка сервера прописывается если у чара отображается неправильно имя, джоб и левел во время выбора персонажа в аккаунте.
; paddedPackets <boolean flag>
 
; addTablesFolder <path>
: Путь до папки, в которой лежат табличные файлы.
 
; chatLangCode <boolean flag>
: Если настройка сервера chatLangCode '''1''', то из сообщений удаляется код языка.
 
<!-- ; gameGuard <value>
: ??
-->
; private <boolean flag>
: Пропишите настройку сервера private '''1''', если OpenKore пытается соединиться с map-сервером по неправильному IP-адресу. Обычно такое случается на пиратских серверах.
<!-- ; paddedPackets <boolean flag>
: ??
 
; paddedPackets_attackID <packet switches>
; paddedPackets_attackID <packet switches>
: ??
; paddedPackets_skillUseID <packet switches>
; paddedPackets_skillUseID <packet switches>
: ??
; secureLogin <boolean flag>
; secureLogin <boolean flag>
: ??
; secureLogin_type <type>
; secureLogin_type <type>
: ??
; secureLogin_code <hex string>
; secureLogin_code <hex string>
: ??
; secureLogin_account <boolean flag>
; secureLogin_account <boolean flag>
: ??
  -->
  -->
; captcha [<булев флаг>]
: Заставляет OpenKore использовать "капчу".
; chatLangCode [<булев флаг>]
: Если chatLangCode '''1''', то из сообщений удаляется код языка.
; gameGuard [<флаг>]
: Исользуется в случае использования на сервере GameGuard или HackShield. Смотри также [[Poseidon]].


; recvpackets <file name.txt>
; private [<булев флаг>]
: Имя файла с ресивпакетами конкретно для вашего сервера. Если этот параметр не указан, то будет использован файл recvpackets.txt.
: Пропишите настройку сервера private '''1''', если OpenKore пытается соединиться с map-сервером по неправильному IP-адресу. Обычно такое случается на пиратских серверах.


; field_<location> <filename>
; masterLogin_packet [<заголовок пакета>]
: Для локации '''<location>''' OpenKore будет использовать файл '''<filename>.fld'''. Этот параметр полезен, если на вашем сервере используются устаревшие или модифицированные локации городов и обычных локаций. Так, например, пока на ру-офе не ввели 12-й эпизод, в настройках была строка
: Переопределяет заголовок логин-пакета (но не трогает его структуру). Если заголовок логин-пакета отличается от 0064 (стандарт), то для режима [[XKore]] '''2''' следует обязательно указать правильный заголовок логин-пакета.
field_morocc morocc_old
 
: Смотри также гайд по созданию файлов '''*.fld''' [[FLD Creation Guide]].
; field_<локация> <имя файла>
: Для <локации> OpenKore будет использовать файл '''<имя файла>.fld'''. Этот параметр полезен, если на вашем сервере используются устаревшие или модифицированные локации. Пример: использовать morocc_old.fld вместо morocc.fld: <pre>field_morocc morocc_old</pre>
: Смотри также гайд по созданию '''*.fld'''-файлов: [[FLD Creation Guide]].


=== Пример ===
=== Пример ===
Строка 263: Строка 258:
  master_version 16
  master_version 16
  version 20
  version 20
  serverType 8_4
  serverType kRO_RagexeRE_2010_01_26a
  charBlockSize 108
  charBlockSize 108
addTableFolders iRO
recvpackets mush-recvpackets.txt
  serverEncoding Western
  serverEncoding Western
recvpackets mush-recvpackets.txt


'''Примечание.''' Смотри также [http://rofan.ru/viewtopic.php?f=7&t=3934 (!) recvpackets.txt /для каждого сервака свой? (почти FAQ)].
'''Примечание.''' Смотри также [http://rofan.ru/viewtopic.php?f=7&t=3934 (!) recvpackets.txt /для каждого сервака свой? (почти FAQ)].

Версия от 13:40, 12 июня 2011

Получение информации о сервере

Вместе с OpenKore идут настройки только для официальных серверов, но не для приватных. Из-за того, что приватных серверов великое множество, невозможно поддерживать настройки для них в актуальном состоянии. Таким образом, игрокам приватных серверов следует выяснить самостоятельно настройки их серверов, пользуясь при этом данным руководством.

Прежде чем приступить к чтению руководства, просмотрите список неподдерживаемых серверов. На вашем сервере может быть защита от ботов, что может препятствовать OpenKore и такой сервер не будет поддерживаться OpenKore.

OpenKore нуждается в следующей информации о сервере Ragnarok Online, прежде чем сможет залогиниться:

  • Название сервера.
  • Адрес сервера в интернете (IP-адрес или доменное имя) и номер порта.
  • Параметры сервера: master_version, version, charBlockSize и serverEncoding - кодировку текста.
  • СерверТип serverType сервера.
  • addTableFolders для поиска табличных файлов с настройками OpenKore.

Существует два подробных руководства по сбору информации о сервере с помощью WPE или Wireshark. Если описанные тут WPE и Wireshark не работают, то подобным образом можно воспользоваться и другими утилитами.


WPE (Winsock Packet Editor)

1. Скачайте WPE и распакуйте.

  • Перед скачиванием, отключите ваш антивирус, так как он может принять WPE за вирус и удалить его. Вы скачиваете WPE под свою ответственность, никто иной не будет виноват, если ваш компьютер сломается.
  • Вам может потребоваться программа для распаковки архива с WPE. Наиболее распространённые ахиваторы WinRAR и 7zip.

2. Запустите клиент Ragnarok Online но не вводите пока логин и пароль! Оставьте сейчас Ragnarok и запустите WPE.

3. В окне WPE щёлкните по кнопке Target Program.


4. Откроется новое окно, найдите в нём запущенный клиент Ragnarok Online и дважды щёлкните по нему.

Примечание: Некоторые серверы скрывают свой настоящий выполняемый файл, переименовывая его (например из xxxRO.exe в xxxx.dll или xxxxx.bin), так что не переживайте, если запущенный файл не является .exe-файлом.


5. В окне WPE щёлкните по кнопке Play button.


6. Перейдите назад в окно клиента Ragnarok Online и попробуйте залогиниться.

Примечание: Не обязательно вводить правильные логин и пароль.


7. Вернитесь в окно WPE и щёлкните по кнопке Stop button.


8. Откроется новое окно с перехваченными данными. Один из отправленных на сервер пакетов будет логин-пакетом, в котором находятся version, master_version, IP-адрес и порт сервера. Запишите значения на бумажку, они потом пригодятся. Логин-пакеты отличаются от сервера к серверу. Логин-пакеты начинаются с 64 00 или 02 B0. Логин-пакету могут предшествовать другие, например пакет 02 04 длиной 18 байт.

На следующем рисунке показан перехваченный логин-пакет, содержащий version и master_version.
Условные обозначения:
  1. - version. Беззнаковое целочисленное значение длиной 4 байта, записанное в шестнадцатиричной системе счисления. Младший байт слева (т.н. little-endian).
  2. - IP-адрес
  3. - порт
  4. - master_version. Беззнаковое целочисленное значение длиной 1 байт, записанное в шестнадцатиричной системе счисления.


9. Чтобы перевести значения version и master_version в понятный для OpenKore десятеричный формат, смотри раздел - перевод чисел в десятеричную систему.

Wireshark

1. Скачайте и установите Wireshark.

2. Запустите клиент Ragnarok Online но не вводите пока логин и пароль! Оставьте сейчас Ragnarok и запустите Wireshark.

3. В окне Wireshark перейдите по меню Capture > Options или нажмите Ctrl + K.


4. В открывшемся окне в правом верхнем поле выберите сетевой интерфейс, с которого вы хотите перехватывать пакеты. Если вы не уверены, какой сетевой интерфейс использовать, выберите тот, у которого прописан ваш IP-адрес в интернете, или же хотя бы не стоит unknown. Можно также перепробовать их все и выбрать тот, с которого можно перехватить пакеты. Все остальные параметры найстройте так, как показано на рисунке.


5. После настройки всех параметров, щёлкните по кнопке Start и перейдите назад в окно клиента Ragnarok Online. Попробуйте залогиниться. Примечание: Не обязательно вводить правильные логин и пароль.


6. После ввода логина и пароля вернитесь в окно WPE и щёлкните по кнопке Stop.


7. В главном окне Wireshark можно увидеть записи о перехваченных TCP-сегментах. Отсейте ненужные, используя в фильтре пакетов введённый вами логин.

Введите в поле Filter одно из двух:
 eth contains "xxxxxx" или eth contains xxxxxx
Вместо xxxxxx подставьте логин, который вы использовали при входе в Ragnarok, и нажмите Enter. В данном пример логин был Mushroom.


8. Теперь останется только одна запись о перехваченном пакете, щёлкните по записи и получите кое-какую информацию о пакете. Здесь вы найдёте IP-адрес и порт сервера.

Запишите IP-адрес и порт сервера на бумажку, они понадобятся позже.


9. Щёлкните по этой же записи правой кнопкой мыши, в появившемся меню выберите Follow TCP Stream.


10. Откроется новое окно, внизу слева выберите Hex Dump.


11. Теперь у нас есть логин-пакет. Запишите version и master version на бумажку.


12. Чтобы перевести значения version и master version в понятный для OpenKore десятеричный формат, смотри раздел - перевод чисел в десятеричную систему.


Перевод чисел из 16-ричной системы в 10-тичную

Выдернутые из перехваченных пакетов version и master version записаны сейчас в шестнадцетиричном формате (основание системы счисления равно 16), а OpenKore ожидает их увидеть в десятичном формате (основание равно 10). Поэтому их надо перевести из одной системы счисления в другую.

Перевести числа в десятичную систему счисления можно при помощи обычного калькулятора Windows.

1. Откройте калькулятор Windows Start > Accessories > Calculator.

2. Откройте меню View и выберите пункт Scientific.

3. Выберите шестнадцетиричную систему счисления, щёлкнув по переключателю Hex.

4. Введите в калькулятор полученное ранее шестнадцетиричное значение master_version или version. В данном примере шестнадцетиричное значение master_version равно 10.

Важно! Поле master_version имеет длину 4 байта. Старшинство байт в пакете идёт слева направо. В калькуляторе Windows старшинство байт идёт наоборот, справа налево. Поэтому, вводя шестнадцатеричные значения в калькулятор, следует поменять порядок следования байт наоборот. Например в пакете встречается следующее поле master_version: 10 14 00 00. Тогда их перевёрнутая последовательность будет 00 00 14 10. Ведущие нули можно отбросить, они ничего не значат, получается 14 10. Вот это и надо ввести в калькулятор в 16ричном режиме, а затем перевести в 10-ную систему. Получается, что 14 10 hex = 5136 dec. (а не 4116).

5. Выберите десятичную систему счисления, щёлкнув по переключателю Dec.

6. После этого число автоматически переведётся в десятичную систему счисления.

Следуя приведённой инструкции необходимо перевести в десятичную систему счисления настройки сервера master_version и version.

Прописать настройки сервера в OpenKore

OpenKore читает настройки сервера из файла tables\servers.txt. Если вашего сервера нет в списке, тогда добавьте в этот файл новую запись. Если же ваш сервер уже есть в списке, тогда измените существующую запись. После изменения файла servers.txt следует перезапустить OpenKore.

Синтаксис

Записи в файле servers.txt имеют следующий формат:

[<server name>]
ip <ip-адрес или dns-имя>
port <номер>
version <число>
master_version <число> 
serverType <название сервертипа>
charBlockSize <число>
addTablesFolder [<пути до папок>]
recvpackets [<имя файла>]
serverEncoding <кодировка>


#Следующие настройки сервера необязательны
chatLangCode [<булев флаг>]
field_<location> [<имя файла>]
gameGuard [<флаг>]
private [<булев флаг>]
paddedPackets [<булев флаг>]
paddedPackets_attackID [<заголовки пакетов>]
paddedPackets_skillUseID [<заголовки пакетов>]
secureLogin [<булев флаг>]
secureLogin_type [<тип>]
secureLogin_requestCode [<строка 16-ричных чисел>]
secureLogin_account [<булев флаг>]
storageEncryptKey [<ключ шифрования>]
masterLogin_packet [<заголовок пакета>]

Обязательные

[<server name>]
Название игрового сервера, должно быть между квадратных скобок [ и ].
ip <ip-адрес или dns-имя>
IP-адрес или DNS-имя логин-сервера.
port <номер>
Номер порта логин-сервера. Обычно - 6900.
version <number>
Десятичное число, обозначающее версию сервера.
master_version <number>
Десятичное число, обозначающее мастер-версию сервера.
serverType <название сервертипа>
Так называемый СерверТип. Каждый официальный сервер имеет свой сервертип. Приватные сервера используют kRO-шные сервертипы в соответствии с датой компиляции запускаемых файлов клиента.
charBlockSize [<число>]
Длина в байтах блока информации о персонаже. Используются числа 106 (стандарт), 108, 112, 116, 128. Эта настройка сервера прописывается если у чара отображается неправильно имя, джоб и левел во время выбора персонажа в аккаунте (см. [Frequently_Asked_Questions#Корявый список персонажей на аккаунте|FAQ]]).
addTablesFolder <пути до папок>
Список путей до папок (относительно папки tables), в которых нужно искать табличные файлы.
Используется только если не был указан параметр командной строки --tables.
Для использования англоязычных табличных файлов можно прописать
addTableFolders translated/kRO_english
или же
addTableFolders iRO
recvpackets [<имя файла>]
Имя файла с ресивпакетами конкретно для вашего сервера. Стандартное значение - recvpackets.txt. Поиск файла ведётся по списку табличных папок - addTablesFolder. См. также руководство Извлечение ресивпакетов. Хотя эта настройка не обзательна, но очень желательна.
serverEncoding <кодировка текста>
Кодировка текста. Кодировка текста не определяется автоматически, поэтому её нужно прописывать руками. Вот список возможных кодировок:
Кодировка текста Используется в языках
Western Английский язык, или другой, основанный на латинском алфавите язык. Например немецкий, французский, португальский, а также индонезийский и другие.
Simplified Chinese Упрощённый китайский.
Traditional Chinese Традиционный китайский.
Korean Корейский язык.
Russian Русский язык, или другой, основанный на кириллице.
Japanese Японский язык.
Thai Тайский язык.

Необязательные

captcha [<булев флаг>]
Заставляет OpenKore использовать "капчу".
chatLangCode [<булев флаг>]
Если chatLangCode 1, то из сообщений удаляется код языка.
gameGuard [<флаг>]
Исользуется в случае использования на сервере GameGuard или HackShield. Смотри также Poseidon.
private [<булев флаг>]
Пропишите настройку сервера private 1, если OpenKore пытается соединиться с map-сервером по неправильному IP-адресу. Обычно такое случается на пиратских серверах.
masterLogin_packet [<заголовок пакета>]
Переопределяет заголовок логин-пакета (но не трогает его структуру). Если заголовок логин-пакета отличается от 0064 (стандарт), то для режима XKore 2 следует обязательно указать правильный заголовок логин-пакета.
field_<локация> <имя файла>
Для <локации> OpenKore будет использовать файл <имя файла>.fld. Этот параметр полезен, если на вашем сервере используются устаревшие или модифицированные локации. Пример: использовать morocc_old.fld вместо morocc.fld:
field_morocc morocc_old
Смотри также гайд по созданию *.fld-файлов: FLD Creation Guide.

Пример

[MushroomRO]
ip 127.0.0.1
port 6900
master_version 16
version 20
serverType kRO_RagexeRE_2010_01_26a
charBlockSize 108
addTableFolders iRO
recvpackets mush-recvpackets.txt
serverEncoding Western

Примечание. Смотри также (!) recvpackets.txt /для каждого сервака свой? (почти FAQ).