Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Флудильня (http://mangos.ytdb.ru/forumdisplay.php?f=30)
-   -   Где в коде посмотреть описание поле data для item_instance? (http://mangos.ytdb.ru/showthread.php?t=4712)

KiriX 16.06.2011 22:50

Где в коде посмотреть описание поле data для item_instance?
 
Не хочу создавать новую тему, но сам не осилил:
Где в коде посмотреть описание поле data для item_instance? Чего туда вообще пишется, что-то не нашёл, где это описано =(

Lordronn 16.06.2011 22:53

http://wiki.ytdb.ru/index.php/Item_instance

KiriX 16.06.2011 23:24

Цитата:

Сообщение от Lordronn (Сообщение 23456)

Я, вроде, написал, что мне интересуют исходники, а не вики. В исходниках есть всё, в вики - нет.

LordJZ 16.06.2011 23:34

Код:

enum EObjectFields
{
    OBJECT_FIELD_GUID                        = 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
    OBJECT_FIELD_TYPE                        = 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
    OBJECT_FIELD_ENTRY                        = 0x0003, // Size: 1, Type: INT, Flags: PUBLIC
    OBJECT_FIELD_SCALE_X                      = 0x0004, // Size: 1, Type: FLOAT, Flags: PUBLIC
    OBJECT_FIELD_PADDING                      = 0x0005, // Size: 1, Type: INT, Flags: NONE
    OBJECT_END                                = 0x0006,
};

enum EItemFields
{
    ITEM_FIELD_OWNER                          = OBJECT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
    ITEM_FIELD_CONTAINED                      = OBJECT_END + 0x0002, // Size: 2, Type: LONG, Flags: PUBLIC
    ITEM_FIELD_CREATOR                        = OBJECT_END + 0x0004, // Size: 2, Type: LONG, Flags: PUBLIC
    ITEM_FIELD_GIFTCREATOR                    = OBJECT_END + 0x0006, // Size: 2, Type: LONG, Flags: PUBLIC
    ITEM_FIELD_STACK_COUNT                    = OBJECT_END + 0x0008, // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER
    ITEM_FIELD_DURATION                      = OBJECT_END + 0x0009, // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER
    ITEM_FIELD_SPELL_CHARGES                  = OBJECT_END + 0x000A, // Size: 5, Type: INT, Flags: OWNER, ITEM_OWNER
    ITEM_FIELD_FLAGS                          = OBJECT_END + 0x000F, // Size: 1, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_1_1                = OBJECT_END + 0x0010, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_1_3                = OBJECT_END + 0x0012, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_2_1                = OBJECT_END + 0x0013, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_2_3                = OBJECT_END + 0x0015, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_3_1                = OBJECT_END + 0x0016, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_3_3                = OBJECT_END + 0x0018, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_4_1                = OBJECT_END + 0x0019, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_4_3                = OBJECT_END + 0x001B, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_5_1                = OBJECT_END + 0x001C, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_5_3                = OBJECT_END + 0x001E, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_6_1                = OBJECT_END + 0x001F, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_6_3                = OBJECT_END + 0x0021, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_7_1                = OBJECT_END + 0x0022, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_7_3                = OBJECT_END + 0x0024, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_8_1                = OBJECT_END + 0x0025, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_8_3                = OBJECT_END + 0x0027, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_9_1                = OBJECT_END + 0x0028, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_9_3                = OBJECT_END + 0x002A, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_10_1              = OBJECT_END + 0x002B, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_10_3              = OBJECT_END + 0x002D, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_11_1              = OBJECT_END + 0x002E, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_11_3              = OBJECT_END + 0x0030, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_12_1              = OBJECT_END + 0x0031, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_12_3              = OBJECT_END + 0x0033, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC
    ITEM_FIELD_PROPERTY_SEED                  = OBJECT_END + 0x0034, // Size: 1, Type: INT, Flags: PUBLIC
    ITEM_FIELD_RANDOM_PROPERTIES_ID          = OBJECT_END + 0x0035, // Size: 1, Type: INT, Flags: PUBLIC
    ITEM_FIELD_DURABILITY                    = OBJECT_END + 0x0036, // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER
    ITEM_FIELD_MAXDURABILITY                  = OBJECT_END + 0x0037, // Size: 1, Type: INT, Flags: OWNER, ITEM_OWNER
    ITEM_FIELD_CREATE_PLAYED_TIME            = OBJECT_END + 0x0038, // Size: 1, Type: INT, Flags: PUBLIC
    ITEM_FIELD_PAD                            = OBJECT_END + 0x0039, // Size: 1, Type: INT, Flags: NONE
    ITEM_END                                  = OBJECT_END + 0x003A,
};


KiriX 17.06.2011 08:10

Опять не то =( Там 60 с чем-то значений, а тут описано всего 40 с чем-то =(

Shadez 17.06.2011 10:25

Там какие-то смещения есть для эчантов, кажется. Их в updatefields.h нету (или есть, не помню точно).

Deamon 17.06.2011 11:35

Цитата:

Сообщение от KiriX (Сообщение 23464)
Опять не то =( Там 60 с чем-то значений, а тут описано всего 40 с чем-то =(

0x3A = 58 как бе....

Цитата:

Сообщение от Shadez (Сообщение 23469)
Там какие-то смещения есть для эчантов, кажется. Их в updatefields.h нету (или есть, не помню точно).

А с энчантами там заморочка, что сначало идут два 32-х битных числа, а затем одно 16-ти битное
Код:

    ITEM_FIELD_ENCHANTMENT_1_1                = OBJECT_END + 0x0010, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_1_3                = OBJECT_END + 0x0012, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC


LordJZ 17.06.2011 11:37

Цитата:

Сообщение от Deamon (Сообщение 23470)
0x3A = 58 как бе....



А с энчантами там заморочка, что сначало идут два 32-х битных числа, а затем одно 16-ти битное
Код:

    ITEM_FIELD_ENCHANTMENT_1_1                = OBJECT_END + 0x0010, // Size: 2, Type: INT, Flags: PUBLIC
    ITEM_FIELD_ENCHANTMENT_1_3                = OBJECT_END + 0x0012, // Size: 1, Type: TWO_SHORT, Flags: PUBLIC


Они все хранятся как uint32. И 64-битные гуиды тоже. Size измерятся в 32 битах. Type это внутренний тип поля, мангос это вообще мало использует. Поэтому там 64 значения.

Deamon 17.06.2011 15:59

Цитата:

Сообщение от LordJZ (Сообщение 23471)
Они все хранятся как uint32. И 64-битные гуиды тоже. Size измерятся в 32 битах. Type это внутренний тип поля, мангос это вообще мало использует. Поэтому там 64 значения.

Какие-такие 64 значение?

В энчантах ясно сказано, что по смещению ITEM_FIELD_ENCHANTMENT_1_1 лежи 2 числа типа INT, т.е. 2 32-х битных числа. А по смещению ITEM_FIELD_ENCHANTMENT_1_3 лежит одно число типа TWO_SHORT, т.е. два 16-ти битных числа.

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

LordJZ 17.06.2011 18:18

Цитата:

Сообщение от Deamon (Сообщение 23476)
Какие-такие 64 значение?
...

0x3A + 0x06 = 0x40 = 64 значения в поле data в таблице.

Для наглядности, вот как выглядит массив данных как в памяти, так и в поле data в таблице — я «развернул» массивы для версии 4.1.0:
Код:

OBJECT_FIELD_GUID              = 0x0000, // Size: 2, Type: Long, Flags: Public
OBJECT_FIELD_GUID_HIPART        = 0x0001,
OBJECT_FIELD_TYPE              = 0x0002, // Size: 1, Type: TwoShort, Flags: Public
OBJECT_FIELD_ENTRY              = 0x0003, // Size: 1, Type: Int, Flags: Public
OBJECT_FIELD_SCALE_X            = 0x0004, // Size: 1, Type: Float, Flags: Public
OBJECT_FIELD_DATA              = 0x0005, // Size: 2, Type: Long, Flags: Public
OBJECT_FIELD_DATA_HIPART        = 0x0006,
OBJECT_FIELD_PADDING            = 0x0007, // Size: 1, Type: Int, Flags: None
//ObjectUpdateFields.End        = 0x0008,
ITEM_FIELD_OWNER                = ObjectUpdateFields.End + 0x0000, // Size: 2, Type: Long, Flags: Public
ITEM_FIELD_OWNER_HIPART        = ObjectUpdateFields.End + 0x0001,
ITEM_FIELD_CONTAINED            = ObjectUpdateFields.End + 0x0002, // Size: 2, Type: Long, Flags: Public
ITEM_FIELD_CONTAINED_HIPART    = ObjectUpdateFields.End + 0x0003,
ITEM_FIELD_CREATOR              = ObjectUpdateFields.End + 0x0004, // Size: 2, Type: Long, Flags: Public
ITEM_FIELD_CREATOR_HIPART      = ObjectUpdateFields.End + 0x0005,
ITEM_FIELD_GIFTCREATOR          = ObjectUpdateFields.End + 0x0006, // Size: 2, Type: Long, Flags: Public
ITEM_FIELD_GIFTCREATOR_HIPART  = ObjectUpdateFields.End + 0x0007,
ITEM_FIELD_STACK_COUNT          = ObjectUpdateFields.End + 0x0008, // Size: 1, Type: Int, Flags: OwnerOnly, Unk1
ITEM_FIELD_DURATION            = ObjectUpdateFields.End + 0x0009, // Size: 1, Type: Int, Flags: OwnerOnly, Unk1
ITEM_FIELD_SPELL_CHARGES        = ObjectUpdateFields.End + 0x000A, // Size: 5, Type: Int, Flags: OwnerOnly, Unk1
ITEM_FIELD_SPELL_CHARGES_2      = ObjectUpdateFields.End + 0x000B,
ITEM_FIELD_SPELL_CHARGES_3      = ObjectUpdateFields.End + 0x000C,
ITEM_FIELD_SPELL_CHARGES_4      = ObjectUpdateFields.End + 0x000D,
ITEM_FIELD_SPELL_CHARGES_5      = ObjectUpdateFields.End + 0x000E,
ITEM_FIELD_FLAGS                = ObjectUpdateFields.End + 0x000F, // Size: 1, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_1_1      = ObjectUpdateFields.End + 0x0010, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_1_2      = ObjectUpdateFields.End + 0x0011,
ITEM_FIELD_ENCHANTMENT_1_3      = ObjectUpdateFields.End + 0x0012, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_2_1      = ObjectUpdateFields.End + 0x0013, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_2_2      = ObjectUpdateFields.End + 0x0014,
ITEM_FIELD_ENCHANTMENT_2_3      = ObjectUpdateFields.End + 0x0015, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_3_1      = ObjectUpdateFields.End + 0x0016, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_3_2      = ObjectUpdateFields.End + 0x0017,
ITEM_FIELD_ENCHANTMENT_3_3      = ObjectUpdateFields.End + 0x0018, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_4_1      = ObjectUpdateFields.End + 0x0019, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_4_2      = ObjectUpdateFields.End + 0x001A,
ITEM_FIELD_ENCHANTMENT_4_3      = ObjectUpdateFields.End + 0x001B, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_5_1      = ObjectUpdateFields.End + 0x001C, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_5_2      = ObjectUpdateFields.End + 0x001D,
ITEM_FIELD_ENCHANTMENT_5_3      = ObjectUpdateFields.End + 0x001E, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_6_1      = ObjectUpdateFields.End + 0x001F, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_6_2      = ObjectUpdateFields.End + 0x0020,
ITEM_FIELD_ENCHANTMENT_6_3      = ObjectUpdateFields.End + 0x0021, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_7_1      = ObjectUpdateFields.End + 0x0022, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_7_2      = ObjectUpdateFields.End + 0x0023,
ITEM_FIELD_ENCHANTMENT_7_3      = ObjectUpdateFields.End + 0x0024, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_8_1      = ObjectUpdateFields.End + 0x0025, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_8_2      = ObjectUpdateFields.End + 0x0026,
ITEM_FIELD_ENCHANTMENT_8_3      = ObjectUpdateFields.End + 0x0027, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_9_1      = ObjectUpdateFields.End + 0x0028, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_9_2      = ObjectUpdateFields.End + 0x0029,
ITEM_FIELD_ENCHANTMENT_9_3      = ObjectUpdateFields.End + 0x002A, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_10_1    = ObjectUpdateFields.End + 0x002B, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_10_2    = ObjectUpdateFields.End + 0x002C,
ITEM_FIELD_ENCHANTMENT_10_3    = ObjectUpdateFields.End + 0x002D, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_11_1    = ObjectUpdateFields.End + 0x002E, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_11_2    = ObjectUpdateFields.End + 0x002F,
ITEM_FIELD_ENCHANTMENT_11_3    = ObjectUpdateFields.End + 0x0030, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_12_1    = ObjectUpdateFields.End + 0x0031, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_12_2    = ObjectUpdateFields.End + 0x0032,
ITEM_FIELD_ENCHANTMENT_12_3    = ObjectUpdateFields.End + 0x0033, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_13_1    = ObjectUpdateFields.End + 0x0034, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_13_2    = ObjectUpdateFields.End + 0x0035,
ITEM_FIELD_ENCHANTMENT_13_3    = ObjectUpdateFields.End + 0x0036, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_ENCHANTMENT_14_1    = ObjectUpdateFields.End + 0x0037, // Size: 2, Type: Int, Flags: Public
ITEM_FIELD_ENCHANTMENT_14_2    = ObjectUpdateFields.End + 0x0038,
ITEM_FIELD_ENCHANTMENT_14_3    = ObjectUpdateFields.End + 0x0039, // Size: 1, Type: TwoShort, Flags: Public
ITEM_FIELD_PROPERTY_SEED        = ObjectUpdateFields.End + 0x003A, // Size: 1, Type: Int, Flags: Public
ITEM_FIELD_RANDOM_PROPERTIES_ID = ObjectUpdateFields.End + 0x003B, // Size: 1, Type: Int, Flags: Public
ITEM_FIELD_DURABILITY          = ObjectUpdateFields.End + 0x003C, // Size: 1, Type: Int, Flags: OwnerOnly, Unk1
ITEM_FIELD_MAXDURABILITY        = ObjectUpdateFields.End + 0x003D, // Size: 1, Type: Int, Flags: OwnerOnly, Unk1
ITEM_FIELD_CREATE_PLAYED_TIME  = ObjectUpdateFields.End + 0x003E, // Size: 1, Type: Int, Flags: Public
ITEM_FIELD_PAD                  = ObjectUpdateFields.End + 0x003F, // Size: 1, Type: Int, Flags: None



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

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