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;
}
Header
SMSG have a header of 4 bytes.
SMSG Header
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 2 / Little | uint16 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x04 | 4 / Little | u32 | amount_of_objects | |
0x08 | 1 / - | u8 | has_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 / Big | uint16 | size | Size of the rest of the message including the opcode field but not including the size field. |
0x02 | 2 / Little | uint16 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
0x04 | 4 / Little | u32 | amount_of_objects | |
0x08 | 1 / - | u8 | has_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
Offset | Size / Endianness | Type | Name | Description |
---|---|---|---|---|
0x00 | 2 OR 3 / Big | uint16 OR uint16+uint8 | size | Size 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 / Little | uint16 | opcode | Opcode that determines which fields the message contains. |
Body
Offset | Size / Endianness | Type | Name | Comment |
---|---|---|---|---|
- | 4 / Little | u32 | amount_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]