Подключение бота к серверу
Получение информации о сервере
Вместе с OpenKore идут настройки только для официальных серверов, но не для приватных. Из-за того, что приватных серверов великое множество, невозможно поддерживать настройки для них в актуальном состоянии. Таким образом, игрокам приватных серверов следует выяснить самостоятельно настройки их серверов, пользуясь при этом данным гайдом.
Прежде чем приступить к чтению гайда, прочитайте список неподдерживаемых серверов. На вашем сервере может быть защита от ботов, что может препятствовать OpenKore и такой сервер не будет поддерживаться OpenKore.
OpenKore нуждается в следующей информации о сервере Ragnarok Online, прежде чем сможет залогиниться:
- Имя сервера.
- Адрес сервера в интернете (IP-адрес или доменное имя) и номер порта.
- Номер master version сервера.
- Номер version сервера.
- Кодировка текста.
- СерверТип serverType сервера.
Существует два подробных руководства по сбору информации о сервере с помощью 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 <number/host> port <number> version <number> master_version <number> serverType <serverType name> serverEncoding <enconding> charBlockSize <number> #Следующие настройки сервера необязательны addTableFolders <folder path> chatLangCode <boolean flag> field_<location> <filename> gameGuard <flag> private <boolean flag> paddedPackets <boolean flag> paddedPackets_attackID <packet switches> paddedPackets_skillUseID <packet switches> secureLogin <boolean flag> secureLogin_type <type> secureLogin_requestCode <hex string> secureLogin_account <boolean flag> storageEncryptKey <encrypt key> recvpackets <file name>
- [<server name>]
- Имя вашего сервера, должно быть между квадратных скобок [ и ].
- ip <number/host>
- IP-адрес или DNS-имя логин-сервера.
- port <number>
- Номер порта логин-сервера.
- version <number>
- Десятичное число, обозначающее версию сервера.
- master_version <number>
- Десятичное число, обозначающее мастер-версию сервера.
- serverType <serverType name>
- Тип сервера, так называемый СерверТип. Для каждого официального сервера есть свой собственный сервер-тип. Для приватных же серверов используются kRO сервертипы, соответсвующие экзешным файлам. Ранее использовались числовые сервертипы, которые на данный момент устарели. Ну, разве что, остался от них serverType 0, на котором основаны сервертипы для официальных серверов. Используйте цифровые сервертипы только в том случае, если вы действительно уверены в такой необходимости, например для старых версий серверов.
- Пример kRO-шного сервертипа - RagexeRE_2009_12_15a.
- Пример буквенного сервертипа - rRO, это сервертип официального российского сервера.
- Список новых сервертипов serverType.
- serverEncoding <enconding>
- Тип кодировки текста. Кодировка текста не может быть автоматически определена, поэтому её нужно прописывать руками. Вот список возможных кодировок:
Кодировка текста | Используется в языках |
---|---|
Western | Английский язык, или другой, основанный на латинском алфавите язык. Например немецкий, французский, португальский, а также индонезийский и другие. |
Simplified Chinese | Упрощённый китайский. |
Traditional Chinese | Традиционный китайский. |
Korean | Корейский язык. |
Russian | Русский язык, или другой, основанный на кириллице. |
Japanese | Японский язык. |
Thai | Тайский язык. |
- charBlockSize <number>
- Длина в байтах блока информации о персонаже. Используются числа 106 (значение по умолчанию), 108, 112, 116, 128. Эта настройка сервера прописывается если у чара отображается неправильно имя, джоб и левел во время выбора персонажа в аккаунте.
- addTablesFolder <path>
- Путь до папки, в которой лежат табличные файлы.
- chatLangCode <boolean flag>
- Если настройка сервера chatLangCode 1, то из сообщений удаляется код языка.
- private <boolean flag>
- Пропишите настройку сервера private 1, если OpenKore пытается соединиться с map-сервером по неправильному IP-адресу. Обычно такое случается на пиратских серверах.
- recvpackets <file name.txt>
- Имя файла с ресивпакетами конкретно для вашего сервера. Если этот параметр не указан, то будет использован файл recvpackets.txt.
- field_<location> <filename>
- Для локации <location> OpenKore будет использовать файл <filename>.fld. Этот параметр полезен, если на вашем сервере используются устаревшие или модифицированные локации городов и обычных локаций. Так, например, пока на ру-офе не ввели 12-й эпизод, в настройках была строка
field_morocc morocc_old
- Смотри также гайд по созданию файлов *.fld FLD Creation Guide.
Пример
[MushroomRO] ip 127.0.0.1 port 6900 master_version 16 version 20 serverType 8_4 charBlockSize 108 serverEncoding Western recvpackets mush-recvpackets.txt
Примечание. Смотри также (!) recvpackets.txt /для каждого сервака свой? (почти FAQ).