Skip to content

Commit 903be40

Browse files
committed
[Fork] - Initial commit
1 parent 3ca46a3 commit 903be40

103 files changed

Lines changed: 37461 additions & 4038 deletions

File tree

Some content is hidden

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

Apps/Extract/Extract.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,8 @@
1515
<None Include="$(SolutionDir)Content\ItemsReplace.xml" CopyToOutputDirectory="PreserveNewest" />
1616
<None Include="$(SolutionDir)Content\ItemsIgnore.xml" CopyToOutputDirectory="PreserveNewest" />
1717
</ItemGroup>
18+
19+
<ItemGroup>
20+
<PackageReference Include="Google.Protobuf" Version="3.15.8" />
21+
</ItemGroup>
1822
</Project>

Apps/Extract/Program.cs

Lines changed: 35 additions & 119 deletions
Large diffs are not rendered by default.

Apps/Record/Record.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<ReleaseVersion>0.1.3</ReleaseVersion>
77
</PropertyGroup>
88

9+
<ItemGroup>
10+
<PackageReference Include="Google.Protobuf" Version="3.15.8" />
11+
</ItemGroup>
12+
913
<ItemGroup>
1014
<ProjectReference Include="..\..\TibiaAPI\TibiaAPI.csproj" />
1115
</ItemGroup>

Apps/Redact/Program.cs

Lines changed: 20 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,13 @@ class Program
1818

1919
static void ParseArgs(string[] args)
2020
{
21-
foreach (var arg in args)
22-
{
21+
foreach (var arg in args) {
2322
if (!arg.Contains('=', StringComparison.CurrentCultureIgnoreCase))
24-
{
2523
continue;
26-
}
2724

2825
var splitArg = arg.Split('=');
29-
if (splitArg.Length == 1)
30-
{
31-
switch (splitArg[0])
32-
{
26+
if (splitArg.Length == 1) {
27+
switch (splitArg[0]) {
3328
case "--keepclient":
3429
{
3530
_keepClientPackets = true;
@@ -38,11 +33,8 @@ static void ParseArgs(string[] args)
3833
default:
3934
break;
4035
}
41-
}
42-
else if (splitArg.Length == 2)
43-
{
44-
switch (splitArg[0])
45-
{
36+
} else if (splitArg.Length == 2) {
37+
switch (splitArg[0]) {
4638
case "-r":
4739
case "--recording":
4840
{
@@ -58,22 +50,19 @@ static void ParseArgs(string[] args)
5850

5951
static void Main(string[] args)
6052
{
61-
if (args.Length <= 0)
62-
{
53+
if (args.Length <= 0) {
6354
Console.WriteLine($"Invalid number of arguments: {args.Length}");
6455
return;
6556
}
6657

6758
ParseArgs(args);
6859

69-
if (string.IsNullOrEmpty(_recordingName) || !_recordingName.EndsWith(".oxr", StringComparison.CurrentCultureIgnoreCase))
70-
{
60+
if (string.IsNullOrEmpty(_recordingName) || !_recordingName.EndsWith(".oxr", StringComparison.CurrentCultureIgnoreCase)) {
7161
Console.WriteLine($"Invalid recording file: {_recordingName ?? "null"}");
7262
return;
7363
}
7464

75-
if (!File.Exists(_recordingName))
76-
{
65+
if (!File.Exists(_recordingName)) {
7766
Console.WriteLine($"File does not exist: {_recordingName}");
7867
return;
7968
}
@@ -94,30 +83,22 @@ static void Redact()
9483
var tibiaDirectory = string.Empty;
9584
var version = reader.ReadString();
9685
Console.WriteLine($"Client version: {version}");
97-
if (int.TryParse(version.Replace(".", ""), out var versionNumber))
98-
{
86+
if (int.TryParse(version.Replace(".", ""), out var versionNumber)) {
9987
var clientDataDirectory = $"ClientData/{versionNumber}";
10088
if (!Directory.Exists(clientDataDirectory))
101-
{
10289
Console.WriteLine($"ClientData directory for version {version} doesn't exist. Falling back to default Tibia directory.");
103-
}
10490
else
105-
{
10691
tibiaDirectory = clientDataDirectory;
107-
}
108-
}
109-
else
110-
{
92+
} else {
11193
Console.WriteLine($"Invalid client version at beginning of recording: {version}");
11294
}
11395

11496
var client = new Client(tibiaDirectory);
11597

11698
// We don't want to completely block these packets.
11799
if (_keepClientPackets)
118-
{
119100
client.Connection.OnReceivedClientTalkPacket += Connection_OnReceivedClientTalkPacket;
120-
}
101+
121102
client.Connection.OnReceivedServerFullMapPacket += Connection_OnReceivedServerMapPacket;
122103
client.Connection.OnReceivedServerBottomFloorPacket += Connection_OnReceivedServerMapPacket;
123104
client.Connection.OnReceivedServerBottomRowPacket += Connection_OnReceivedServerMapPacket;
@@ -132,8 +113,7 @@ static void Redact()
132113
client.Connection.OnReceivedServerMessagePacket += Connection_OnReceivedServerMessagePacket;
133114

134115
// These packets aren't necessary in a redacted recording.
135-
if (_keepClientPackets)
136-
{
116+
if (_keepClientPackets) {
137117
client.Connection.OnReceivedClientAddBuddyPacket += Connection_OnReceivedUselessPacket;
138118
client.Connection.OnReceivedClientBuddyGroupPacket += Connection_OnReceivedUselessPacket;
139119
client.Connection.OnReceivedClientBugReportPacket += Connection_OnReceivedUselessPacket;
@@ -172,18 +152,15 @@ static void Redact()
172152
var clientSequenceNumber = 0u;
173153
var serverSequenceNumber = 0u;
174154

175-
while (reader.BaseStream.Position < reader.BaseStream.Length)
176-
{
155+
while (reader.BaseStream.Position < reader.BaseStream.Length) {
177156
var packetType = (PacketType)reader.ReadByte();
178157
var timestamp = reader.ReadInt64();
179158
var size = reader.ReadUInt32();
180159

181160
// If the Record app wasn't properly shutdown, a recording could
182161
// possibly be missing data at the end.
183162
if (reader.BaseStream.Length - reader.BaseStream.Position < size)
184-
{
185163
break;
186-
}
187164

188165
_ = reader.ReadUInt16(); // packet size
189166
_ = reader.ReadUInt32(); // sequence number
@@ -197,19 +174,13 @@ static void Redact()
197174
Array.Copy(reader.ReadBytes((int)message.Size), message.GetBuffer(), message.Size);
198175

199176
if (packetType == PacketType.Server)
200-
{
201177
client.Connection.ParseServerMessage(client, message, outMessage);
202-
}
203178
else if (_keepClientPackets)
204-
{
205179
client.Connection.ParseClientMessage(client, message, outMessage);
206-
}
207180

208181
// If the `outMessage` doesn't contain any data we don't want to write it to the file.
209182
if (outMessage.Size <= 8)
210-
{
211183
continue;
212-
}
213184

214185
// Prepare the message without an XTEA key so that the proper
215186
// sizes are added to the packet data, but it stays unencrypted.
@@ -238,26 +209,20 @@ private static bool Connection_OnReceivedServerMessagePacket(Packet packet)
238209
{
239210
var p = (OXGaming.TibiaAPI.Network.ServerPackets.Message)packet;
240211
if (p.MessageMode == MessageModeType.Look)
241-
{
242212
if (_lookPlayerRx.IsMatch(p.Text) || p.Text.Contains("You see yourself.", StringComparison.OrdinalIgnoreCase))
243-
{
244213
p.Text = "Redacted";
245-
}
246-
}
214+
247215
return true;
248216
}
249217

250218
private static bool Connection_OnReceivedServerTalkPacket(Packet packet)
251219
{
252220
var p = (OXGaming.TibiaAPI.Network.ServerPackets.Talk)packet;
253221
var creature = p.Client.CreatureStorage.GetCreature(p.SpeakerName);
254-
if (creature is null || creature.Type == CreatureType.Player)
255-
{
222+
if (creature is null || creature.Type == CreatureType.Player) {
256223
p.SpeakerLevel = 100;
257224
p.SpeakerName = "Redacted";
258-
}
259-
else if (creature is object && creature.Type == CreatureType.Npc)
260-
{
225+
} else if (creature is object && creature.Type == CreatureType.Npc) {
261226
// In case the NPC used the player's name in their message,
262227
// we need to check and replace it.
263228
p.Text = p.Text.Replace(p.Client.Player.Name, "Redacted", StringComparison.OrdinalIgnoreCase);
@@ -269,39 +234,31 @@ private static bool Connection_OnReceivedServerCreatureUpdatePacket(Packet packe
269234
{
270235
var p = (OXGaming.TibiaAPI.Network.ServerPackets.CreatureUpdate)packet;
271236
if (p.Creature is object && p.Creature.Type == CreatureType.Player)
272-
{
273237
p.Creature.Name = "Redacted";
274-
}
238+
275239
return true;
276240
}
277241

278242
private static bool Connection_OnReceivedServerCreateOnMapPacket(Packet packet)
279243
{
280244
var p = (OXGaming.TibiaAPI.Network.ServerPackets.CreateOnMap)packet;
281245
if (p.Creature is object && p.Creature.Type == CreatureType.Player)
282-
{
283246
p.Creature.Name = "Redacted";
284-
}
247+
285248
return true;
286249
}
287250

288251
private static bool Connection_OnReceivedServerMapPacket(Packet packet)
289252
{
290253
var p = (OXGaming.TibiaAPI.Network.ServerPackets.Map)packet;
291-
foreach (var field in p.Fields)
292-
{
293-
foreach (var obj in field.Objects)
294-
{
254+
foreach (var field in p.Fields) {
255+
foreach (var obj in field.Objects) {
295256
if (obj is null || obj.Id >= 100)
296-
{
297257
continue;
298-
}
299258

300259
var creature = p.Client.CreatureStorage.GetCreature(obj.Data);
301260
if (creature is null || creature.Type != CreatureType.Player)
302-
{
303261
continue;
304-
}
305262

306263
creature.Name = "Redacted";
307264
}

Apps/Redact/Redact.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<ReleaseVersion>0.1.3</ReleaseVersion>
77
</PropertyGroup>
88

9+
<ItemGroup>
10+
<PackageReference Include="Google.Protobuf" Version="3.15.8" />
11+
</ItemGroup>
12+
913
<ItemGroup>
1014
<ProjectReference Include="..\..\TibiaAPI\TibiaAPI.csproj" />
1115
</ItemGroup>

0 commit comments

Comments
 (0)