Skip to content

Commit a71234a

Browse files
authored
Summer Update 2020 (jo3bingham#31)
* Prepare for new packets * Add missing packets to be handled * Add new unknown to Creature data * Add data for client/server Highscores packets * Add new FriendSystemAction types * Add data for Team Finder client packets * Wrap unknown creature data in a version check * Update Greet client packet * Move unknown creature data to the proper location * Update DepotTileState variables Thanks @gpedro * Add gathered data for various packets * Assign variables to known values * Update TeamFinderAssembleTeam unknown * Write unknown creature data back to packet
1 parent 2f254ca commit a71234a

21 files changed

Lines changed: 575 additions & 26 deletions

TibiaAPI/Constants/Enums.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,8 @@ public enum ClientPacketType
328328
DepotSearchRetrieve = 0x29,
329329
TrackBestiaryRace = 0x2A,
330330
PartyHuntAnalyser = 0x2B,
331+
TeamFinderAssembleTeam = 0x2C,
332+
TeamFinderJoinTeam = 0x2D,
331333
ClientCheck = 0x63,
332334
GoPath = 0x64,
333335
GoNorth = 0x65,
@@ -396,8 +398,10 @@ public enum ClientPacketType
396398
InviteToChannel = 0xAB,
397399
ExcludeFromChannel = 0xAC,
398400
CyclopediaHouseAction = 0xAD,
401+
Highscores = 0xB1,
399402
PreyHuntingTaskAction = 0xBA,
400403
Cancel = 0xBE,
404+
ClaimTournamentReward = 0xC3,
401405
TournamentInformation = 0xC4,
402406
SubscribeToUpdates = 0xC6,
403407
TournamentLeaderboard = 0xC7,
@@ -475,9 +479,12 @@ public enum ServerPacketType
475479
LoginChallenge = 0x1F,
476480
Dead = 0x28,
477481
Stash = 0x29,
478-
DepotTileState = 0x2A,
482+
//DepotTileState = 0x2A,
483+
SpecialContainersAvailable = 0x2A,
479484
PartyHuntAnalyser = 0x2B,
480-
SpecialContainersAvailable = 0x2C,
485+
//SpecialContainersAvailable = 0x2C,
486+
TeamFinderTeamLeader = 0x2C,
487+
TeamFinderTeamMember = 0x2D,
481488
ClientCheck = 0x63,
482489
FullMap = 0x64,
483490
TopRow = 0x65,
@@ -548,6 +555,7 @@ public enum ServerPacketType
548555
OpenChannel = 0xAC,
549556
PrivateChannel = 0xAD,
550557
EditGuildMessage = 0xAE,
558+
Highscores = 0xB1,
551559
OpenOwnChannel = 0xB2,
552560
CloseChannel = 0xB3,
553561
Message = 0xB4,

TibiaAPI/Creatures/Creature.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ public class Creature
4040

4141
public bool Visible { get; set; }
4242

43+
// TODO
44+
public byte Unknown { get; set; }
45+
4346
public bool IsSummon
4447
{
4548
get

TibiaAPI/Network/ClientPacket.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ public static ClientPacket CreateInstance(Client client, ClientPacketType type)
3636
return new ClientPackets.DepotSearchRetrieve(client);
3737
case ClientPacketType.TrackBestiaryRace:
3838
return new ClientPackets.TrackBestiaryRace(client);
39+
case ClientPacketType.PartyHuntAnalyser:
40+
return new ClientPackets.PartyHuntAnalyser(client);
41+
case ClientPacketType.TeamFinderAssembleTeam:
42+
return new ClientPackets.TeamFinderAssembleTeam(client);
43+
case ClientPacketType.TeamFinderJoinTeam:
44+
return new ClientPackets.TeamFinderJoinTeam(client);
3945
case ClientPacketType.ClientCheck:
4046
return new ClientPackets.ClientCheck(client);
4147
case ClientPacketType.GoPath:
@@ -172,8 +178,14 @@ public static ClientPacket CreateInstance(Client client, ClientPacketType type)
172178
return new ClientPackets.ExcludeFromChannel(client);
173179
case ClientPacketType.CyclopediaHouseAction:
174180
return new ClientPackets.CyclopediaHouseAction(client);
181+
case ClientPacketType.Highscores:
182+
return new ClientPackets.Highscores(client);
183+
case ClientPacketType.PreyHuntingTaskAction:
184+
return new ClientPackets.PreyHuntingTaskAction(client);
175185
case ClientPacketType.Cancel:
176186
return new ClientPackets.Cancel(client);
187+
case ClientPacketType.ClaimTournamentReward:
188+
return new ClientPackets.ClaimTournamentReward(client);
177189
case ClientPacketType.TournamentInformation:
178190
return new ClientPackets.TournamentInformation(client);
179191
case ClientPacketType.SubscribeToUpdates:
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using OXGaming.TibiaAPI.Constants;
2+
3+
namespace OXGaming.TibiaAPI.Network.ClientPackets
4+
{
5+
public class ClaimTournamentReward : ClientPacket
6+
{
7+
public ClaimTournamentReward(Client client)
8+
{
9+
Client = client;
10+
PacketType = ClientPacketType.ClaimTournamentReward;
11+
}
12+
13+
public override void ParseFromNetworkMessage(NetworkMessage message)
14+
{
15+
// TODO
16+
}
17+
18+
public override void AppendToNetworkMessage(NetworkMessage message)
19+
{
20+
// TODO
21+
// message.Write((byte)ClientPacketType.ClaimTournamentReward);
22+
}
23+
}
24+
}

TibiaAPI/Network/ClientPackets/FriendSystemAction.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public FriendSystemAction(Client client)
2828

2929
public override void ParseFromNetworkMessage(NetworkMessage message)
3030
{
31-
// TODO: Figure out Actions 0x0C, 0x0E, 0x0F (if they exist),
31+
// TODO: Figure out Action 0x0E (if exists),
3232
// and others (if there are any).
3333
Action = message.ReadByte();
3434
if (Action == 0x00) // Open Window
@@ -78,11 +78,17 @@ public override void ParseFromNetworkMessage(NetworkMessage message)
7878
{
7979
PlayerName = message.ReadString();
8080
}
81+
else if (Action == 0x0C) // Badges
82+
{
83+
}
8184
else if (Action == 0x0D) // Change Badge Display
8285
{
8386
BadgeId = message.ReadUInt32();
8487
DisplayBadge = message.ReadBool();
8588
}
89+
else if (Action == 0x0F) // Friends Config
90+
{
91+
}
8692
else if (Action == 0x10) // Change Config
8793
{
8894
ConfigId = message.ReadByte();
@@ -147,11 +153,17 @@ public override void AppendToNetworkMessage(NetworkMessage message)
147153
{
148154
message.Write(PlayerName);
149155
}
156+
else if (Action == 0x0C) // Badges
157+
{
158+
}
150159
else if (Action == 0x0D) // Change Badge Display
151160
{
152161
message.Write(BadgeId);
153162
message.Write(DisplayBadge);
154163
}
164+
else if (Action == 0x0F) // Friends Config
165+
{
166+
}
155167
else if (Action == 0x10) // Change Config
156168
{
157169
message.Write(ConfigId);

TibiaAPI/Network/ClientPackets/Greet.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ namespace OXGaming.TibiaAPI.Network.ClientPackets
44
{
55
public class Greet : ClientPacket
66
{
7+
public uint NpcId { get; set; }
8+
79
public Greet(Client client)
810
{
911
Client = client;
@@ -12,13 +14,13 @@ public Greet(Client client)
1214

1315
public override void ParseFromNetworkMessage(NetworkMessage message)
1416
{
15-
// TODO
17+
NpcId = message.ReadUInt32();
1618
}
1719

1820
public override void AppendToNetworkMessage(NetworkMessage message)
1921
{
20-
// TODO
21-
// message.Write((byte)ClientPacketType.Greet);
22+
message.Write((byte)ClientPacketType.Greet);
23+
message.Write(NpcId);
2224
}
2325
}
2426
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using OXGaming.TibiaAPI.Constants;
2+
3+
namespace OXGaming.TibiaAPI.Network.ClientPackets
4+
{
5+
public class Highscores : ClientPacket
6+
{
7+
public string GameWorld { get; set; }
8+
9+
public uint VocationId { get; set; }
10+
11+
public byte CategoryId { get; set; }
12+
13+
public Highscores(Client client)
14+
{
15+
Client = client;
16+
PacketType = ClientPacketType.Highscores;
17+
}
18+
19+
public override void ParseFromNetworkMessage(NetworkMessage message)
20+
{
21+
// TODO
22+
message.ReadByte(); // 00
23+
CategoryId = message.ReadByte();
24+
VocationId = message.ReadUInt32();
25+
GameWorld = message.ReadString();
26+
message.ReadBytes(3); // 01 00 14
27+
}
28+
29+
public override void AppendToNetworkMessage(NetworkMessage message)
30+
{
31+
// TODO
32+
// message.Write((byte)ClientPacketType.Highscores);
33+
}
34+
}
35+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using OXGaming.TibiaAPI.Constants;
2+
3+
namespace OXGaming.TibiaAPI.Network.ClientPackets
4+
{
5+
public class PartyHuntAnalyser : ClientPacket
6+
{
7+
public PartyHuntAnalyser(Client client)
8+
{
9+
Client = client;
10+
PacketType = ClientPacketType.PartyHuntAnalyser;
11+
}
12+
13+
public override void ParseFromNetworkMessage(NetworkMessage message)
14+
{
15+
// TODO
16+
}
17+
18+
public override void AppendToNetworkMessage(NetworkMessage message)
19+
{
20+
// TODO
21+
// message.Write((byte)ClientPacketType.PartyHuntAnalyser);
22+
}
23+
}
24+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using OXGaming.TibiaAPI.Constants;
2+
3+
namespace OXGaming.TibiaAPI.Network.ClientPackets
4+
{
5+
public class PreyHuntingTaskAction : ClientPacket
6+
{
7+
public ushort RaceId { get; set; }
8+
9+
public byte Index { get; set; }
10+
11+
public PreyHuntingTaskAction(Client client)
12+
{
13+
Client = client;
14+
PacketType = ClientPacketType.PreyHuntingTaskAction;
15+
}
16+
17+
public override void ParseFromNetworkMessage(NetworkMessage message)
18+
{
19+
// TODO
20+
Index = message.ReadByte();
21+
message.ReadUInt16(); // 03 00
22+
RaceId = message.ReadUInt16();
23+
}
24+
25+
public override void AppendToNetworkMessage(NetworkMessage message)
26+
{
27+
// TODO
28+
// message.Write((byte)ClientPacketType.PreyHuntingTaskAction);
29+
}
30+
}
31+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using OXGaming.TibiaAPI.Constants;
2+
3+
namespace OXGaming.TibiaAPI.Network.ClientPackets
4+
{
5+
public class TeamFinderAssembleTeam : ClientPacket
6+
{
7+
public uint StartTime { get; set; }
8+
9+
public ushort FreeSlots { get; set; }
10+
public ushort MaxLevel { get; set; }
11+
public ushort MinLevel { get; set; }
12+
public ushort TeamSize { get; set; }
13+
14+
public byte Vocations { get; set; } // Bit Flag
15+
public byte Type { get; set; }
16+
17+
public TeamFinderAssembleTeam(Client client)
18+
{
19+
Client = client;
20+
PacketType = ClientPacketType.TeamFinderAssembleTeam;
21+
}
22+
23+
public override void ParseFromNetworkMessage(NetworkMessage message)
24+
{
25+
// TODO
26+
Type = message.ReadByte();
27+
if (Type == 0)
28+
{
29+
}
30+
else if (Type == 3)
31+
{
32+
MinLevel = message.ReadUInt16();
33+
MaxLevel = message.ReadUInt16();
34+
Vocations = message.ReadByte();
35+
TeamSize = message.ReadUInt16();
36+
FreeSlots = message.ReadUInt16();
37+
message.ReadByte(); // 00
38+
StartTime = message.ReadUInt32();
39+
var count = message.ReadByte();
40+
for (var i = 0; i < count; i++)
41+
{
42+
var _ = message.ReadUInt16(); // 19 00 47 00; 19 00 4B 00; 00 00 00 00
43+
}
44+
}
45+
}
46+
47+
public override void AppendToNetworkMessage(NetworkMessage message)
48+
{
49+
// TODO
50+
// message.Write((byte)ClientPacketType.TeamFinderAssembleTeam);
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)