PDA

Просмотр полной версии : Расшифровка пакета сдачи манора Gracia Final


Screamer
21.01.2010, 20:43
а точнее: RequestProcureCorpList

В этой теме предлагаю полностью попробывать расшифровать пакет манора. Для примера возьмем вот это:
D0 02 00 01 00 00 00 71 B8 00 10 93 19 00 00 07 00 00 00 01 01 00 00 00 00 00 00
Из этого пакета понятно на 100% следующее:
07 00 00 00- ID города, куда сдаются плоды (опишу чуть позже)
01 01 00 00- колличество сдаваемых плодов.(принцип опишу чуть позже)
Не понятно следующее:
93 19 00 00 - ID сдаваемых всходов. Всегда ли оно стационарно для всех городов и "тарифов приема"?
71 B8 00 10- что это за objectID и на что он влияет?
D0 что это?
02 00- Что такое SubID и с чем его едят?
01 00 00 00- что такое ListSize
00 00 00 00 Это, как я понимаю, вообще никому не нужный отросток.

Цель вопроса: Научиться полностью ручками выставить город, плоды, кол-во плодов на сдачу.

NLObP
22.01.2010, 00:25
D0 что это?
02 00- Что такое SubID и с чем его едят?


D0 - Id пакета
02 00 - SubID пакета (не хватило одного байта для кодирования пакетов)


01 00 00 00- что такое ListSize

ListSize показывает сколько раз повторяется описание сдаваемых плодов, в данном случае один раз.

Последние нули скорее всего это 8 байт количества сдаваемых плодов.

01 01 00 00 00 00 00 00

Screamer
22.01.2010, 15:50
Колличество сдаваемых плодов это 01 01 00 00. Выставить кол-во можно руками. Больше всего интересует фрагмент 71 B8 00 10- objectID. Умея расшифровать его можно будет руами выставить пакет на сдачу. У меня предположение, что этот фрагмент отвечает за цену сдачи. Пример:
D0 02 00 01 00 00 00 B9 6C 05 10 90 19 00 00 08 00 00 00 40 02 00 00 00 00 00 00

Это пакет на сдачу манора в руну "08 00 00 00" Плоды дезерт коба "90 19 00 00" в колличестве 576 штук "40 02 00 00". А это "B9 6C 05 10" я так подозреваю- цена покупки 27500. В хлапе она описывается такой строкой: "0008 d ObjectID: 268790969" Если я прав, то как связать между собой цифры 27500 и B9 6C 05 10? Как получить из первой цифры 16-ричный код?

Добавлено через 5 минут
Или я ошибаюсь и и этот фрагмент не имеет никакого отношения к цене сдачи всходов. Но имеет очень важную роль, ибо без знания этого фрагмента выставить манор руками не удается.
Кстати, если перевести число 268790969 в 16-ричный код, то как раз таки получается "B9 6C 05 10" только задом на перед "10 05 6С В9" Так что же это за число такое магическое objectID

alexteam
22.01.2010, 16:12
это обжектайди предмета..
итемлист пакет глянь.. найдешь...

Screamer
23.01.2010, 01:13
В том то и дело, что это обжект айди, а не итем айди, который прописан в итем листе, в который ты меня отсылаешь. А обжект айди тут представлен каким-то немыслемым девятизначным числом... Есть одно подозрение, завтра вечером проверю, но я этих подозрений уже столько перепроверил...)))

NLObP
23.01.2010, 01:17
Так что же это за число такое магическое objectID

Смотрим в Items.Id

17=Деревянная Стрела
57=Адена
65=Красное Зелье
686=Стул
687=Письмо Дарина
688=Платок Рокси
...

И видим, что все предметы имеют свой ID. Кроме того, каждый предмет ещё имеет свой ObjecID (присваивает сервер), по которому можно отличить например две одинаковые пухи, которые лежат в инвентаре.

Screamer
23.01.2010, 02:22
Из твоих слов можно уяснить следующее: "Неее, ты этот фрукт вчера сдал, сегодня это уже не тот, что был вчера, хоть и выглядит так же..." Или можно это понять по другому, что этот обьект айди отличает тот же самый плод по колличеству. Верно? Т.е. если сегодня я сдал тот же плод в кол-ве 300 штук, будет один обьектайди, а завтра буду сдавать то-же самое но в кол-ве 301 штуки и будет совершенно другой. Но как вычислить этот самый другой используя математические действия?

NLObP
23.01.2010, 03:07
Screamer, на allcheats.ru лучше написано, что такое Id и ObjectId. Я просто хотел сказать, что каждая вещь имеет свой Id и свой ObjectId. Id может быть одинаков у разных однотипных вещей, а ObjectID не может. Сервер генерирует ObjectId автоматически. Можно узнать ObjectId из пакета инвентаря и применять в дальнейшем.

Вот нашел
Любой предмет находится на сервере и только на нем.

Клиент только отображает то, что происходит на сервере, а так же передает ваши желания, что вы хотите сделать (идти, атаковать, выбросить предмет) а сервер уже принимает решение на основании информации находящейся ТОЛЬКО на сервере.

ItemID предмета - это грубо говоря номер предмета из списка, с описанием его характеристик. Это не 'физический' предмет, это только описание вида предмета.

ObjectID предмета - это некий назначенный номер 'физически' присутствующего предмета на сервере, клиент потом оперирует этим предметом с сервером посредством этого ObjectID.

Этот ObjectID клиент получает от сервера по спискам (отдельными пакетами, либо списком - не важно) где проходит информация о предмете и его назначенный ObjectID.
ObjectID назначается сервером, и меняется от сессии к сессии , а иногда и в процессе сессии (изменения/улучшения предмета).


ObjectID игровых, либо не игровых персонажей (PC, NPC) -
это тоже самое, назначенный сервером некий ObjectID по которому в последствии клиент и оперирует персонажем с сервером.
Все остальное действительно как и с ObjectID предметов.

alexteam
23.01.2010, 11:41
В том то и дело, что это обжект айди, а не итем айди, который прописан в итем листе, в который ты меня отсылаешь.
я тебя отправил смотреть пакет "итемлист" потому что с итемлиста его можно получить:

Type:0x11 (ItemList)
Size: 3909+2
Recive time: 09:39:12:842
0002 h ShowWindow: 0 (0x0000)
0004 h ItemCount: 61 (0x003D)

0006 h ItemTypeID: 4 (0x0004)
0008 d [B]ObjectID: 268480900 (0x1000B184)
000C d ItemID: I Кольцо Испытания ID:3239 (0x0CA7) (0x00000CA7)
0010 d LocationSlot: 0 (0x00000000)
0014 q Amount: 1
001C h ItemType2: 3 (0x0003)
001E h CustomType1: 0 (0x0000)
0020 h isEquipped: 0 (0x0000)
0022 d BodyPart: 0 (0x00000000)
0026 h EnchantLevel: 0 (0x0000)
0028 h CustType2: 0 (0x0000)
002A d AugmentID: 0 (0x00000000)
002E d Mana: -1 (0xFFFFFFFF)
0032 h AttackElement: 65534 (0xFFFE)
0034 h AttackElementPower: 0 (0x0000)
0036 h FireDefElementPower: 0 (0x0000)
0038 h WaterDefElementPower: 0 (0x0000)
003A h WindDefElementPower: 0 (0x0000)
003C h EarthDefElementPower: 0 (0x0000)
003E h HolyDefElementPower: 0 (0x0000)
0040 h UnholyDefElementPower: 0 (0x0000)
0042 d RemainingTime: -1 (0xFFFFFFFF)
[End of repeat block 1/61]


0046 h ItemTypeID: 4 (0x0004)
0048 d [B]ObjectID: 268482745 (0x1000B8B9)
004C d ItemID: Желтая Наживка - 2 ID:6526 (0x197E) (0x0000197E)
0050 d LocationSlot: 0 (0x00000000)
0054 q Amount: 182
005C h ItemType2: 5 (0x0005)
005E h CustomType1: 0 (0x0000)
0060 h isEquipped: 0 (0x0000)
0062 d BodyPart: 256 (0x00000100)
0066 h EnchantLevel: 0 (0x0000)
0068 h CustType2: 0 (0x0000)
006A d AugmentID: 0 (0x00000000)
006E d Mana: -1 (0xFFFFFFFF)
0072 h AttackElement: 65534 (0xFFFE)
0074 h AttackElementPower: 0 (0x0000)
0076 h FireDefElementPower: 0 (0x0000)
0078 h WaterDefElementPower: 0 (0x0000)
007A h WindDefElementPower: 0 (0x0000)
007C h EarthDefElementPower: 0 (0x0000)
007E h HolyDefElementPower: 0 (0x0000)
0080 h UnholyDefElementPower: 0 (0x0000)
0082 d RemainingTime: -1 (0xFFFFFFFF)
[End of repeat block 2/61]

Chipitos
23.01.2010, 20:02
Проще делать чуток по другому,пытатся здать манор,когда он еще выключен,отлавить пакет и отредактировать по своему вкусу.Обжект ид прилагается

Yegor
23.01.2010, 20:49
Проще делать чуток по другому,пытатся здать манор,когда он еще выключен,отлавить пакет и отредактировать по своему вкусу.Обжект ид прилагается

Нет не проще. Моя программа, написанная правда под хелбаунд, генерирует пакет сдачи именно на основе пакета ItemList как писалось выше. Ничего сложного тут нет.

Нам главное определится в какой город (manorID)
и сколько будем сдавать.