Re: Oldraggame.ru
Добавлено: Вт мар 12, 2013 1:51 pm
Что, тоже пакеты не шлются на сервер? Так что картинки эти все пока только картинки... бот не пашет увыAllerian писал(а):xcore 1 работает) только есть пару небольших нюансов....
Что, тоже пакеты не шлются на сервер? Так что картинки эти все пока только картинки... бот не пашет увыAllerian писал(а):xcore 1 работает) только есть пару небольших нюансов....
UPD: В архиве вики опенкоры есть такая заметка: "(*) There is one exception to the rule. If the client is in-game, and the user instructs the client to switch character, then the client will disconnect from the map server and connect to the character server. The first message that we receive, in this case, is the account ID, which is exactly 4 bytes. It is not a "normal" RO message in that it has no message ID - it's just a serialized integer." Так почему в моём случае это сообщение не обрабатывается?You can login with the Ragnarok Online client now.
================================================
<< Received packet: 0069 - Account Info [79 bytes] Mar 12 16:47:22 2013
<тут правильный account_server_info пакет>
Received packet: 0069 Handler: account_server_info
-----------Account Info------------
Account ID: 10xxxx CD AB 01 00
Sex: Boy
Session ID: xxxx xx xx 00 00
0 00 00 00 00
-----------------------------------
--------- Servers ----------
# Name Users IP Port
0 Loki 65535 5.9.111.72 7000
-------------------------------
================================================
<< Received packet: ABCD [2 bytes] Mar 12 16:47:23 2013
0> CD AB ..
Packet Parser: Unknown switch: ABCD
Packet Tokenizer: Unknown switch: 0001
================================================
<< Received unknown packet [2 bytes] Mar 12 16:47:23 2013
0> 01 00 ..
================================================
<< Received packet: 006B - Received characters from Game Login Server [110 bytes] Mar 12 16:47:23 2013
<тут правильный received_characters пакет>
Received packet: 006B Handler: received_characters
Received characters from Character Server
------------- Character List -------------
Slot 1: Spacoom (Paladin, level 99/70)
------------------------------------------
================================================
<< Received packet: 0071 - Received character ID and Map IP from Game Login Server [28 bytes] Mar 12 16:47:24
2013
<тут правильный received_character_ID_and_Map пакет>
Received packet: 0071 Handler: received_character_ID_and_Map
Received character ID and Map IP from Character Server
----------Game Info----------
Char ID: xx xx 01 00 (10xxxx)
MAP Name: morocc.gat
MAP IP: 5.9.111.72
MAP Port: 4501
-----------------------------
================================================
<< Received packet: ABCD [2 bytes] Mar 12 16:47:24 2013
0> CD AB ..
Packet Parser: Unknown switch: ABCD
Packet Tokenizer: Unknown switch: 0001
================================================
<< Received unknown packet [379 bytes] Mar 12 16:47:24 2013
0> 01 00 73 00 <дальше идёт правильный map_loaded пакет, который, к сожалению, не распарсился из-за того, что не прошёл свитч на 0073>
================================================
<дальше идет куча разных корректных пакетов>
<< Received packet: 0229 [15 bytes] Mar 12 16:47:25 2013
0> 29 02 CD AB 01 00 00 00 00 00 00 00 00 00 00 )..............
Received packet: 0229 Handler: character_status
Вот тут оно всё и ломается, когда пытается передать статус моему персонажу, который ещё не создался. А должен был создаться после обработки map_loaded.
На коре написано,что хкора1 очень требовательна к версии бота.Somebody писал(а):В режиме XKore 1 бот цепляется к уже залогиненному персонажу. При "правильной" попытке присоединиться, начиная от ввода пароля, бот дохнет во время захода на карту, т.к. до этого появился лишний пакет и сломал пакет map_loaded. Если быть подробнее, то перед map_loaded пакетом от сервера приходит пакет размером 4 байта, который состоит из ID аккаунта. Парсер тут ломается, т.к. нет подходящего обработчика, почему-то объединяет этот "лишний" пакет со следующим, в котором содержится map_loaded информация, из-за чего пакет map_loaded не парсится, а в дальнейшем затем возникает Carp::Assert::assert('', '$char must be defined') called at src/Actor.pm line 123
Помогите, что делать с этим лишним пакетом?
Вот дебаг-лог бота. Account ID изменён и выделен красным (младшие 2 байта) и фиолетовым (старшие 2 байта).UPD: В архиве вики опенкоры есть такая заметка: "(*) There is one exception to the rule. If the client is in-game, and the user instructs the client to switch character, then the client will disconnect from the map server and connect to the character server. The first message that we receive, in this case, is the account ID, which is exactly 4 bytes. It is not a "normal" RO message in that it has no message ID - it's just a serialized integer." Так почему в моём случае это сообщение не обрабатывается?You can login with the Ragnarok Online client now.
================================================
<< Received packet: 0069 - Account Info [79 bytes] Mar 12 16:47:22 2013
<тут правильный account_server_info пакет>
Received packet: 0069 Handler: account_server_info
-----------Account Info------------
Account ID: 10xxxx CD AB 01 00
Sex: Boy
Session ID: xxxx xx xx 00 00
0 00 00 00 00
-----------------------------------
--------- Servers ----------
# Name Users IP Port
0 Loki 65535 5.9.111.72 7000
-------------------------------
================================================
<< Received packet: ABCD [2 bytes] Mar 12 16:47:23 2013
0> CD AB ..
Packet Parser: Unknown switch: CDAB
Packet Tokenizer: Unknown switch: 0001
================================================
<< Received unknown packet [2 bytes] Mar 12 16:47:23 2013
0> 01 00 ..
================================================
<< Received packet: 006B - Received characters from Game Login Server [110 bytes] Mar 12 16:47:23 2013
<тут правильный received_characters пакет>
Received packet: 006B Handler: received_characters
Received characters from Character Server
------------- Character List -------------
Slot 1: Spacoom (Paladin, level 99/70)
------------------------------------------
================================================
<< Received packet: 0071 - Received character ID and Map IP from Game Login Server [28 bytes] Mar 12 16:47:24
2013
<тут правильный received_character_ID_and_Map пакет>
Received packet: 0071 Handler: received_character_ID_and_Map
Received character ID and Map IP from Character Server
----------Game Info----------
Char ID: xx xx 01 00 (10xxxx)
MAP Name: morocc.gat
MAP IP: 5.9.111.72
MAP Port: 4501
-----------------------------
================================================
<< Received packet: CDAB [2 bytes] Mar 12 16:47:24 2013
0> CD AB ..
Packet Parser: Unknown switch: ABCD
Packet Tokenizer: Unknown switch: 0001
================================================
<< Received unknown packet [379 bytes] Mar 12 16:47:24 2013
0> 01 00 73 00 <дальше идёт правильный map_loaded пакет, который, к сожалению, не распарсился из-за того, что не прошёл свитч на 0073>
================================================
<дальше идет куча разных корректных пакетов>
<< Received packet: 0229 [15 bytes] Mar 12 16:47:25 2013
0> 29 02 CD AB 01 00 00 00 00 00 00 00 00 00 00 )..............
Received packet: 0229 Handler: character_status
Вот тут оно всё и ломается, когда пытается передать статус моему персонажу, который ещё не создался. А должен был создаться после обработки map_loaded.
Ну что это за пиздёшь? Ну как такое вслух может говорить админчег?[9:18:57] Leonid Umanskiy (Ro): У моба в РО нет id если что
решение кроется в функции:В режиме XKore 1 бот цепляется к уже залогиненному персонажу. При "правильной" попытке присоединиться, начиная от ввода пароля, бот дохнет во время захода на карту, т.к. до этого появился лишний пакет и сломал пакет map_loaded.
Код: Выделить всё
$incomingMessages->nextMessageMightBeAccountID;
Но это надо сделать для всех аккаунтов, на которых ботишьABCD 4
Спасибо! Сделал костыль для пары обработчиков входящих сообщений (чтобы можно было обойтись правками только в сервертайп файлах), теперь бот спокойно бегает в xKore 14epT писал(а):Код: Выделить всё
$incomingMessages->nextMessageMightBeAccountID;
Посмотри в логах коры, есть ли там неизвестные пакеты?BORYAT писал(а):при запуске коры 1 захожу на чара и ошибка на пол экрана (в Xkore),как быть?
да.Somebody писал(а):Посмотри в логах коры, есть ли там неизвестные пакеты?BORYAT писал(а):при запуске коры 1 захожу на чара и ошибка на пол экрана (в Xkore),как быть?