Долго искал, но так и не нашел никакого мануала по пакетам РФО. По сему начну эту тему для тех, кто самостоятельно разбирается с пакетами, кто хорошо это умеет делать и кто только начинает этим заниматься.
Для затравки начну с пакета 07 09 "EquipPartRequist".
Пакет имеет примерно такой вид:
08 00 07 09 00 06 00 00
Ну, начало понятное: 08 00 -длина пакета
07 09 - тип пакета
06 00 - осмелюсь предположить - ID вещи в инвентаре.
Кто знает больше - поделитесь информацией.
Суть проблемы в чем - когда мы одеваем вещь, клиент отсылает пакет 08 00 07 09 00 06 00 00. В ответ сервер присылает пакет 05 00 07 0A 00 - если разрешает одеть вещь, или 05 00 07 0A 02 - если не разрешает одеть вещь.
Делает как обычно, ловим пакет на одевание вещи. Отправляем его серверу через WPF. Сервер присылает разрешение на одевание вещи, но вещь так и остается в инвентаре. Причем одеть ее теперь "вручную" не получится, и не продать, и не выбросить. Пока мы не пошлем серверу пакет 08 00 07 0D 01 06 00 02 "OffPartRequist". Теперь вещь можно одевать и снимать "вручную".
Аналогично происходит и с пакетом 0A 00 07 0B 00 0A 00 02 FF FF "EmbellishRequist" на одевание бижутерии.
Если ты от лица клиента посылаешь пакет - он об этом не знает. И по ответу от сервера он не может понять, какую вещь ты одел или попытался одеть (сам видишь, в ответе нет id этой вещи). Поэтому она и остаётся в инвентаре.
По поводу разбора пакета 07 09. Запомни одно из фундаментальных правил сетевого протокола rf (да и любых других сетевых сервисов). Числовые значение передаются задом наперёд. То есть id в твоём пакете это - 00 06.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
А если я пошлю пакет на одевание вещи из бота, он ее оденет? Просто сейчас я на работе и не могу проверить в боте (он на домашнем компе).
нет, я же говорю, по ответу от сервера нереально определить, что было одето. Нужно посмотреть другие входящие пакеты, вероятно там есть глобальный пакет с информацией о том, что кто-то из окружающих что-то одел. Но судя по тому, что ты в первом посте написал, даже если пакет есть, клиент его игнорирует.
Я не оказываю услуги гаранта!
База данных кидал: blacklist.rf-cheats.ru
Обязательно проверяйте человека через чёрный список прежде чем совершать с ним сделку.
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 800 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Чтобы его прочитать, вы должны заработать сообщения. Как это сделать бесплатно, описано в правилах форума. Как купить доступ, описано в Платных услугах.
Добавлено через 57 минут
Пожалуй начнем копать из далека.
Становимся в ГШ в пустынном углу, где никого нет на радаре. Ловим пакеты. Сервер периодически шлет пакет 0c 00 04 0a 00 00 1f 02 2a 6b 0a 00.
Предположим это информация о том, кто находится в вашем поле зрения. Так как никого кроме вас самого нет рядом, значит это пакет с информацией о вас. 1f 02 - это ваш SID, 2a 6b 0a 00 - это ваш ID.
Добавлено через 3 часа 58 минут
Теперь перейдем в более оживленное место.
Здесь у нас есть стригои.
Сразу видим кучу новых пакетов. Попробуем их расшифровать.
0C 00 04 0A 00 01 F0 16 EA F4 0F 00
0C 00 04 0A 00 01 6D 0E 32 D1 0F 00
0C 00 04 0A 00 01 91 0F 88 DC 0F 00
Короче полная абракадабра. Из повторяющихся пакетов только наш первый.
Смотрим в боте стригои имеют ID = 29. Открываем калькулятор, переводим в 16-ричное = 1D. Визуально ничего похожего не видно.
Пробуем по другому. Таргетим одного стригоя и убиваем его. Ищем одинаковые цепочки.
0C 00 0D 1A 00 01 F0 16 EA F4 0F 00 - это пакет "SetTargetObjectRequest"
Листаем дамп назад и смотрим уже известные пакеты "04 0А".
0C 00 04 0A 00 01 F0 16 EA F4 0F 00
Ага, уже что-то похожее есть! И там, и там последние 6 байтов совпадают.
Добавлено через 4 часа 19 минут
Тут же поймали пакет "MonsterMove".
12 00 04 05 EA F4 0F 00 46 FD 52 FE F3 1B B4 FC 41 1C
И впраду, после таргетинга моб начал двигаться.
Тут мы видим, что от моба осталось только EA F4 0F 00
0F 00 0D 1B 00 00 01 EA F4 0F 00 10 27 00 00
Теперь сервер подтвердил таргетинг моба EA F4 0F 00
09 00 0D 64 EA F4 0F 00 00
Непонятный пакет, WPF его не определил.
0A 00 05 01 01 F0 16 00 FF FF
А вот тут уже интереснее. Пакет "AttackGenRequest". Здесь мы моба задаем как F0 16.
1d 00 03 14 14 13 00 01 d6 00 41 41 00 00 01 ec 09 d0 f3 6b 00 00 99 04 2e fe 4e 1e ff
1d 00 - размер пакета
03 14 - тип
14 13 00 - глобальный ID предмета. Имеется ввиду, по которому происходит идентификация предмета.
01 - Количество предметов в пакете.
d6 00 - OID предмета
41 41 00 00 - ID персонажа, которому принадлежит дроп (который убил моба)
01 - не выяснено
ec 09 - SID моба
d0 f3 6b 00 - ID моба/чара, с кого дропнуло
00
99 04 2e fe 4e 1e - X Y Z координаты дропа
ff
2.Не меняется в течении всей сессии. При следующем входе в игру ID скорее всего поменяется.
(твой ответ из топика - Пакетный уровень RF Online для новичков)
по моему это несколько не правильно, возьми к примеру первый пост из этого топика - проделав данную процедуру узнали id вещи (к примеру С1). а теперь выкинь ее, подними и одень снова. Наборы пакетов ( набор имею ввиду и C>s и S>c ) на выкидывание вещи показывают тот же id (С1), а вот уже наборы пакетов на поднятие и одевания подобранного предмета показывают id другой (C2). Причем при условии, что рядом нет никого и никто ничего не одвает и не выкидывает, id вещи меняется на +1. ( С1 -> C2 (Hex) = 193 -> 194 (Dec) ).
а это давно было известно что уникальный ид вещи меняется при кидании на пол. а вот id-gid вещи остается один и тот же. а то как бы клиент знал что показывать :)