Подключение бота к серверу
Получение информации о сервере
Вместе с 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. После ввода логина и пароля вернитесь в окно Wireshark и щёлкните по кнопке 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 десятеричный формат, смотри раздел - перевод чисел в десятеричную систему.
Определение charBlockSize
1. С помощью клиента создать чара на аккаунте, закрыть клиент.
2. Включить в боте дебаг входящих пакетов.
3. Законнектиться ботом, дойти до чар селлекта (чара не выбирать), посмотреть размер пакета с чарами, закрыть бота.
4. С помощью клиента создать второго чара на аккаунте, закрыть клиент.
5. Законнектиться ботом, дойти до чар селлекта (чара не выберать), посмотреть новый размер пакета с чарами, закрыть бота.
6. Подсчитать разницу между вторым и первым пакетами - это и будет значение charBlockSize.
Перевод чисел из 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, 132, 136, 140, 144. Эта настройка сервера прописывается если у чара отображается неправильно имя, джоб и левел во время выбора персонажа в аккаунте (см. FAQ. 5.4 Корявый список персонажей на аккаунте).
- 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.
- dead 1
- Сервер мёртв, закрылся. Такой сервер нельзя выбрать из списка. Если сервер уже прописан в конфигурации, то выдаётся соответствующее сообщение об ошибке. Добавлено в ревизии 8566.
- dead_message <сообщение>
- Пояснение о закрытии сервера. По умолчанию будет стандартное: Server you've selected (%s) is now marked as dead.
- Пример для http://euro-ro.net/: euRO was closed on September 30, 2010. There used to be transfers to fRO, check out their website.
- title <название сервера>
- Название сервера, какое будет показано в списке при выборе сервера. Можно менять как кому удобно, в отличии от идентификатора сервера, который лучше не трогать.
- В квадратных скобках - идентификатор сервера, который следует переименовывать только если игровые серверы или их порядок изменился. В таких случаях надо будет ещё раз указать на правильный сервер.
- Появилось в ревизии 8564.
- Пример. Вместо "International - iRO: Loki Classic" будет показано "International - iRO: Loki (Classic-compatible)":
[International - iRO: Loki Classic] title International - iRO: Loki (Classic-compatible)
Пример
[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).