Подключение бота к серверу: различия между версиями
Manticora (обсуждение | вклад) Нет описания правки |
Manticora (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
==Получение информации о сервере== | ==Получение информации о сервере== | ||
Вместе с 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''', '''version''', '''charBlockSize''' и '''serverEncoding''' - кодировку текста. | ||
* СерверТип [[serverType]] сервера. | |||
* | * '''addTableFolders''' для поиска табличных файлов с настройками OpenKore. | ||
* | |||
Существует два подробных руководства по сбору информации о сервере с помощью [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]] имеют следующий формат: | ||
<pre> | <pre> | ||
[<server name>] | [<server name>] | ||
ip < | ip <ip-адрес или dns-имя> | ||
port < | port <номер> | ||
version < | version <число> | ||
master_version < | master_version <число> | ||
serverType < | serverType <название сервертипа> | ||
charBlockSize <число> | |||
addTablesFolder [<пути до папок>] | |||
recvpackets [<имя файла>] | |||
serverEncoding <кодировка> | |||
#Следующие настройки сервера необязательны | #Следующие настройки сервера необязательны | ||
chatLangCode [<булев флаг>] | |||
chatLangCode < | field_<location> [<имя файла>] | ||
field_<location> < | gameGuard [<флаг>] | ||
gameGuard < | private [<булев флаг>] | ||
private < | paddedPackets [<булев флаг>] | ||
paddedPackets < | paddedPackets_attackID [<заголовки пакетов>] | ||
paddedPackets_attackID < | paddedPackets_skillUseID [<заголовки пакетов>] | ||
paddedPackets_skillUseID < | secureLogin [<булев флаг>] | ||
secureLogin < | secureLogin_type [<тип>] | ||
secureLogin_type < | secureLogin_requestCode [<строка 16-ричных чисел>] | ||
secureLogin_requestCode < | secureLogin_account [<булев флаг>] | ||
secureLogin_account < | storageEncryptKey [<ключ шифрования>] | ||
storageEncryptKey < | masterLogin_packet [<заголовок пакета>] | ||
</pre> | </pre> | ||
=== Обязательные === | |||
; [<server name>] | ; [<server name>] | ||
: | : Название игрового сервера, '''должно быть''' между квадратных скобок '''[''' и ''']'''. | ||
; ip < | ; ip <ip-адрес или dns-имя> | ||
: IP-адрес или DNS-имя логин-сервера. | : IP-адрес или DNS-имя логин-сервера. | ||
; port < | ; port <номер> | ||
: Номер порта логин-сервера. | : Номер порта логин-сервера. Обычно - ''6900''. | ||
; version <number> | ; version <number> | ||
Строка 177: | Строка 178: | ||
: Десятичное число, обозначающее мастер-версию сервера. | : Десятичное число, обозначающее мастер-версию сервера. | ||
; serverType < | ; [[serverType]] <название сервертипа> | ||
: | : Так называемый СерверТип. Каждый официальный сервер имеет свой сервертип. Приватные сервера используют '''kRO-шные сервертипы''' в соответствии с датой компиляции запускаемых файлов клиента. | ||
: | |||
: | ; charBlockSize [<число>] | ||
: | : Длина в байтах блока информации о персонаже. Используются числа 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 | |||
; | ; 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: | ||
| Тайский язык. | | Тайский язык. | ||
|} | |} | ||
=== Необязательные === | |||
<!-- | |||
; 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]]. | |||
; | ; private [<булев флаг>] | ||
: | : Пропишите настройку сервера private '''1''', если OpenKore пытается соединиться с map-сервером по неправильному IP-адресу. Обычно такое случается на пиратских серверах. | ||
; field_< | ; masterLogin_packet [<заголовок пакета>] | ||
: Для локации | : Переопределяет заголовок логин-пакета (но не трогает его структуру). Если заголовок логин-пакета отличается от 0064 (стандарт), то для режима [[XKore]] '''2''' следует обязательно указать правильный заголовок логин-пакета. | ||
: Смотри также гайд по созданию | ; 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 | serverType kRO_RagexeRE_2010_01_26a | ||
charBlockSize 108 | charBlockSize 108 | ||
addTableFolders iRO | |||
recvpackets mush-recvpackets.txt | |||
serverEncoding Western | serverEncoding Western | ||
'''Примечание.''' Смотри также [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.
- Условные обозначения:
- - version. Беззнаковое целочисленное значение длиной 4 байта, записанное в шестнадцатиричной системе счисления. Младший байт слева (т.н. little-endian).
- - IP-адрес
- - порт
- - 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-адрес и порт сервера.
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).