S>C 0x65 SID_FRIENDSLIST

Transport Layer:Transmission Control Protocol (TCP)
Application Layer:Battle.net v1 TCP Messages (SID)
Message Id:0x65
Message Name:SID_FRIENDSLIST
Direction:Server to Client
Used By:Starcraft Original, Starcraft Broodwar
Warcraft III Reign of Chaos, Warcraft III The Frozen Throne
Message Format:
(does not include protocol header)
(UINT8) Number of entries

For each entry:
  (STRING) Account name
   (UINT8) Status
   (UINT8) Location id
  (UINT32) Product id
  (STRING) Location name

Remarks

This packet contains the current user's Friends List. If the friend is offline, their Product id is 0x00. Location is only supplied when it is relevant; for example, if Status is set to offline (0x00), the location string will be empty.

  • Possible bitwise values for Status:

    0x01: Mutual
    0x02: DND
    0x04: Away
  • Possible values for Location id:

    0x00: Offline
    0x01: Not in chat
    0x02: In chat
    0x03: In a public game
    0x04: In a private game
    0x05: In a private game and mutual friend

Whether you are a particular user's friend causes different behavior when receiving information about the type of game the user is in (this is true when receiving friend updates, too). When the Location field is 0x04, the user is in a password-protected game, and you are not on that user's friends list. When it is 0x05, the user is in a password-protected game, and you are on that user's friends list.

For example, let's say MyndFyre is logging on and Arta[vL] is on his friends list. Arta[vL] is also in a password-protected game. MyndFyre is not on Arta[vL]'s friends list. MyndFyre will receive location 0x04 for Arta[vL] and the Location name parameter will be an empty string. And, if MyndFyre were to type in /f l, Battle.net would respond with SID_CHATEVENT saying 1. Arta[vL] is in a private game.

On the other hand, if Arta[vL] had listed MyndFyre as a friend, then on logon, MyndFyre will receive location 0x05 for Arta[vL] and the name of the password-protected game will come through the Location name parameter of the message. If MyndFyre were to type in /f l, Battle.net would respond with 1. Arta[vL] is in the private game vL.

| Edited: LordVader

Comments

Heinermann

Enum in wc3tft beta:

Unknown:

Couldn't find the values for these, but you can guess where they go anyway.

BNET_FRIEND_MUTUAL_FRIEND
BNET_FRIEND_DND
BNET_FRIEND_AFK
BNET_FRIEND_ONLINE

Location:

0 BNET_FRIEND_OFFLINE
2 BNET_FRIEND_IN_CHANNEL
3 BNET_FRIEND_IN_PUBLIC_GAME
4 BNET_FRIEND_IN_PRIVATE_GAME
5 BNET_FRIEND_IN_PASSWORD_GAME