Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Опкоды (http://mangos.ytdb.ru/forumdisplay.php?f=36)
-   -   SMSG_LOOT_RESPONSE из 4.0.6а (http://mangos.ytdb.ru/showthread.php?t=3793)

HuntsMan 22.02.2011 16:43

SMSG_LOOT_RESPONSE из 4.0.6а
 
Разобрал структуру этого пакета. Парсит его с оффа нормально, без всяких косяков. Сделал интрепретацию его на сервере, проверяю тем же парсером - никаких проблем. Но в игре при попытке облутать моба ничего не происходит. Я уже все перепробывал. Кто в курсе, в 4.0.6а сменилось ещё что-то кроме него?

Пример с офа:
Код:

Guid:      (High: Unit (0xF130), Entry: 26615, Counter: 3,446,852)
LootType:  1
Money:      0
Count:      2
unk:        0
==============================
 
 Counter:          0
 itemid:            33549
 itemCount:        1
 itemModel:        18092
 randomSuffix:      1063450304
 randomPropertyId:  0
 Slot:              0
 
==============================
 
 Counter:          1
 itemid:            43013
 itemCount:        1
 itemModel:        53859
 randomSuffix:      1331885760
 randomPropertyId:  0
 Slot:              0

На локале:
Код:

Guid:      (High: Unit (0xF130), Entry: 96, Counter: 96,475)
LootType:  1
Money:      0
Count:      3
unk:        0
==============================
 
 Counter:          0
 itemid:            36804
 itemCount:        1
 itemModel:        3429
 randomSuffix:      0
 randomPropertyId:  0
 Slot:              0
 
==============================
 
 Counter:          1
 itemid:            34736
 itemCount:        1
 itemModel:        50873
 randomSuffix:      0
 randomPropertyId:  0
 Slot:              0
 
==============================
 
 Counter:          2
 itemid:            36805
 itemCount:        1
 itemModel:        26546
 randomSuffix:      0
 randomPropertyId:  0
 Slot:              0

Про энтри на локале ничего не говорите, это особая магия =)))

alien 23.02.2011 01:10

Первое что приходит в голуву. Может randomSuffix!=0 должно быть??

Energy 23.02.2011 07:18

randomSuffix это ид шаблона, по которому выдаются характеристики вещам, на которых написано <random enchantment>, кажется к делу это не имеет отношения.

HuntsMan 23.02.2011 10:23

Ну да. Первое что пришло в голову, что размер не правильный при формировании пакета выставил. Но потом это отпало, т.к. ядро динамически буфер для пакета расширяет, и данные отправляет корректно.

Самое странное то, что клиент этот пакет переваривать не захотел. Т.к. использовался инжекторный снифер для проверки, и он не хватает те пакеты, которые клиент не захотел кушать. И само собой этого пакета в снифе не было. Но в world.log он был. Не пойму что может быть не так :(

LordJZ 23.02.2011 13:57

Не на то соединение послали :) (а-ля клиент не пропатчили)

HuntsMan 23.02.2011 14:30

Клиент пропатчен. Остальное то все нормально работает.

RomanRom2 23.02.2011 16:08

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

HuntsMan 23.02.2011 16:34

Цитата:

Сообщение от RomanRom2 (Сообщение 19465)
а не может ли это быть связано с вашими "магическими" ентри?
у близов время от времени на ентри чтото бывает завязано. потом они переделывают это. но такое бывает. еще у них бывает, что старшая часть гуида должна чему нибудь соответствовать. были времена, когда они ентри юнита клали в старшую часть гуида и без этого ничего толком не работало.
в общем попробуйте для начала воспроизвести в точности с оригиналом (снифом), потом будем думать что с этим делать.

Скорее всего не в этом дело. Просто энтри парсер получает основываясь на инфе о гуиде, которую он получает из других пакетов, а в парсер я затолкал только 1 этот пакет, поэтому неправильный ентри.

HuntsMan 24.02.2011 06:22

Да и гуид с офа нормально читает. А он там не пакованный.

HuntsMan 24.02.2011 20:01

Похоже alien прав. Изучил этот RandomSuffix, оказалось что RandomSuffix не может быть равен нулю, или RandomProperty. У меня в базе 45к предметов у которых и то и то равно 0. Скорее всего в этом дело. Решил отпарить с офа, и тут возникла такая проблема:
Код:

UPDATE `item_template` SET `RandomProperty` = 0, `RandomSuffix` = -2048030848 WHERE `entry` = 3770;
UPDATE `item_template` SET `RandomProperty` = 0, `RandomSuffix` = 1590782464 WHERE `entry` = 3770;

Т.е. для каждого лута, пусть даже и одного итема получается разный RandomSuffix. Отсюда появился вопрос: как он может формироватся на офе? Посмотрел у нас в коде, там он просто берется из базы, без всяких доработок.

TOM_RUS 24.02.2011 20:05

Цитата:

Сообщение от HuntsMan (Сообщение 19495)
Посмотрел у нас в коде, там он просто берется из базы, без всяких доработок.

Разве это не генерируется случайным образом во время лута?

HuntsMan 24.02.2011 20:27

Точно :) Тогда попробую отпарсить пакет SMSG_ITEM_QUERY_SINGLE_RESPONSE

add: А вот это уже более интерестно :)
Код:

UPDATE `item_template` SET `RandomProperty` = 3050354896, `RandomSuffix` = 46 WHERE `entry` = 59230;
UPDATE `item_template` SET `RandomProperty` = 2362555344, `RandomSuffix` = 3201349584 WHERE `entry` = 58149;
UPDATE `item_template` SET `RandomProperty` = 3151017168, `RandomSuffix` = 3491794897 WHERE `entry` = 43236;
UPDATE `item_template` SET `RandomProperty` = 2362555344, `RandomSuffix` = 3201349584 WHERE `entry` = 47499;
UPDATE `item_template` SET `RandomProperty` = 3501576320, `RandomSuffix` = 3501510838 WHERE `entry` = 59029;

Было добыто из SMSG_ITEM_QUERY_SINGLE_RESPONSE. Похоже это то, что нужно :)

RomanRom2 24.02.2011 21:31

чото вы напутали с этими пропертями и суффиксами. вообще говоря проперти это некое ID, которое вроде даже где то в дбц было в виде вариаций. и грубо говоря это ID от нуля до некоего конечного числа, типа 100 или может 1000, не помню.

а те громадные числа я перевел в hex и оно мне TimeStamp больше напоминает. да и откуда вы взяли рандом проперти поле в SMSG_ITEM_QUERY_SINGLE_RESPONSE, его там от родясь никогда не было. это апдейт поле итема:
ITEM_FIELD_RANDOM_PROPERTIES_ID = 59; // 001 - [1] Integer - [001] PUBLIC

вот еще есть поле ITEM_FIELD_PROPERTY_SEED, вот тут более вероятно встретить таймстап, кажется это он и есть (не помню уж). но опять же, это А9, а не SMSG_ITEM_QUERY_SINGLE_RESPONSE.

покажите дамп всего пакета.

но вообще не о том говорим. и да, если апдейт поле цельное (не составные байты или слова), если оно integer и если оно равно нулю, то такое поле не передается в апдейтпакете. это такое правило. нельзя передавать зануленные поля.

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

  // лут-лист
  pkt := TPkt.InitCmd(SMSG_LOOT_RESPONSE);
  pkt.AddInt64(LootObject.woGuid);

//  LOOT_TYPE_CORPSE = 1;
//  LOOT_TYPE_SKINNING = 2;
//  LOOT_TYPE_FISHING = 3;
  pkt.AddByte(L.LootType); // тип лута
  pkt.AddLong(L.Coinage); // деньги
  pkt.AddByte(count); // сколько итемов в списке

  count:=0;
  for i:=1 to MAX_LOOT_ITEMS do
    if (L.Slot[i].Entry<>0)and(ItemTPL[L.Slot[i].Entry]<>nil) then
      begin
        pkt.AddByte(count); // номер итема по порядку, он потом будет фигурировать в лут-пакетах рассылки
        inc(count);
        pkt.AddLong(L.Slot[i].Entry); // item_id
        k:=random(ItemTPL[L.Slot[i].Entry].itMaxStackCount);
        if k<1 then k:=1;
        if k>ItemTPL[L.Slot[i].Entry].itMaxStackCount then k:=ItemTPL[L.Slot[i].Entry].itMaxStackCount;
        pkt.AddLong(k); // item_count
        pkt.AddLong(ItemTPL[L.Slot[i].Entry].itDisplayInfoID); // item_model
        pkt.AddLong(L.Slot[i].PropertySEED); // seed
        pkt.AddLong(L.Slot[i].RandomPropertyID); // RandomPropertyID

        // 0 - norm
        // 1 - that item is still being rolled for
        // 2 - нет опкода, нет сообщения, нельзя взять предмет

        // 1. статус итема может быть установлен командой "START ROLL"
        // 2. нужно выставить статус 2, если этот итем >=Trashold,
        //    что бы итем невозможно было просто взять,
        //    а можно передевать только через список плееров у мастерлутера или через розыгрыш need/greed
        pkt.AddByte(L.Slot[i].Status);
      end;

  sender.SockSend(pkt);


HuntsMan 24.02.2011 21:48

Ну не знаю. Я строил обработчик пакета SMSG_ITEM_QUERY_SINGLE_RESPONSE по примеру из Кактуса. Клиент такие пакеты понимал нормально. http://pastebin.com/wDGtdqYH

Правда в парсере я его малость поправил, и получилось такое: http://pastebin.com/rcf5xztf
Вроде как парсит нормально.

По поводу SMSG_LOOT_RESPONSE. Да, трабла именно в нем, но структура помоему соответствует оффу. http://pastebin.com/LSgVzGE4

Есть такая мысль, что близзы поменяли алгоритм формирования randomSuffix, из-за чего клиент его не хочет принимать.

Цитата:

судя по вашему разобранному представлению этот пакет не менялся со времен царя гороха.
В 4.0.3 было добавлено новое поле. В 4.0.6 сменили тип у count (вроде бы :))

RomanRom2 24.02.2011 22:14

:ireful2:
вот только что сказал, что нет никакого randomSuffix. есть random property id - динамическое поле итема, и есть suffix - статическое поле из респонса (добавлено в 2.0.3).

Ну не знаю. Я строил обработчик пакета SMSG_ITEM_QUERY_SINGLE_RESPONSE по примеру из Кактуса. Клиент такие пакеты понимал нормально. http://pastebin.com/wDGtdqYH
то, что клиент их нормально понимал означает лишь то, что вы угадали с размерностью данных и числом полей, а не то, что всё в порядке :yes3:


Код:

94.        data << pProto->Sheath;
95.        data << pProto->RandomProperty;
96.        data << pProto->RandomSuffix;
97.        data << pProto->ItemSet;

то, что вы называете RandomProperty у меня называется Extra. это тоже не рандом никакой, а некое конечное число. в моей базе числа такие: 849, 1101, 514, 1016, 6273, 6272 и т.п.
RandomSuffix соответственно никакой не Random, а просто Suffix - указатель куда то в дбц на дополнительные фичи итема. это его отличает от "стандартного".

на самом деле Extra как бы по задумке было этим разнообразием. но вот в TBC близзы ввели понятие суффикса и вполне возможно поле Extra позднее стало обозначать что то иное.

в любом случае, это всё - вполне себе конечные числа в районе 1000-9000. ваши громадные значения клиент не может использовать в качестве ссылки (ID) и не может ничего по ним получить. вот и не хавает он такой невалидный пакет. кстати, где вы взяли такие числа? покажите пакет целиком.

и еще, random property id - это и есть suffix, соотвественно выбранный случайным образом (например при луте). на самом деле рандома у близзов никогда никакого не было и нет. но это другая тема.

HuntsMan 24.02.2011 22:42

Цитата:

вот только что сказал, что нет никакого randomSuffix. есть random property id - динамическое поле итема, и есть suffix - статическое поле из респонса (добавлено в 2.0.3).
Черт, я запутался уже в этих названиях :(
Итак, как я понял это дело завязано на 2х dbc: RandPropPoints.dbc (в котором идут параметры рандом статов) и ItemRandomSuffix.dbc (в котором идет энтри, и имя суффикса (из-за названия файла такое название и поля :)))

Цитата:

то, что вы называете RandomProperty у меня называется Extra. это тоже не рандом никакой, а некое конечное число. в моей базе числа такие: 849, 1101, 514, 1016, 6273, 6272 и т.п.
Т.е. по этому числу ищутся параметры в ItemRandomSuffix.dbc, так? А по суффиксу из RandPropPoints.dbc?

Цитата:

кстати, где вы взяли такие числа? покажите пакет целиком.
Числа были нормальные. Сейчас вручную просмотрел, и оказывается на некоторых итемах данные съезжают :( Вот пример: http://pastebin.com/LQELX8cv и съехало вот так: http://pastebin.com/VEQ7pZRU
Походу где-то что-то упустил :(

RomanRom2 24.02.2011 22:59

Цитата:

Сообщение от HuntsMan (Сообщение 19507)
Черт, я запутался уже в этих названиях :(
Итак, как я понял это дело завязано на 2х dbc: RandPropPoints.dbc (в котором идут параметры рандом статов) и ItemRandomSuffix.dbc (в котором идет энтри, и имя суффикса (из-за названия файла такое название и поля :)))

ну не стоит же все так буквально вопринимать, думать то тоже надо иногда :mda:
ItemRandomSuffix - имеется ввиду, что в этой таблице собраны рандомы суффиксов (еще одно подверждение, что никакого рандома у близов нет, все заранее просчитано).

Цитата:

Сообщение от HuntsMan (Сообщение 19507)
Т.е. по этому числу ищутся параметры в ItemRandomSuffix.dbc, так? А по суффиксу из RandPropPoints.dbc?

я не могу сказать, где что сейчас ищется. давайте разбираться.

Цитата:

Сообщение от HuntsMan (Сообщение 19507)
Числа были нормальные. Сейчас вручную просмотрел, и оказывается на некоторых итемах данные съезжают :(
Походу где-то что-то упустил :(

ну. конечно. мусор сплошняком :pardon:
для начала давайте пофиксим размерность пакета и поставим все поля на свои места, если это необходимо - введем новые unk-и.

и еще, поля в основном int, а не uint:
11.Allowable Class: 4294967295
12.Allowable Race: 4294967295
эти и подобные поля должны быть равны минус еденице.

HuntsMan 24.02.2011 23:07

Цитата:

ItemRandomSuffix - имеется ввиду, что в этой таблице собраны рандомы суффиксов (еще одно подверждение, что никакого рандома у близов нет, все заранее просчитано).
Помоему близзы имели ввиду что рандомные будут статы у предметов, а не номера :)
Цитата:

ну. конечно. мусор сплошняком
для начала давайте пофиксим размерность пакета и поставим все поля на свои места, если это необходимо - введем новые unk-и.
Я заметил такую закономерность: если итем не имеет спеллов, то по имеющейся структуре он парсится более-менее нормально. Но если есть хоть один спелл, то размер пакета вырастает на 62 байта. Идой я особо не владею (что плохо :().
Цитата:

11.Allowable Class: 4294967295
12.Allowable Race: 4294967295
эти и подобные поля должны быть равны минус еденице.
Заменить просто лень было :) Поправлю, спасибо :)

RomanRom2 24.02.2011 23:19

Цитата:

Сообщение от HuntsMan (Сообщение 19511)
Помоему близзы имели ввиду что рандомные будут статы у предметов, а не номера :)

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

Цитата:

Сообщение от HuntsMan (Сообщение 19511)
Я заметил такую закономерность: если итем не имеет спеллов, то по имеющейся структуре он парсится более-менее нормально. Но если есть хоть один спелл, то размер пакета вырастает на 62 байта.

у меня больше не открываются ваши ссылки на pastebin (удалены или протухли?). такие вещи лучше постить прямо в форум, не надо стесняться. отсюда уж точно никуда не денуться. обернуть их в тег CODE и все.
у меня подозрение, что вы неправильно или вообще не парсите счетчик спеллов итема. но вроде как у спеллов не было счетчика, был у бонусов. покажите дамп пакета.

ЗЫ. блин, надо какой то irc что ли...

HuntsMan 24.02.2011 23:26

Цитата:

я так не думаю, на близзов это не похоже. они часто делают "рандомы" среди готовых записей (строки таблиц). но никогда еще не делали рандомы у значений полей этих записей.
Я это и имел ввиду :)

Вот к примеру отпарсенный итем с спеллом:
Код:

Entry:                      8075
Name:                        Сотворенный батон
Quality:                    1
Flags:                      2097154
Flags2:                      40960
Buy Price:                  0
Sell Price:                  0
Inventory Type:              0
Allowable Class:            -1
Allowable Race:              -1
Item Level:                  45
Required Level:              35
Required Skill:              0
Required SkillRank:          0
Required Spell:              0
Required Honor Rank:        0
Required City Rank:          0
Required Reputation Faction: 0
Required Reputation Rank:    0
Max Count:                  0
Stackable:                  20
Container Slots:            0
 * Item Mod Type 0:          0
 * Item Mod Value 0:        0
 * Item Mod Type 1:          0
 * Item Mod Value 1:        0
 * Item Mod Type 2:          0
 * Item Mod Value 2:        0
 * Item Mod Type 3:          0
 * Item Mod Value 3:        0
 * Item Mod Type 4:          0
 * Item Mod Value 4:        0
 * Item Mod Type 5:          0
 * Item Mod Value 5:        0
 * Item Mod Type 6:          0
 * Item Mod Value 6:        0
 * Item Mod Type 7:          0
 * Item Mod Value 7:        0
 * Item Mod Type 8:          0
 * Item Mod Value 8:        0
 * Item Mod Type 9:          0
 * Item Mod Value 9:        0
Scaling Stat Distribution:  0
Scaling Stat Value:          0
Armor:                      0
Delay:                      0
Ammo Type:                  0
Ranged Mod Range:            0

 * Spell ID 1:              1129
 * Spell Trigger 1:          0
 * Spell Charges 1:          0
 * Spell Cooldown 1:        0
 * Spell Category 1:        0
 * Spell Category Cooldown 1:0

 * Spell ID 2:              0
 * Spell Trigger 2:          0
 * Spell Charges 2:          0
 * Spell Cooldown 2:        0
 * Spell Category 2:        -1
 * Spell Category Cooldown 2:0

 * Spell ID 3:              0
 * Spell Trigger 3:          0
 * Spell Charges 3:          0
 * Spell Cooldown 3:        0
 * Spell Category 3:        -1
 * Spell Category Cooldown 3:-1

 * Spell ID 4:              -1
 * Spell Trigger 4:          -1
 * Spell Charges 4:          11
 * Spell Cooldown 4:        0
 * Spell Category 4:        0
 * Spell Category Cooldown 4:0

 * Spell ID 5:              0
 * Spell Trigger 5:          1000
 * Spell Charges 5:          -1
 * Spell Cooldown 5:        -1
 * Spell Category 5:        -1
 * Spell Category Cooldown 5:-1

Bonding:                      0
Description:                 
Page Text:                    0
Language ID:                  0
Page Material:                0
Start Quest:                  0
Lock ID:                      0
Material:                    4294967295
Sheath:                      0
Random Property:              0
Random Suffix:                0
Block:                        0
Itemset:                      0
Max Durability:              0
Area:                        0
Map:                          0
Bag Family:                  0
Totem Category:              0

 * Socket Color 1:            0
 * Socket Content 1:          0

 * Socket Color 2:            0
 * Socket Content 2:          0

 * Socket Color 3:            0
 * Socket Content 3:          0

Socket Bonus:                0
Gem Properties:              0
Required Disenchant Skill:    0
Armor Damage Modifier:        0
Duration:                    0
Item Limit Category:          0
Holiday ID:                  0


HuntsMan 24.02.2011 23:27

И дамп:
Код:

Packet SMSG, SMSG_ITEM_QUERY_SINGLE_RESPONSE (3150), len 564, Flags: None
╔════════╦═════════════════════════════════════════════════╦════════════════╗
║ OFFSET ║  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F ║0123456789ABCDEF║
╠════════╬═════════════════════════════════════════════════╬════════════════╣
║00000000║ 70 58 37 40 8B 1F 00 00 24 02 00 00 8B 1F 00 00 ║pX7@....$.......║
║00000010║ 01 00 00 00 02 00 20 00 00 A0 00 00 00 00 00 00 ║...... .........║
║00000020║ 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF ║................║
║00000030║ 2D 00 00 00 23 00 00 00 00 00 00 00 00 00 00 00 ║-...#...........║
║00000040║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000050║ 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 ║................║
║00000060║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000070║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000080║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000090║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000A0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000B0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000C0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000D0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000E0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000F0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000100║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000110║ 69 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║i...............║
║00000120║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000130║ 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 ║................║
║00000140║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000150║ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ║................║
║00000160║ 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000170║ 00 00 00 00 E8 03 00 00 FF FF FF FF FF FF FF FF ║................║
║00000180║ FF FF FF FF FF FF FF FF 00 00 00 00 21 00 D0 A1 ║............!...║
║00000190║ D0 BE D1 82 D0 B2 D0 BE D1 80 D0 B5 D0 BD D0 BD ║................║
║000001A0║ D1 8B D0 B9 20 D0 B1 D0 B0 D1 82 D0 BE D0 BD 00 ║.... ...........║
║000001B0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000001C0║ 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF ║................║
║000001D0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000001E0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000001F0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000200║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000210║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000220║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000230║ 4E E5 9B 91 -- -- -- -- -- -- -- -- -- -- -- -- ║N...............║
╚════════╩═════════════════════════════════════════════════╩════════════════╝

А на это начинает съезжать размер:
Код:

-- Read 552 bytes, have 614
Entry:                      32453
Name:                        Слезы Звезд
Quality:                    1
Flags:                      2097152
Flags2:                      40964
Buy Price:                  10000
Sell Price:                  125
Inventory Type:              0
Allowable Class:            -1
Allowable Race:              -1
Item Level:                  75
Required Level:              65
Required Skill:              0
Required SkillRank:          0
Required Spell:              0
Required Honor Rank:        0
Required City Rank:          0
Required Reputation Faction: 0
Required Reputation Rank:    0
Max Count:                  0
Stackable:                  20
Container Slots:            0
 * Item Mod Type 0:          0
 * Item Mod Value 0:        0
 * Item Mod Type 1:          0
 * Item Mod Value 1:        0
 * Item Mod Type 2:          0
 * Item Mod Value 2:        0
 * Item Mod Type 3:          0
 * Item Mod Value 3:        0
 * Item Mod Type 4:          0
 * Item Mod Value 4:        0
 * Item Mod Type 5:          0
 * Item Mod Value 5:        0
 * Item Mod Type 6:          0
 * Item Mod Value 6:        0
 * Item Mod Type 7:          0
 * Item Mod Value 7:        0
 * Item Mod Type 8:          0
 * Item Mod Value 8:        0
 * Item Mod Type 9:          0
 * Item Mod Value 9:        0
Scaling Stat Distribution:  0
Scaling Stat Value:          0
Armor:                      0
Delay:                      0
Ammo Type:                  0
Ranged Mod Range:            0

 * Spell ID 1:              27089
 * Spell Trigger 1:          0
 * Spell Charges 1:          0
 * Spell Cooldown 1:        0
 * Spell Category 1:        0
 * Spell Category Cooldown 1:0

 * Spell ID 2:              0
 * Spell Trigger 2:          0
 * Spell Charges 2:          0
 * Spell Cooldown 2:        0
 * Spell Category 2:        -1
 * Spell Category Cooldown 2:0

 * Spell ID 3:              0
 * Spell Trigger 3:          0
 * Spell Charges 3:          0
 * Spell Cooldown 3:        0
 * Spell Category 3:        -1
 * Spell Category Cooldown 3:-1

 * Spell ID 4:              -1
 * Spell Trigger 4:          -1
 * Spell Charges 4:          59
 * Spell Cooldown 4:        0
 * Spell Category 4:        0
 * Spell Category Cooldown 4:0

 * Spell ID 5:              0
 * Spell Trigger 5:          1000
 * Spell Charges 5:          -1
 * Spell Cooldown 5:        -1
 * Spell Category 5:        -1
 * Spell Category Cooldown 5:-1

Bonding:                      0
Description:                 
Page Text:                    3050344912
Language ID:                  3050340561
Page Material:                3184572112
Start Quest:                  3491806928
Lock ID:                      3502166196
Material:                    3515601329
Sheath:                      549376130
Random Property:              -1143950128
Random Suffix:                3491794897
Block:                        0
Itemset:                      3502166194
Max Durability:              3502100661
Area:                        3515601341
Map:                          -2033115003
Bag Family:                  -1143949872
Totem Category:              -1177504304

 * Socket Color 1:            46
 * Socket Content 1:          0

 * Socket Color 2:            0
 * Socket Content 2:          0

 * Socket Color 3:            0
 * Socket Content 3:          196608

Socket Bonus:                0
Gem Properties:              0
Required Disenchant Skill:    0
Armor Damage Modifier:        0
Duration:                    0
Item Limit Category:          0
Holiday ID:                  0


HuntsMan 24.02.2011 23:28

Код:

Packet SMSG, SMSG_ITEM_QUERY_SINGLE_RESPONSE (3150), len 614, Flags: None
╔════════╦═════════════════════════════════════════════════╦════════════════╗
║ OFFSET ║  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F ║0123456789ABCDEF║
╠════════╬═════════════════════════════════════════════════╬════════════════╣
║00000000║ 70 58 37 40 C5 7E 00 00 56 02 00 00 C5 7E 00 00 ║pX7@.~..V....~..║
║00000010║ 01 00 00 00 00 00 20 00 04 A0 00 00 10 27 00 00 ║...... ......'..║
║00000020║ 7D 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF ║}...............║
║00000030║ 4B 00 00 00 41 00 00 00 00 00 00 00 00 00 00 00 ║K...A...........║
║00000040║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000050║ 00 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00 ║................║
║00000060║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000070║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000080║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000090║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000A0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000B0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000C0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000D0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000E0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║000000F0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000100║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000110║ D1 69 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║.i..............║
║00000120║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000130║ 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 ║................║
║00000140║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000150║ FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ║................║
║00000160║ 3B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║;...............║
║00000170║ 00 00 00 00 E8 03 00 00 FF FF FF FF FF FF FF FF ║................║
║00000180║ FF FF FF FF FF FF FF FF 00 00 00 00 15 00 D0 A1 ║................║
║00000190║ D0 BB D0 B5 D0 B7 D1 8B 20 D0 97 D0 B2 D0 B5 D0 ║........ .......║
║000001A0║ B7 D0 B4 00 00 00 00 00 00 00 3D 00 D0 91 D0 B5 ║..........=.....║
║000001B0║ D1 80 D0 B5 D0 B6 D0 BD D0 BE 20 D0 B4 D0 BE D0 ║.......... .....║
║000001C0║ B1 D1 8B D1 82 D0 BE 20 D0 B4 D0 BB D1 8F 20 D0 ║....... ...... .║
║000001D0║ B2 D0 BE D0 B5 D0 BD D0 BD D1 8B D1 85 20 D1 86 ║............. ..║
║000001E0║ D0 B5 D0 BB D0 B5 D0 B9 2E 00 00 00 00 00 00 00 ║................║
║000001F0║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 ║................║
║00000200║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000210║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000220║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000230║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000240║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000250║ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ║................║
║00000260║ 00 00 4E E5 9B 91 -- -- -- -- -- -- -- -- -- -- ║..N.............║
╚════════╩═════════════════════════════════════════════════╩════════════════╝

Спеллы парсю вот так:
Код:

                for (i = 0; i < 5; i++)
                {
                    this.it.SpellList[i].SpellID = gr.ReadInt32();
                    this.it.SpellList[i].SpellTrigger = gr.ReadInt32();
                    this.it.SpellList[i].SpellCharges = gr.ReadInt32();
                    this.it.SpellList[i].SpellCooldown = gr.ReadInt32();
                    this.it.SpellList[i].SpellCategory = gr.ReadInt32();
                    this.it.SpellList[i].SpellCategoryCooldown = gr.ReadInt32();
                }

Вроде как их кол-во равно 5, и вроде не менялось :)

Цитата:

такие вещи лучше постить прямо в форум, не надо стесняться. отсюда уж точно никуда не денуться. обернуть их в тег CODE и все.
Цитата:

Вы ввели слишком длинный текст (15151 символов). Пожалуйста, сократите его до 10000 символов.
:(

Цитата:

ЗЫ. блин, надо какой то irc что ли...
ICQ, Jabber, Skype :) Любой IM на ваш вкус :)

RomanRom2 25.02.2011 00:35

ну что я могу сказать, парсинг правильный. формат правильный.
а вот дамп неправильный. минус поставьте тому сниферу, который это отснифал. поля тут реально съехавшие прямо в дампе. у этого итема один спелл.
http://wowcore.ru/tmp/tpl_item_32453.gif

а, ммм... сейчас обратил внимание, что поля уехавшие и у первого дампа тоже.
быть может это просто формат пакета поменялся :)

Добавлено через 35 минут
поразбирал дамп итема 32443, начиная со спеллов.
по формату видно, что количество полей совпадает. 6 полей на каждый спелл. но содержимое полей заставляет задуматься о том, что дамп явно кривой. видны уехавшие вниз поля данного спелла, а между ними какой то мусор в виде нулей и "-1".

Код:

D1 69 00 00 1 m_spellID
00 00 00 00 2 m_spellTrigger
00 00 00 00 3 m_spellCharges
00 00 00 00 4 m_spellCooldown
00 00 00 00 5 m_spellCategory
00 00 00 00 6 m_spellCategoryCooldown
00 00 00 00  1
00 00 00 00  2
00 00 00 00  3
00 00 00 00  4
FF FF FF FF  5
00 00 00 00  6
00 00 00 00 1
00 00 00 00 2
00 00 00 00 3
00 00 00 00 4
FF FF FF FF 5
FF FF FF FF 6
FF FF FF FF  1
FF FF FF FF  2
3B 00 00 00  3
00 00 00 00  4
00 00 00 00  5
00 00 00 00  6
00 00 00 00 1
E8 03 00 00 2
FF FF FF FF 3
FF FF FF FF 4
FF FF FF FF 5
FF FF FF FF 6
00 00 00 00 m_bonding

15 00
D0 A1 D0 BB D0 B5 D0 B7 D1 8B 20 D0 97 D0 B2 D0 B5 D0 B7 D0 B4 00
00 00 00 00
00 00 3D 00
D0 91 D0 B5 D1 80 D0 B5 D0 B6 D0 BD D0 BE 20 D0 B4 D0 BE D0
B1 D1 8B D1 82 D0 BE 20 D0 B4 D0 BB D1 8F 20 D0
B2 D0 BE D0 B5 D0 BD D0 BD D1 8B D1 85 20 D1 86
D0 B5 D0 BB D0 B5 D0 B9 2E 00

00 00 00 00 m_pageText
00 00 00 00 m_languageID
00 00 00 00 m_pageMaterial
00 00 00 00 m_startQuestID
00 00 00 00 m_lockID
03 00 00 00 m_material
00 00 00 00
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 4E E5 9B 91

еще непонятка с m_description. ну видно что юникод, но какие то левые нули в середине и странные коды "символов". толи я что то не знаю о юникоде, толи тут два m_description, толи тут опять мусор.

до тройки, которая является m_material поля совпадают. дальше не парсил. но тем не менее, непонятное значение в последнем интовом поле, это не инт, не флоат, а какой то... "мусорный рандом" :yes3:

еще там ближе к концу должны быть поле extended_cost, равное 1564 и поле req_disenchant_skill, которое равно -1. но в этих полях я не уверен. уверен лишь в том, что значения полей должны быть в дампе, если только эти поля не убрали из пакета. сразу оба.

у меня назрел вопрос:
откуда и каким образом был сделан снифф?

Добавлено через 17 минут
не удержался, распарсил концовку.

Код:

00 00 00 00 page_text_id
00 00 00 00 page_language_id
00 00 00 00 page_material
00 00 00 00 start_quest
00 00 00 00 lock_id
03 00 00 00 lock_material
00 00 00 00 sheath
00 00 00 00 extra
00 00 00 00 suffix_id
00 00 00 00 block
00 00 00 00 set_id
00 00 00 00 max_duarbility
00 00 00 00 area
00 00 00 00 mab
00 00 00 00 bag_sub_class
00 00 00 00 tool_id
00 00 00 00 sock_id_1
00 00 00 00 sock_unk_1
00 00 00 00 sock_id_2
00 00 00 00 sock_unk_2
00 00 00 00 sock_id_3
00 00 00 00 sock_unk_3
00 00 00 00 sock_bonus
00 00 00 00 gem_prop
00 00 00 00 extended_cost
00 00 00 00 req_arena_rank
00 00 00 00 req_disenchant_skill
00 00 00 00 armor_damage_mod
00 00 00 00 exist_duration
00 00 00 00 item_limit_category
4E E5 9B 91 holiday_id

названия полей набил руками в соответствии с одним из последних сандбоксов, что я делал для катаклизма, не помню какой билд. т.е. размерность вроде как совпадает, теперь только вопрос, разве такие holiday_id бывают? :) в вашем парсинге не хватает двух полей. в связи с этим еще один вопрос: что за код и формат вы используете? что-то явно устаревшее.

HuntsMan 25.02.2011 05:57

Использую этот инжектор:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 50 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Насчет неправильного дампа не уверен, снифер ещё ни разу в плане фрагментации пакетов не подводил :)
Цитата:

еще там ближе к концу должны быть поле extended_cost, равное 1564 и поле req_disenchant_skill, которое равно -1. но в этих полях я не уверен. уверен лишь в том, что значения полей должны быть в дампе, если только эти поля не убрали из пакета. сразу оба.
Помоему extended_cost в этом пакете близы давно уже не шлют :)

Цитата:

что-то явно устаревшее.
Формат да, он страшный :) Но альтернативы пока что нет :( Сейчас с другом пишем свой снифер, но там пока что застряли на фрагментировании пакетов.

RomanRom2 25.02.2011 11:20

еще я тут подумал, что раз доверие к сниферу некоторое имеется, что раз другие пакеты дампятся нормально, значит так кардинально сменился формат SMSG_ITEM_QUERY_SINGLE_RESPONSE. значит спеллов там теперь не пять, а один, но полей по нему стало в 5 раз больше. было 6, стало 30. это само по себе не удивительно, такие манипуляции с данными близы проводят иногда. удивляет только то, что полей для одного сраненького спелла у одного сраненького итема стало в 5 раз больше. чем по сути экономии в байтах никакой и не сделали. это всё удивляет.

насчет extended_cost я ж говорю, я не уверен. я уверен только в том, что по количеству полей этот кусок дампа совпал. а значит этот extended_cost передается. ну или если он не передается, то передается дополнительно что то еще.

LordJZ 25.02.2011 12:48

HuntsMan у вас неправильно читаются спеллы, на 90% уверен, что еще и статы и сокеты (т.к. код чтения не видел). В 4.0 структура изменилась.

HuntsMan 25.02.2011 16:03

Цитата:

Сообщение от LordJZ (Сообщение 19525)
HuntsMan у вас неправильно читаются спеллы, на 90% уверен, что еще и статы и сокеты (т.к. код чтения не видел). В 4.0 структура изменилась.

Статы читаются нормально, проверено. А по поводу спеллов можно поподробней?)
Цитата:

значит спеллов там теперь не пять, а один, но полей по нему стало в 5 раз больше. было 6, стало 30. это само по себе не удивительно, такие манипуляции с данными близы проводят иногда. удивляет только то, что полей для одного сраненького спелла у одного сраненького итема стало в 5 раз больше. чем по сути экономии в байтах никакой и не сделали. это всё удивляет.
Помоему это нереально, т.к. возьмем туже темную скорбь. К ней привязано несколько спеллов.

LordJZ 25.02.2011 20:59

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 20 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Dvlpr 25.02.2011 22:41

Топик стартер, а ты проверял, вызывается хэндлер этого пакета в клиенте вообще или нет? Например, сейчас я обнаружил, что при 100% правильной структуре и опкоде пакета SMSG_LIST_INVENTORY её хэндлер не вызывается. Причем не только хэнлдер, клиент этот опкод (в NetClient__Process) вообще не видит. При этом в world.log этот пакет тоже логируется.

Пытаюсь разобраться :(

ps: клиент перманентно пропатчен, однако.

HuntsMan 26.02.2011 13:52

Да, это заметил. Мб таже фигня что и с пингом было. Пинг тоже не получилось заставить работать под 4.0.3, хотя структура была индентична офу, но клиент втупую не хотел его обрабатывать...

RomanRom2 28.02.2011 14:15

итак, проблемы с размерностью и форматом данных, в частности по спеллам, успешно разрешены. чем дело то закончилось?

HuntsMan 28.02.2011 14:35

Вобщем кажись дело в гуиде. Никто не подскажет как его формируют близзы в 4.0.6?)

Цитата:

итак, проблемы с размерностью и форматом данных, в частности по спеллам, успешно разрешены. чем дело то закончилось?
Ещё далеко не конец этой длинной и запутанной истории :D

LordJZ 28.02.2011 17:16

Они сместили Entry на байт вверх.

HuntsMan 28.02.2011 19:38

К сожалению дело не в гуиде :( поправил формирование гуида, но ему все равно :(

Но зато хоть терь парсер нормально ентри парсить стал :)
Код:

Guid:      (High: Unit (0xF130), Entry: 49871, Counter: 252,552)
LootType:  1
Money:      0
Count:      2
CurCount:  0
==============================
 
 Index:            0
 ItemId:            62328
 ItemCount:        1
 ItemModelId:      18093
 RandomSuffix:      0
 RandomPropertyId:  0
 Perm:              0
 
==============================
 
 Index:            1
 ItemId:            3300
 ItemCount:        1
 ItemModelId:      6682
 RandomSuffix:      0
 RandomPropertyId:  0
 Perm:              0


LordJZ 28.02.2011 20:06

Скиньте дамп world.log с этим пакетом. (в любом формате)

HuntsMan 28.02.2011 20:36

Код:

<packet date = "1298914451" direction"StoC" opcode = "62348">88DA0300CFC230F1010000000002000078F3000001000000AD46000000000000000000000001E40C0000010000001A1A0000000000000000000000</packet>
Пожалуйста :)

LordJZ 28.02.2011 23:27

RandomSuffix-а нету, единичку туда попробуйте пошлите :) или Counter гуида

HuntsMan 28.02.2011 23:53

Неа, не прокатывает :( Там походу какая-то особая новая формула генерации этого поля, но мой моск пока что её не осилил :(

HuntsMan 01.03.2011 20:43

Тред думаю можно закрыть. Проблема решена хоть и хаком, но все-таки кое как работает :)

RomanRom2 01.03.2011 21:20

нет, не надо закрывать без объяснения. рассказывайте чо там.


Текущее время: 16:51. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS