Подключение бота к серверу: различия между версиями
4epT (обсуждение | вклад) Нет описания правки |
4epT (обсуждение | вклад) Нет описания правки |
||
Строка 270: | Строка 270: | ||
: Исользуется в случае использования на сервере GameGuard или HackShield. Смотри также [[Poseidon]]. | : Исользуется в случае использования на сервере GameGuard или HackShield. Смотри также [[Poseidon]]. | ||
{{:masterLogin_packet}} | |||
{{:dead_message}} | |||
{{:title}} | |||
{{:pinCode}} | |||
{{:charDeleteDateType}} | |||
{{:blockingPlayerCancel}} | |||
{{:rankingSystemType}} | |||
{{:itemListType}} | |||
: | |||
: | |||
: | |||
: | |||
: | |||
=== Пример === | === Пример === |
Версия от 02:46, 26 октября 2020
Получение информации о сервере
Вместе с OpenKore идут настройки только для официальных серверов, но не для приватных. Из-за того, что приватных серверов великое множество, невозможно поддерживать настройки для них в актуальном состоянии. Таким образом, игрокам приватных серверов следует выяснить самостоятельно настройки их серверов, пользуясь при этом данным руководством.
Прежде чем приступить к чтению руководства, просмотрите список неподдерживаемых серверов. На вашем сервере может быть защита от ботов, что может препятствовать OpenKore и такой сервер не будет поддерживаться OpenKore.
Для коннекта OpenKore к серверу Ragnarok Online необходимо указать следующую информацию:
- название сервера;
- адрес сервера в интернете (IP-адрес или доменное имя) и номер порта;
- параметры сервера: master_version, version, charBlockSize и serverEncoding - кодировку текста;
- serverType - тип сервера ("язык" общения OpenKore с сервером RO);
- 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 байт (в этом случае нужно настроить опцию clientHash).
- На следующем рисунке показан перехваченный логин-пакет, содержащий 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 имеют следующий формат:
[<имя_сервера>] ip <ip-адрес или dns-имя> port <номер> version <число> master_version <число> serverType <название сервертипа> serverEncoding <кодировка> charBlockSize <число> addTablesFolder [<пути до папок>]
#Следующие настройки сервера необязательны: private [<булев флаг>] recvpackets [<имя файла>] chatLangCode [<булев флаг>] storageEncryptKey [<ключ шифрования>] field_<location> [<имя файла>] clientHash [<строка 16-ричных чисел>] captcha [<булев флаг>] gameGuard [<флаг>] secureLogin [<булев флаг>] secureLogin_type [<тип>] secureLogin_requestCode [<строка 16-ричных чисел>] secureLogin_account [<булев флаг>] paddedPackets [<булев_флаг>] paddedPackets_attackID [<заголовки_пакетов>] paddedPackets_skillUseID [<заголовки_пакетов>] masterLogin_packet [<заголовок_пакета>] dead <булев флаг> dead_message <текст> title <название_сервера> pinCode [<булев_флаг>] charDeleteDateType <булев_флаг> blockingPlayerCancel <булев_флаг> rankingSystemType <булев_флаг> itemListType <булев_флаг>
Обязательные
- [<имя_сервера>]
- Название игрового сервера, должно быть между квадратных скобок [ и ].
- ip <ip-адрес или dns-имя>
- IP-адрес или DNS-имя логин-сервера. Логин-сервер, чар-сервер и мап-сервера могут иметь разные ИП-адреса.
- port <номер>
- Номер порта логин-сервера. Обычно - 6900.
- version <номер>
- Десятичное число, обозначающее версию сервера.
- master_version <номер>
- Десятичное число, обозначающее мастер-версию сервера.
- serverType <название_серверТипа>
- Это "язык" общения OpenKore с сервером RO. Каждый официальный сервер имеет свой serverType. Приватные сервера используют kRO-шные serverType в соответствии с датой компиляции запускаемых файлов клиента.
- serverEncoding <кодировка>
- Кодировка текста. Кодировка текста не определяется автоматически, поэтому её нужно прописывать руками. Вот список возможных кодировок:
Кодировка текста | Используется в языках |
---|---|
Western | Английский язык, или другой, основанный на латинском алфавите язык. Например немецкий, французский, португальский, а также индонезийский и другие. |
Simplified Chinese | Упрощённый китайский. |
Traditional Chinese | Традиционный китайский. |
Korean | Корейский язык. |
Russian | Русский язык, или другой, основанный на кириллице. |
Japanese | Японский язык. |
Thai | Тайский язык. |
- charBlockSize <число>
- Длина в байтах блока информации о персонаже в пакете 'received_characters' в чар-селекте.
- На данный момент поддерживаются следующие значения: 106, 108, 112, 116, 124, 128, 132, 136, 140, 144, 145, 146, 147, 155 (по умолчанию), 175.
charBlockSize | kRO дата | Версия OpenKore | Примечание |
---|---|---|---|
∞ | периодически появляются новые значения charBlockSizes | ||
175 | 2020-10-07 | a6d3f87 | HP and SP int64 |
155 (по умолчанию) | a6d3f87 | exp int64 | |
147 | 2014-10-22 | df50355 | walk_speed long |
146 | 3aeba6a | ||
145 | 2014-10-16 | 3001eab and 8fa8dfa | обновление iRO's Doram |
144 | 2011-10-25 | 876acab | "переименование чара" |
140 | 2011-09-28 | 876acab | "change slot feature" |
136 | 2011-01-11 | b5b8e07 | "robe" |
132 | 2010-08-03 | b5b8e07 | "дата удаления" |
128 | daefa83 | last_map 16 Bytes | |
124 | 3b07ffe | bRO (bitfrost update) | |
116 | addabe5 | ||
112 | 9862177 | Topic on the forum | |
108 | 9862177 | Topic on the forum | |
106 |
Даты приведены для справки, любой сервер может изменить их.
В коде Athena charBlockSize генерирует функция mmo_char_tobuf
- addTablesFolder <пути до папок>
- Список путей до папок (относительно папки tables), в которых нужно искать табличные файлы.
- Используется только если не был указан параметр командной строки --tables.
- Для использования англоязычных табличных файлов можно прописать
addTableFolders translated/kRO_english
- или же
addTableFolders iRO
Необязательные
- private [<булев флаг>]
- Пропишите настройку сервера private 1, если OpenKore пытается соединиться с map-сервером по неправильному IP-адресу. Обычно такое случается на пиратских серверах.
- recvpackets [<имя файла>]
- Имя файла с ресивпакетами конкретно для вашего сервера. Стандартное значение - recvpackets.txt. Поиск файла ведётся по списку табличных папок - addTablesFolder. См. также руководство Извлечение ресивпакетов. Хотя эта настройка не обзательна, но очень желательна.
- chatLangCode [<булев флаг>]
- Если chatLangCode 1, то из сообщений удаляется код языка.
- field_<локация> <имя файла>
- Для <локации> OpenKore будет использовать файл <имя файла>.fld. Этот параметр полезен, если на вашем сервере используются устаревшие или модифицированные локации. Пример: использовать morocc-old.fld вместо morocc.fld:
field_morocc morocc-old
- Смотри также гайд по созданию *.fld-файлов: FLD Creation Guide.
- clientHash [<строка 16-ричных чисел>]
- Клиенты RO начиная с 2013 года могут отсылать первым пакетом сумму MD5 файла клиента. Заголовок таких пакетов: 0204. Если в WPE вы перехватили первый пакет с таким заголовком, то следует настроить данную опцию, например, clientHash 82d12c914f5ad48fd96fcf7ef4cc492d. Это значение будет видно в перехваченном пакете, а также можно подсчитать MD5 сумму файла клиента.
- captcha [<булев флаг>]
- Заставляет OpenKore использовать "капчу".
- gameGuard [<флаг>]
- Исользуется в случае использования на сервере GameGuard или HackShield. Смотри также Poseidon.
- masterLogin_packet <заголовок_пакета>
- Переопределяет заголовок логин-пакета (но не трогает его структуру). Если заголовок логин-пакета отличается от 0064 (стандарт), то для режима XKore 2 следует обязательно указать правильный заголовок логин-пакета.
- Возможные значения: 0825
- dead <булев_флаг>
- Установите 1 если ваш сервер закрылся. Такой сервер нельзя выбрать из списка. Если сервер уже прописан в конфигурации, то выдаётся соответствующее сообщение об ошибке.
- Добавлено в ревизии 8566.
- dead_message <сообщение>
- Пояснение о закрытии сервера. Сообщение по умолчанию: Server you've selected (%s) is now marked as dead.
- Пример для euRO сервера будет отображаться: euRO was closed on September 30, 2010. There used to be transfers to fRO, check out their website.
# http://euro-ro.net/ [Europe - euRO] dead 1 dead_message euRO was closed on September 30, 2010. There used to be transfers to fRO, check out their website.
- title <название_сервера>
- Название сервера, которое будет показано в списке при выборе сервера. Можно принимать любое значение, в отличии от "[<имя_сервера>]", которое лучше не трогать.
- Пример: вместо
International - iRO: Loki Classic
будет показаноInternational - iRO: Loki (Classic-compatible)
:
[International - iRO: Loki Classic] title International - iRO: Loki (Classic-compatible)
- pinCode <булев_флаг>
- Если до выбора чара необходимо вводить пин-код, то следует здесь поставить 1. В противном случае эта опция не нужна.
- charDeleteDateType <булев_флаг>
- Установите 1 если ваш сервер для удаления чара требуется ввести текущую дату.
- blockingPlayerCancel <булев_флаг>
- Установите 1 если ваш сервер при смене карты и телепорте требут отправку пакета
blocking_player_cancel
(0447). Не работает только в режиме XKore 1
- rankingSystemType <булев_флаг>
- Установите 1 если ваш сервер использует один общий пакет
rank_general
(097C), вместоrank_killer
,rank_taekwon
,rank_alchemist
,rank_blacksmith
- itemListType <булев_флаг>
- Установите 1 если ваш сервер использует
item_list
(0B08 ~ 0B0B) пакеты вместо обычного списка. - Смотри github PR#2887
Пример
[RMS Renewal Test Server] ip 69.197.167.236 port 6900 master_version 2 version 51 serverType kRO_RagexeRE_2014_10_22b serverEncoding Western charBlockSize 147 addTableFolders kRO/RagexeRE_2014_10_22b;translated;translated/kRO_english;kRO clientHash 82d12c914f5ad48fd96fcf7ef4cc492d pinCode 1
Примечание. Смотри также (!) recvpackets.txt /для каждого сервака свой? (почти FAQ).