@@ -6,7 +6,7 @@ namespace OXGaming.TibiaAPI.Network.ServerPackets
66{
77 public class FriendSystemData : ServerPacket
88 {
9- public byte Type { get ; set ; }
9+ public FriendSystemDataType DataType { get ; set ; }
1010
1111 public FriendSystemData ( Client client )
1212 {
@@ -16,46 +16,65 @@ public FriendSystemData(Client client)
1616
1717 public override void ParseFromNetworkMessage ( NetworkMessage message )
1818 {
19- // TODO: Figure out Types 0x00 and 0x07 (if they exist),
20- // and others (if there are any) .
21- Type = message . ReadByte ( ) ;
22- if ( Type == 0x01 ) // New Invitations Pending
19+ // TODO: Figure out others DataTypes (if there are any).
20+ // 0x09 and above seem to have no purpose .
21+ DataType = ( FriendSystemDataType ) message . ReadByte ( ) ;
22+ if ( DataType == FriendSystemDataType . SpecialEvent )
2323 {
24+ var eventType = message . ReadByte ( ) ;
25+ if ( eventType == 0 )
26+ {
27+ // Error: You need to set a main character to use this feature. [Cancel]
28+ }
29+ else if ( eventType == 1 )
30+ {
31+ // Error: text [Ok]
32+ var text = message . ReadString ( ) ;
33+ }
34+ else if ( eventType == 2 )
35+ {
36+ // Display "No results." in the search tab
37+ }
38+ else if ( eventType >= 3 )
39+ {
40+ // Clears the search tab and shows the default text if no results are displayed
41+ // Enables the Invite & Blacklist button if results are displayed
42+ }
2443 }
25- if ( Type == 0x02 ) // Friends
44+ else if ( DataType == FriendSystemDataType . InvitationPending )
45+ {
46+ }
47+ else if ( DataType == FriendSystemDataType . Friends )
2648 {
2749 var count = message . ReadUInt16 ( ) ;
2850 for ( var i = 0 ; i < count ; ++ i )
2951 {
3052 var accountId = message . ReadUInt32 ( ) ;
3153 var playerId = message . ReadUInt32 ( ) ;
3254 var name = message . ReadString ( ) ;
33- var unknown = message . ReadUInt16 ( ) ;
55+ var title = message . ReadString ( ) ;
3456 var world = message . ReadString ( ) ;
3557 var vocation = message . ReadString ( ) ;
3658 var level = message . ReadUInt16 ( ) ;
3759 var outfit = message . ReadCreatureOutfit ( ) ;
38- var friendshipLevel = message . ReadByte ( ) ;
60+ var friendshipLevel = ( FriendGroup ) message . ReadByte ( ) ;
3961 var timestamp = message . ReadUInt32 ( ) ;
4062 }
4163 }
42- else if ( Type == 0x03 ) // Invitations
64+ else if ( DataType == FriendSystemDataType . Invitations )
4365 {
4466 var count = message . ReadUInt16 ( ) ;
4567 for ( var i = 0 ; i < count ; ++ i )
4668 {
47- var unknown = message . ReadByte ( ) ;
48- if ( unknown == 1 )
49- {
50- var unknown1 = message . ReadUInt32 ( ) ;
51- }
69+ var isSentInvitation = message . ReadBool ( ) ;
70+ var accountId = message . ReadUInt32 ( ) ;
5271 var invitedName = message . ReadString ( ) ;
53- var unknown2 = message . ReadUInt16 ( ) ;
72+ var invitedTitle = message . ReadString ( ) ;
5473 var inviteeName = message . ReadString ( ) ;
5574 var timestamp = message . ReadUInt32 ( ) ;
5675 }
5776 }
58- else if ( Type == 0x04 ) // Blacklist
77+ else if ( DataType == FriendSystemDataType . Blacklist )
5978 {
6079 var count = message . ReadUInt16 ( ) ;
6180 for ( var i = 0 ; i < count ; ++ i )
@@ -65,21 +84,23 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
6584 var timestamp = message . ReadUInt32 ( ) ;
6685 }
6786 }
68- else if ( Type == 0x05 ) // Character Info
87+ else if ( DataType == FriendSystemDataType . CharacterSearch )
6988 {
7089 var accountId = message . ReadUInt32 ( ) ;
71- var unknown = message . ReadUInt16 ( ) ;
90+ var hasPendingInvitation = message . ReadBool ( ) ;
91+ var isBlacklisted = message . ReadBool ( ) ;
7292 var isFriend = message . ReadBool ( ) ;
7393 if ( isFriend )
7494 {
75- var unknown1 = message . ReadByte ( ) ;
95+ var isOnline = message . ReadBool ( ) ;
7696 var lastGameLogin = message . ReadUInt32 ( ) ;
77- var unknown2 = message . ReadBytes ( 3 ) ;
97+ var isPremium = message . ReadBool ( ) ;
98+ var loyalityTitle = message . ReadString ( ) ;
7899 var badges = message . ReadByte ( ) ;
79100 for ( var i = 0 ; i < badges ; ++ i )
80101 {
81102 var badgeId = message . ReadUInt32 ( ) ;
82- var badgeName = message . ReadUInt32 ( ) ;
103+ var badgeName = message . ReadString ( ) ;
83104 }
84105 }
85106 var characters = message . ReadByte ( ) ;
@@ -88,15 +109,15 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
88109 var playerId = message . ReadUInt32 ( ) ;
89110 var name = message . ReadString ( ) ;
90111 var isMainCharacter = message . ReadBool ( ) ;
91- var unknown3 = message . ReadUInt16 ( ) ;
112+ var title = message . ReadString ( ) ;
92113 var world = message . ReadString ( ) ;
93114 var vocation = message . ReadString ( ) ;
94115 var level = message . ReadUInt16 ( ) ;
95- var unknown4 = message . ReadByte ( ) ;
116+ var isOnline = message . ReadBool ( ) ;
96117 var outfit = message . ReadCreatureOutfit ( ) ;
97118 }
98119 }
99- else if ( Type == 0x06 ) // Badges
120+ else if ( DataType == FriendSystemDataType . Badges )
100121 {
101122 var count = message . ReadByte ( ) ;
102123 for ( var i = 0 ; i < count ; ++ i )
@@ -108,26 +129,30 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
108129 var displayBadge = message . ReadBool ( ) ;
109130 }
110131 }
111- else if ( Type == 0x08 ) // Config
132+ else if ( DataType == FriendSystemDataType . NewFriend )
133+ {
134+ }
135+ else if ( DataType == FriendSystemDataType . Config )
112136 {
113137 var count = message . ReadByte ( ) ;
114138 for ( var i = 0 ; i < count ; ++ i )
115139 {
116- var configId = message . ReadByte ( ) ;
140+ var configId = ( FriendGroup ) message . ReadByte ( ) ;
117141 var showCharacterInfo = message . ReadBool ( ) ;
118142 var showAccountInfo = message . ReadBool ( ) ;
119143 var allowInspect = message . ReadBool ( ) ;
120144 }
121145 }
122146 else
123147 {
124- throw new Exception ( $ "Invalid Friend System Data: { Type } ") ;
148+ throw new Exception ( $ "Invalid Friend System Data: { DataType } ") ;
125149 }
126150 }
127151
128152 public override void AppendToNetworkMessage ( NetworkMessage message )
129153 {
130154 message . Write ( ( byte ) ServerPacketType . FriendSystemData ) ;
155+ message . Write ( ( byte ) DataType ) ;
131156 }
132157 }
133158}
0 commit comments