Skip to content

Commit 8b23ee9

Browse files
authored
Tibia 11.9x protocol (jo3bingham#8)
* Update server packet CyclopediaMapData * Update server packet PlayerSkills * Update server packet PreyRerollPrice * Add example data for CyclopediaMapData packet changes * Fix issue with parsing PlayerSkills packet. * Add example data for CyclopediaMapData packet changes * Add more example data for CyclopediaMapData changes * Add missing CyclopediaMapData types Fix exception if ReadString() has a length of 0 * Fix client MoveObject packet * Start working on Stash related packets * Add changes to PreyData server packet * Add more packet changes * Finish Stash packet * Additional PreyData packet changes * Fill out the CyclopediaMapData packet based on @TheSumm's work * Rename PreyRerollPrice to PreyPrices as per client update * Add new type (ActiveRaid) to CyclopediaMapData packet * Fix misnamed values * areaId should be ushort not uint * Update unknown PreyPrices values * Add unknown changes to StoreOffers packet * Add known PreyData active changes * Finish parsing PreyData packet * More explicit TODOs around unknowns * Update name for PreyPrices packet event * Use corresponding login web service depending on client version
1 parent cff059b commit 8b23ee9

74 files changed

Lines changed: 454 additions & 318 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

TibiaAPI/Client.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public class Client : IDisposable
1616

1717
public string Version { get; private set; }
1818

19+
public uint VersionNumber { get; private set; } = 0;
20+
1921
public Client(string tibiaDirectory = "")
2022
{
2123
if (tibiaDirectory == null)
@@ -106,6 +108,14 @@ private bool Initialize(string tibiaDirectory = "")
106108
Console.WriteLine($"Failed to get client version.");
107109
return false;
108110
}
111+
if (uint.TryParse(Version.Replace(".", ""), out var versionNumber))
112+
{
113+
VersionNumber = versionNumber;
114+
}
115+
else
116+
{
117+
Console.WriteLine($"Failed to convert the client version to a numerical value: {Version}");
118+
}
109119

110120
var assetsDirectory = string.Empty;
111121
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))

TibiaAPI/Constants/Enums.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,19 @@ public enum Direction
149149
SouthEast = 8
150150
}
151151

152+
public enum CyclopediaMapDataType
153+
{
154+
DiscoveryData = 1,
155+
ActiveRaid = 2,
156+
ImminentRaidMainArea = 3,
157+
ImminentRaidSubArea = 4,
158+
SetDiscoveryArea = 5,
159+
Passage = 6,
160+
SubAreaMonsters = 7,
161+
Donations = 9,
162+
SetCurrentArea = 10
163+
}
164+
152165
public enum MarketDetailField
153166
{
154167
Armor = 0,
@@ -427,7 +440,6 @@ public enum ServerPacketType
427440
CreatureParty = 0x91,
428441
CreatureUnpass = 0x92,
429442
CreatureMarks = 0x93,
430-
CreaturePvpHelpers = 0x94,
431443
CreatureType = 0x95,
432444
EditText = 0x96,
433445
EditList = 0x97,
@@ -492,7 +504,7 @@ public enum ServerPacketType
492504
PreyFreeListRerollAvailability = 0xE6,
493505
PreyTimeLeft = 0xE7,
494506
PreyData = 0xE8,
495-
PreyRerollPrice = 0xE9,
507+
PreyPrices = 0xE9,
496508
OfferDescription = 0xEA,
497509
ImbuingDialogRefresh = 0xEB,
498510
CloseImbuingDialog = 0xEC,

TibiaAPI/Network/ClientPackets/Attack.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
1919
}
2020

2121
CreatureId = message.ReadUInt32();
22-
message.ReadUInt32(); // Creature id again.
22+
message.ReadUInt32(); // Creature ID again.
2323
return true;
2424
}
2525

TibiaAPI/Network/ClientPackets/BuddyGroup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
3232
public override void AppendToNetworkMessage(NetworkMessage message)
3333
{
3434
message.Write((byte)ClientPacketType.BuddyGroup);
35-
var count = (byte)Math.Min(Groups.Count, byte.MaxValue);
36-
message.Write(count);
35+
var count = Math.Min(Groups.Count, byte.MaxValue);
36+
message.Write((byte)count);
3737
for (var i = 0; i < count; ++i)
3838
{
3939
message.Write(Groups[i]);

TibiaAPI/Network/ClientPackets/ClientCheck.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
3232
public override void AppendToNetworkMessage(NetworkMessage message)
3333
{
3434
message.Write((byte)ClientPacketType.ClientCheck);
35-
var count = (uint)Math.Min(Data.Count, uint.MaxValue);
36-
message.Write(count);
35+
var count = Math.Min(Data.Count, uint.MaxValue);
36+
message.Write((uint)count);
3737
for (var i = 0; i < count; ++i)
3838
{
3939
message.Write(Data[i]);

TibiaAPI/Network/ClientPackets/CollectDailyReward.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
2323
return false;
2424
}
2525

26+
// TODO: Figure out this unknown.
2627
Unknown = message.ReadByte();
2728
Rewards.Capacity = message.ReadByte();
2829
for (var i = 0; i < Rewards.Capacity; ++i)
@@ -38,13 +39,13 @@ public override void AppendToNetworkMessage(NetworkMessage message)
3839
{
3940
message.Write((byte)ClientPacketType.CollectDailyReward);
4041
message.Write(Unknown);
41-
var count = (byte)Math.Min(Rewards.Count, byte.MaxValue);
42-
message.Write(count);
42+
var count = Math.Min(Rewards.Count, byte.MaxValue);
43+
message.Write((byte)count);
4344
for (var i = 0; i < count; ++i)
4445
{
45-
var reward = Rewards[i];
46-
message.Write(reward.ObjectId);
47-
message.Write(reward.Amount);
46+
var (ObjectId, Amount) = Rewards[i];
47+
message.Write(ObjectId);
48+
message.Write(Amount);
4849
}
4950
}
5051
}

TibiaAPI/Network/ClientPackets/EditBuddy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@ public override void AppendToNetworkMessage(NetworkMessage message)
4747
message.Write(Description);
4848
message.Write(Icon);
4949
message.Write(Notify);
50-
var count = (byte)Math.Min(Groups.Count, byte.MaxValue);
51-
message.Write(count);
50+
var count = Math.Min(Groups.Count, byte.MaxValue);
51+
message.Write((byte)count);
5252
for (var i = 0; i < count; ++i)
5353
{
5454
message.Write(Groups[i]);

TibiaAPI/Network/ClientPackets/Follow.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
1919
}
2020

2121
CreatureId = message.ReadUInt32();
22-
message.ReadUInt32(); // Creature id again.
22+
message.ReadUInt32(); // Creature ID again.
2323
return true;
2424
}
2525

TibiaAPI/Network/ClientPackets/GetObjectInfo.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
3434
public override void AppendToNetworkMessage(NetworkMessage message)
3535
{
3636
message.Write((byte)ClientPacketType.GetObjectInfo);
37-
var count = (byte)Math.Min(Objects.Count, byte.MaxValue);
38-
message.Write(count);
37+
var count = Math.Min(Objects.Count, byte.MaxValue);
38+
message.Write((byte)count);
3939
for (var i = 0; i < count; ++i)
4040
{
41-
var item = Objects[i];
42-
message.Write(item.ObjectId);
43-
message.Write(item.Data);
41+
var (ObjectId, Data) = Objects[i];
42+
message.Write(ObjectId);
43+
message.Write(Data);
4444
}
4545
}
4646
}

TibiaAPI/Network/ClientPackets/GoPath.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ public override bool ParseFromNetworkMessage(Client client, NetworkMessage messa
3232
public override void AppendToNetworkMessage(NetworkMessage message)
3333
{
3434
message.Write((byte)ClientPacketType.GoPath);
35-
var count = (byte)Math.Min(Directions.Count, byte.MaxValue);
36-
message.Write(count);
35+
var count = Math.Min(Directions.Count, byte.MaxValue);
36+
message.Write((byte)count);
3737
for (var i = 0; i < count; ++i)
3838
{
3939
message.Write((byte)Directions[i]);

0 commit comments

Comments
 (0)