Протокол, пакеты РО

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Rzone
Новичок
Сообщения: 5
Зарегистрирован: Вс авг 07, 2011 11:47 pm
Сервер RO:: ro

Протокол, пакеты РО

Сообщение Rzone »

Пишу своего бота на фришный серв без криптования. Дошел до коннекта к мап серверу и тут застрял. Смотрел через сниффер что посылает клиент - получил такой пакет:

36 04 83 94 1E 00 77 6B 02 00 89 53 00 00 6D 8E 3C 00 00

первые два байта заголовок, дальше
4 байта UncknownID - какойто ключ выцепил его при коннекте к чар серверу хз незнаю что это ну и ладно
4 байта - CharID
4 байта - SessionID1
и дальше непонятные мне 5 байт постоянно меняются

Кто знает помогите. Был бы очень благодарен также за инфу с описанием пакетов.

Пробовал ковырять опенкор но с перлом не оч дружу, да и запутано там все просто жуть...
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Протокол, пакеты РО

Сообщение EternalHarvest »

В openkore структура пакетов и их обработка располагаются в src/Network/Receive, src/Network/Send. Можно ещё в eAthena искать их.

Код: Выделить всё

$ grep -r 0436 .
...
./Network/Send/ServerType0.pm:		'0436' => ['map_login', 'a4 a4 a4 V C', [qw(accountID charID sessionID tick sex)]],
...

Код: Выделить всё

# Network/Send.pm
sub sendMapLogin {
...
		$msg = $self->reconstruct({
			switch => 'map_login',
			accountID => $accountID,
			charID => $charID,
			sessionID => $sessionID,
			tick => getTickCount,
			sex => $sex,
		});

Код: Выделить всё

$ grep -A 10 -r 'sub getTickCount' .
./Utils.pm:sub getTickCount {
./Utils.pm-	my $time = int(time()*1000);
./Utils.pm-	if (length($time) > 9) {
./Utils.pm-		return substr($time, length($time) - 8, length($time));
./Utils.pm-	} else {
./Utils.pm-		return $time;
./Utils.pm-	}
./Utils.pm-}
./Utils.pm-
./Utils.pm-sub inRange {
./Utils.pm-	my $value = shift;
Rzone
Новичок
Сообщения: 5
Зарегистрирован: Вс авг 07, 2011 11:47 pm
Сервер RO:: ro

Re: Протокол, пакеты РО

Сообщение Rzone »

Спасибо, прошел дальше получил следующие пакеты, отправил
map_loaded 007D

и тут опять трабла

клиент отправляет вот это:
60 03 9A 4D D8 00

искал во всех сервертипах 0360 не нашел:(
Rzone
Новичок
Сообщения: 5
Зарегистрирован: Вс авг 07, 2011 11:47 pm
Сервер RO:: ro

Re: Протокол, пакеты РО

Сообщение Rzone »

АЕЕЕЕЕЕ!! залогинился))) без этого пакета, палевно конечно...
Шас буду обучать свое детище:)
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Протокол, пакеты РО

Сообщение 4epT »

прям уверен что залогинился??
не выкидывает сразу?
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Протокол, пакеты РО

Сообщение EternalHarvest »

Rzone писал(а):искал во всех сервертипах 0360 не нашел
Используй последнюю версию openkore и поиск по всем файлам, 0360 - sync (sendSync) в последних kRO типах.

Вот ещё файл из eA, на основе которого, видимо, и сделаны kRO типы: https://code.google.com/p/eathena-proje ... ket_db.txt
Rzone
Новичок
Сообщения: 5
Зарегистрирован: Вс авг 07, 2011 11:47 pm
Сервер RO:: ro

Re: Протокол, пакеты РО

Сообщение Rzone »

Отловил почти все критические ошибки, боты бегают фармят, летают в город бафаются складывают шмот на склад и гильд склад, кузнец точит шмот на макросе, я дрыхну:)

Хотелось бы немного улучшить алгоритм поиска цели. Как опенкор определяет что цель для атаки недоступна? Ну за стенкой моб стоит.
Я это реализовал очень неудачно, пробовал алгоритм видимости брезенхема но чтото глючно получилось и тормознуто, удалил, сделал таймаут на атаку: если цель не умирает в течении 7 секунд - значит считается недоступной и помечается как недоступная в списке мобов. Есть большой минус - в застроеных локах где одни стены и много мобов это сильно тормозит фарм. Бот стоит постоянно втыкает 7 секунд, меньше низя - не успевает добивать доступных мобов.

Вобщем хотелось бы спросить у гуру если знаете, как в опенкоре проверяется видимость и доступность моба для атаки?
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Протокол, пакеты РО

Сообщение 4epT »

Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Rzone
Новичок
Сообщения: 5
Зарегистрирован: Вс авг 07, 2011 11:47 pm
Сервер RO:: ro

Re: Протокол, пакеты РО

Сообщение Rzone »

Жаль... а я думал там как-нибудь хитро определяет, думал может от сервера инфа приходит о видимости... Это очень ресурсоемкие алгоритмы.
В общем спасибо EternalHarvest, спасибо 4epT.
Ответить