SMSG_UPDATE_OBJECT

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/gameobject/smsg_update_object.wowm:180.

smsg SMSG_UPDATE_OBJECT = 0x00A9 {
    u32 amount_of_objects;
    u8 has_transport;
    Object[amount_of_objects] objects;
}

SMSG have a header of 4 bytes.

SMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x022 / Littleuint16opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x044 / Littleu32amount_of_objects
0x081 / -u8has_transport
0x09? / -Object[amount_of_objects]objects

Examples

Example 1

Comment

Most minimal package required to load into the world. Also requires a valid SMSG_TUTORIAL_FLAGS and SMSG_LOGIN_VERIFY_WORLD.

0, 97, // size
169, 0, // opcode (169)
1, 0, 0, 0, // amount_of_objects: u32
0, // has_transport: u8
3, // [0].Object.update_type: UpdateType CREATE_OBJECT2 (3)
1, 4, // [0].Object.guid3: PackedGuid
4, // [0].Object.object_type: ObjectType PLAYER (4)
49, // MovementBlock.update_flag: UpdateFlag  SELF| ALL| LIVING (49)
0, 0, 0, 0, // MovementBlock.flags: MovementFlags  NONE (0)
0, 0, 0, 0, // MovementBlock.timestamp: u32
205, 215, 11, 198, // Vector3d.x: f32
53, 126, 4, 195, // Vector3d.y: f32
249, 15, 167, 66, // Vector3d.z: f32
0, 0, 0, 0, // MovementBlock.living_orientation: f32
0, 0, 0, 0, // MovementBlock.fall_time: f32
0, 0, 128, 63, // MovementBlock.walking_speed: f32
0, 0, 224, 64, // MovementBlock.running_speed: f32
0, 0, 144, 64, // MovementBlock.backwards_running_speed: f32
0, 0, 0, 0, // MovementBlock.swimming_speed: f32
0, 0, 0, 0, // MovementBlock.backwards_swimming_speed: f32
219, 15, 73, 64, // MovementBlock.turn_rate: f32
1, 0, 0, 0, // MovementBlock.unknown1: u32
// UpdateMask
2, // amount_of_blocks
7, 0, 64, 0, // Block 0
16, 0, 0, 0, // Block 1
4, 0, 0, 0, // Item
0, 0, 0, 0, // Item
25, 0, 0, 0, // Item
100, 0, 0, 0, // Item
1, 1, 1, 1, // Item
// [0].Object.mask2: UpdateMask
// objects: Object[amount_of_objects]

Example 2

0, 133, // size
169, 0, // opcode (169)
1, 0, 0, 0, // amount_of_objects: u32
0, // has_transport: u8
3, // [0].Object.update_type: UpdateType CREATE_OBJECT2 (3)
1, 4, // [0].Object.guid3: PackedGuid
4, // [0].Object.object_type: ObjectType PLAYER (4)
49, // MovementBlock.update_flag: UpdateFlag  SELF| ALL| LIVING (49)
0, 0, 0, 0, // MovementBlock.flags: MovementFlags  NONE (0)
0, 0, 0, 0, // MovementBlock.timestamp: u32
205, 215, 11, 198, // Vector3d.x: f32
53, 126, 4, 195, // Vector3d.y: f32
249, 15, 167, 66, // Vector3d.z: f32
0, 0, 0, 0, // MovementBlock.living_orientation: f32
0, 0, 0, 0, // MovementBlock.fall_time: f32
0, 0, 128, 63, // MovementBlock.walking_speed: f32
0, 0, 224, 64, // MovementBlock.running_speed: f32
0, 0, 144, 64, // MovementBlock.backwards_running_speed: f32
0, 0, 0, 0, // MovementBlock.swimming_speed: f32
0, 0, 0, 0, // MovementBlock.backwards_swimming_speed: f32
219, 15, 73, 64, // MovementBlock.turn_rate: f32
1, 0, 0, 0, // MovementBlock.unknown1: u32
// UpdateMask
5, // amount_of_blocks
23, 0, 64, 16, // Block 0
28, 0, 0, 0, // Block 1
0, 0, 0, 0, // Block 2
0, 0, 0, 0, // Block 3
24, 0, 0, 0, // Block 4
4, 0, 0, 0, // Item
0, 0, 0, 0, // Item
25, 0, 0, 0, // Item
0, 0, 128, 63, // Item
100, 0, 0, 0, // Item
100, 0, 0, 0, // Item
1, 0, 0, 0, // Item
1, 0, 0, 0, // Item
1, 1, 1, 1, // Item
50, 0, 0, 0, // Item
50, 0, 0, 0, // Item
// [0].Object.mask2: UpdateMask
// objects: Object[amount_of_objects]

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/gameobject/smsg_update_object_2_4_3.wowm:115.

smsg SMSG_UPDATE_OBJECT = 0x00A9 {
    u32 amount_of_objects;
    u8 has_transport;
    Object[amount_of_objects] objects;
}

Header

SMSG have a header of 4 bytes.

SMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x022 / Littleuint16opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x044 / Littleu32amount_of_objects
0x081 / -u8has_transport
0x09? / -Object[amount_of_objects]objects

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/gameobject/smsg_update_object_3_3_5.wowm:199.

smsg SMSG_UPDATE_OBJECT = 0x00A9 {
    u32 amount_of_objects;
    Object[amount_of_objects] objects;
}

Header

SMSG have a header of 4 bytes.

SMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 OR 3 / Biguint16 OR uint16+uint8sizeSize of the rest of the message including the opcode field but not including the size field. Wrath server messages can be 3 bytes. If the first (most significant) size byte has 0x80 set, the header will be 3 bytes, otherwise it is 2.
-2 / Littleuint16opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32amount_of_objects
-? / -Object[amount_of_objects]objects

Examples

Example 1

0, 115, // size
169, 0, // opcode (169)
1, 0, 0, 0, // amount_of_objects: u32
3, // [0].Object.update_type: UpdateType CREATE_OBJECT2 (3)
1, 8, // [0].Object.guid3: PackedGuid
4, // [0].Object.object_type: ObjectType PLAYER (4)
33, 0, // MovementBlock.update_flag: UpdateFlag  SELF| LIVING (33)
0, 0, 0, 0, 0, 0, // MovementBlock.flags: MovementFlags  NONE (0)
0, 0, 0, 0, // MovementBlock.timestamp: u32
205, 215, 11, 198, // Vector3d.x: f32
53, 126, 4, 195, // Vector3d.y: f32
249, 15, 167, 66, // Vector3d.z: f32
0, 0, 0, 0, // MovementBlock.orientation: f32
0, 0, 0, 0, // MovementBlock.fall_time: f32
0, 0, 128, 63, // MovementBlock.walking_speed: f32
0, 0, 140, 66, // MovementBlock.running_speed: f32
0, 0, 144, 64, // MovementBlock.backwards_running_speed: f32
0, 0, 0, 0, // MovementBlock.swimming_speed: f32
0, 0, 0, 0, // MovementBlock.backwards_swimming_speed: f32
0, 0, 0, 0, // MovementBlock.flight_speed: f32
0, 0, 0, 0, // MovementBlock.backwards_flight_speed: f32
208, 15, 73, 64, // MovementBlock.turn_rate: f32
0, 0, 0, 0, // MovementBlock.pitch_rate: f32
// UpdateMask
3, // amount_of_blocks
7, 0, 0, 0, // Block 0
0, 0, 128, 0, // Block 1
24, 0, 0, 0, // Block 2
8, 0, 0, 0, // Item
0, 0, 0, 0, // Item
25, 0, 0, 0, // Item
1, 0, 0, 0, // Item
12, 77, 0, 0, // Item
12, 77, 0, 0, // Item
// [0].Object.mask2: UpdateMask
// objects: Object[amount_of_objects]