Страница 1 из 2

[!] recvpackets.txt /для каждого сервака свой? [почти FAQ]

Добавлено: Ср ноя 28, 2007 1:05 am
4epT
Этот файл содержит заголовки пакетов и их длину..
Так вот в стандартной сборке OpenKore этот файл содержит инфу пакетов от офф серваков (русского, корейского, филиппинского..) (она, кстати, одинаковая??)

По логике вещей этот файл нужен для того, чтобы OpenKore и клиент общались на 1 языке.

Так вот по сути говоря для каждого сервака (не совсем точное определение, но ладно) этот файл будет свой индивидуальный. Все серваки можно разделить по типу. Каждый тип описывается своим набором пакетов. Как я понимаю их число ограничено (десятки?).

Расшифровку содержимого пакетов можно узнать из файла packet_table_en.txt

Так вот к чему я это клоню, что не все же играют на офе.. Поэтому лучше после того как скачали кору, скачать програмку Packet Length Extractor. Запускаем програмку, указываем в ней свой exe-шник (через который запускаете клиент) и получаете recvpackets.txt. Его запихиваете в папку с ботом \tables\.

Вопрос по теме: если сервак посылает нам какой-то пакет которого нет в файле recvpackets.txt, то OpenKore выдаст что-то типо (Unknown packet). А вот представим, что этот пакет у нас записан в recvpackets.txt, но имеет совсем другую длину, то что будет?

Короче делимся своими мыслями..

Re: recvpackets.txt /для каждого сервака свой?

Добавлено: Ср ноя 28, 2007 1:38 am
Jerry
4epT писал(а):Так вот по сути говоря для каждого сервака (не совсем точное определение, но ладно) этот файл будет свой индивидуальный.
не сервака а клиента
Так вот к чему я это клоню, что не все же играют на офе.. Поэтому лучше после того как скачали кору, скачать програмку Packet Length Extractor.
ясен пень
А вот представим, что этот пакет у нас записан в recvpackets.txt, но имеет совсем другую длину, то что будет?
то же самое будет, только ты потеряешь следующий пакет

Добавлено спустя 1 минуту 16 секунд:

recvpackets кстати помоему по большей части для xkore нужен, в хкоре0 там все нахардкожено

Добавлено: Ср ноя 28, 2007 11:20 am
piroJOKE
Я честно говоря, вообще НЕ ПОНИМАЮ, зачем этот файл нужен.
Ведь он реально никакой информации для Коры не несёт.

Ну, подумаешь, прилетел какой-то неизвестный пакет. Ну и хер?
Если мы в xKore 0 - тупо игнорим его,
если в xKore # - переправляем его клиенту.
Ну и нафиг этот файл?! :evil:

Добавлено: Ср ноя 28, 2007 11:38 am
Funt
дя?Тока вот из-за того что этого файлика у меня не было,точнее почему из SVN он скачался не свовсем новый,и не совсем для нашего оффа,у меня писалось Unknow packet ".. .." и OpenKore сворачивался.Так что...Кстати,а что конкретно в это файле записано?Пакет и его длинна?А зачем на знать длину пакета,если у нас есть его описание?
Я конечно не очень хорошо рублю,но вот предположим пакет 02 5E,он положим отвечает за атаку,что мол монстр убит.Он прилетел к нам,значит моба мы убили,за чем нам его длинна? :shock:
Обьясните позя.

Добавлено: Ср ноя 28, 2007 1:19 pm
Jerry
piroJOKE ты тупой. :D Чтобы знать сколько байт игнорить естественно!

зы давайте введем автобан на слово "позя" и "позязя"

Добавлено: Ср ноя 28, 2007 1:31 pm
piroJOKE
?????
Чего?! Не ну а серьёзно, нафиг это надо?

Добавлено: Ср ноя 28, 2007 2:15 pm
Jerry
а что в этом несерьезного? Как еще ты узнаешь, где кончается один пакет и начинается другой? В теории то оно конечно правильно, что структура пакетов задает его длину, в идеале этого файлика не должно бы и быть. А на практике часть кода отвечающая за группировку пакетов может и не знать их структуры. Могут существовать пакеты, которые в коде не представлены вообще никак. Особенно для хкоре, когда мы половину пакетов просто не парсим. Вобщем, это скорее пережитки кривого дизайна.

Добавлено: Ср ноя 28, 2007 2:23 pm
piroJOKE
Jerry писал(а):Как еще ты узнаешь, где кончается один пакет и начинается другой?
Минуточку, а на каком этапе пакеты могут "слипаться"?... Вот этого я что-то не догоняю - разве TCP не доставляет их строго по отдельности? :(

Добавлено спустя 1 минуту 38 секунд:

Далее, а как насчет пакетов переменной длины?... Это вообще не укладывается в сию схему.

Добавлено: Ср ноя 28, 2007 3:06 pm
Jerry
нет, не доставляет. На любом этапе могут слипаться теоретически, даже сервер иногда шлет пакеты пачками.
В пакетах переменной длины длина записана в пакете. Причем, строго в 3 и 4 байте.

Добавлено: Ср ноя 28, 2007 3:21 pm
piroJOKE
Хм... первый раз такое слышу (хотя видеть такое доводилось, в фукед WPE, кстати, но я списывал это на его глюкавость).
Окей, а что в таком случае (если всё "так плохо") ты имеешь в виду под "пережитками кривого дизайна"?

Добавлено спустя 3 минуты 27 секунд:

Хм... в таком случае можно попытаться сделать сводную таблицу recvpackets... (это сработает, если у разных серверов нет пакетов с одинаковыми заголовками (но с разными длинами у одинаковых заголовков)) ).

Добавлено: Ср ноя 28, 2007 4:12 pm
Jerry
пережитки кривого дизайна как раз в том, что длина пакета однозначно задается его структурой, и она имеется в наличии. Тем не менее, файлик все еще нужен.

Добавлено: Ср ноя 28, 2007 4:21 pm
kLabMouse
Jerry
Джерри прав.
Файлик в общем случае нужен в дух целях:
1) Фильтровать пакеты хКор (от клиента). ТЕ не нужно парсить абсолютно все.
2) Для входящих пакетов от Сервера, фильтровать неизвестные. Дабы кора на них не запиналась.

Добавлено: Вт янв 08, 2008 12:07 pm
Mesmer
Вначале была проблема Unknow paket - 0000
Наткнулся на http://www.openkore.com/wiki/index.php/ ... or_Russian
Скачал прогу, запустил, а она выдает Cannot find the packet length function. Понятно что в экзешке ничего не находит. Как по другому можно сделать этот файл для сервера?

Добавлено: Вт янв 08, 2008 12:14 pm
kLabMouse
Mesmer
Видимо Екзешка запакованная Чем-то.
Пожалуйста. Укажите сервер, для которого пытаетесь генерировать длинны пакетов.

Добавлено: Вт янв 08, 2008 12:28 pm
Mesmer
У нас поднят внутренний сервер, доступ только для провайдеров региона. А как можно распаковать экзешку?