SMSG CHAR ENUM

From wowdev
Revision as of 15:46, 25 May 2021 by Deadbeef (talk | contribs) (Created page with "'''SMSG_CHAR_ENUM''' is a World Packet is sent after a CMSG_CHAR_ENUM from the client. It takes the client to the character selection screen. = Packet Layout = {{SMS...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

SMSG_CHAR_ENUM is a World Packet is sent after a CMSG_CHAR_ENUM from the client. It takes the client to the character selection screen.

Packet Layout

SMSG Header
Offset Size / Endianness Type Name Description
0x0 2 / Big uint16 size Size of the packet including the opcode field.
0x2 2 / Little uint16 opcode Opcode for the packet.
Determines the structure of the body.
Always 0x03B.


The packet consists of:

  1. The SMSG header that all World Packets have.
  2. A header field that describes how many characters are in the packet.
  3. Fields for as many characters as the header describes.

Character Header

Character Header
Offset Size / Endianness Type Name Description
0x0 1 / - uint8 amount_of_characters How many character bodies are repeated below. If 0 the packet ends here.

Character

Character
Offset Size / Endianness Type Name Description
0x0 8 / Little uint64 character_gui Unique GUID of the character. Later used in CMSG_PLAYER_LOGIN to login in.
0x8 - / Big uint8 character_name UTF-8 encoded null terminated string.
- 1 / - uint8 character_race
- 1 / - uint8 character_class
- 1 / - uint8 character_gender 1 for female, 0 for male.
- 1 / - uint8 character_skin
- 1 / - uint8 character_face
- 1 / - uint8 character_hairstyle
- 1 / - uint8 character_haircolor
- 1 / - uint8 character_facialhair
- 1 / - uint8 character_level Level of the character.
- 4 / Little uint32 character_zone Zone the character is shown to be in.
- 4 / Little uint32 character_map Map the character is shown to be in.
- 4 / Little float character_position_x
- 4 / Little float character_position_y
- 4 / Little float character_position_z
- 4 / Little uint32 character_guid_id
- 4 / Little uint32 character_flags
- 1 / - bool character_first_login If 1 shows tutorial popups on login. If 0 does not show tutorial popups on login.
- 1 / - uint8 character_pet_display_id
- 1 / - uint8 character_pet_level
- 1 / - uint8 character_pet_family
- 95 / - uint8[95] unknown

This is followed by 19 entries that specify the equipment of the character in the order:

  1. Head
  2. Neck
  3. Shoulders
  4. Body
  5. Chest
  6. Waist
  7. Legs
  8. Feet
  9. Wrists
  10. Hands
  11. Finger1
  12. Finger2
  13. Trinket1
  14. Trinket2
  15. Back
  16. Mainhand
  17. Offhand
  18. Ranged
  19. Tabard

All zeros displays a character without gear.

Character Gear
Offset Size / Endianness Type Name Description
0x0 4 / Little uint32 character_equipment_display_id Taken from ItemDisplayInfo.dbc.
0x4 1 / - uint8 character_inventory_type See table below.


Inventory Types From Mangos
Name Value
NON_EQUIP 0
HEAD 1
NECK 2
SHOULDERS 3
BODY 4
CHEST 5
WAIST 6
LEGS 7
FEET 8
WRISTS 9
HANDS 10
FINGER 11
TRINKET 12
WEAPON 13
SHIELD 14
RANGED 15
CLOAK 16
2HWEAPON 17
BAG 18
TABARD 19
ROBE 20
WEAPONMAINHAND 21
WEAPONOFFHAND 22
HOLDABLE 23
AMMO 24
THROWN 25
RANGEDRIGHT 26
QUIVER 27
RELIC 2


Finally there is bag information.

Character Bags
Offset Size / Endianness Type Name Description
- 4 / - uint32 character_first_bag_display_id Statically set to 0 by Mangos.
- 1 / - uint8 character_first_bag_inventory_type Statically set to 0 by Mangos.