Skip to content

Commit 5689b9b

Browse files
committed
[Fix] SetOutfit (ClientPackets)
1 parent 4a3c934 commit 5689b9b

1 file changed

Lines changed: 71 additions & 5 deletions

File tree

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,40 @@
11
using OXGaming.TibiaAPI.Constants;
2+
using OXGaming.TibiaAPI.Utilities;
3+
using System;
24

35
namespace OXGaming.TibiaAPI.Network.ClientPackets
46
{
57
public class SetOutfit : ClientPacket
68
{
7-
public byte UnknownByte1 { get; set; }
9+
public uint TryOutfitKey { get; set; }
810

911
public ushort MountId { get; set; }
1012
public ushort OutfitId { get; set; }
13+
public ushort MountOutfitId { get; set; }
14+
public ushort FamiliarOutfitId { get; set; }
15+
public ushort PodiumOutfitId { get; set; }
1116

17+
public byte Type { get; set; }
1218
public byte Addons { get; set; }
1319
public byte DetailColor { get; set; }
1420
public byte HeadColor { get; set; }
1521
public byte LegsColor { get; set; }
1622
public byte TorsoColor { get; set; }
23+
public byte MountDetailColor { get; set; }
24+
public byte MountHeadColor { get; set; }
25+
public byte MountLegsColor { get; set; }
26+
public byte MountTorsoColor { get; set; }
27+
public byte PodiumStackPos { get; set; }
28+
public byte PodiumDetailColor { get; set; }
29+
public byte PodiumHeadColor { get; set; }
30+
public byte PodiumLegsColor { get; set; }
31+
public byte PodiumTorsoColor { get; set; }
32+
public byte PodiumDirection { get; set; }
33+
public byte PodiumVisibility { get; set; }
34+
35+
public bool RandomMount { get; set; }
36+
37+
public Position PodiumPosition { get; set; }
1738

1839
public SetOutfit(Client client)
1940
{
@@ -23,26 +44,71 @@ public SetOutfit(Client client)
2344

2445
public override void ParseFromNetworkMessage(NetworkMessage message)
2546
{
26-
UnknownByte1 = message.ReadByte();
47+
Type = message.ReadByte();
2748
OutfitId = message.ReadUInt16();
2849
HeadColor = message.ReadByte();
2950
TorsoColor = message.ReadByte();
3051
LegsColor = message.ReadByte();
3152
DetailColor = message.ReadByte();
3253
Addons = message.ReadByte();
33-
MountId = message.ReadUInt16();
54+
55+
if ((OutfitWindowType)Type == OutfitWindowType.SelectOutfit) {
56+
MountOutfitId = message.ReadUInt16();
57+
MountHeadColor = message.ReadByte();
58+
MountTorsoColor = message.ReadByte();
59+
MountLegsColor = message.ReadByte();
60+
MountDetailColor = message.ReadByte();
61+
FamiliarOutfitId = message.ReadUInt16();
62+
} else if ((OutfitWindowType)Type == OutfitWindowType.TryOutfitMount) {
63+
TryOutfitKey = message.ReadUInt32();
64+
} else if ((OutfitWindowType)Type == OutfitWindowType.TryMountOld) {
65+
PodiumPosition = message.ReadPosition();
66+
PodiumOutfitId = message.ReadUInt16();
67+
PodiumStackPos = message.ReadByte();
68+
PodiumHeadColor = message.ReadByte();
69+
PodiumTorsoColor = message.ReadByte();
70+
PodiumLegsColor = message.ReadByte();
71+
PodiumDetailColor = message.ReadByte();
72+
PodiumDirection = message.ReadByte();
73+
PodiumVisibility = message.ReadByte();
74+
} else {
75+
throw new Exception($"Invalid SetOutfit type: {Type}");
76+
}
77+
RandomMount = message.ReadBool();
3478
}
3579

3680
public override void AppendToNetworkMessage(NetworkMessage message)
3781
{
3882
message.Write((byte)ClientPacketType.SetOutfit);
39-
message.Write(UnknownByte1);
83+
message.Write(Type);
4084
message.Write(OutfitId);
4185
message.Write(HeadColor);
4286
message.Write(TorsoColor);
4387
message.Write(LegsColor);
4488
message.Write(DetailColor);
45-
message.Write(MountId);
89+
message.Write(Addons);
90+
91+
if ((OutfitWindowType)Type == OutfitWindowType.SelectOutfit) {
92+
message.Write(MountOutfitId);
93+
message.Write(MountHeadColor);
94+
message.Write(MountTorsoColor);
95+
message.Write(MountLegsColor);
96+
message.Write(MountDetailColor);
97+
message.Write(FamiliarOutfitId);
98+
} else if ((OutfitWindowType)Type == OutfitWindowType.TryOutfitMount) {
99+
message.Write(TryOutfitKey);
100+
} else if ((OutfitWindowType)Type == OutfitWindowType.TryMountOld) {
101+
message.Write(PodiumPosition);
102+
message.Write(PodiumOutfitId);
103+
message.Write(PodiumStackPos);
104+
message.Write(PodiumHeadColor);
105+
message.Write(PodiumTorsoColor);
106+
message.Write(PodiumLegsColor);
107+
message.Write(PodiumDetailColor);
108+
message.Write(PodiumDirection);
109+
message.Write(PodiumVisibility);
110+
}
111+
message.Write(RandomMount);
46112
}
47113
}
48114
}

0 commit comments

Comments
 (0)