Skip to content

Commit 1eb0ca5

Browse files
authored
Fix Area Server Events (#64)
Back in the day we did the minimal amount of work needed to get the Area Servers online, and never went back to investigate the packets. As a result the Events never worked properly. Turns out we were missing one packet with the Lobby Server DateTime. Events should work as intended.
1 parent 275a452 commit 1eb0ca5

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

src/Fragment.NetSlum.Networking/Constants/OpCodes.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -255,14 +255,14 @@ public enum OpCodes : ushort
255255
Data_AreaServerPublishDetails2Request = 0x7016,
256256
Data_AreaServerPublishDetails3Request = 0x7881,
257257
Data_AreaServerPublishDetails4Request = 0x7887,
258-
Data_AreaServerPublishDetails6Request = 0x78a7,
258+
Data_AreaServerDateTimeRequest = 0x78a7,
259259

260260
Data_AreaServerPublishDetails1Success = 0x7012,
261261
Data_AreaServerPublishDetails2Success = 0x7017,
262262
Data_AreaServerPublishDetails3Success = 0x7882,
263263
Data_AreaServerPublishDetails4Success = 0x7888,
264264
Data_AreaServerPublishDetails5Success = 0x741e,
265-
Data_AreaServerPublishDetails6Success = 0x78a8,
265+
Data_AreaServerDateTimeSuccess = 0x78a8,
266266
Data_AreaServerPublishDetails7Success = 0x780d,
267267

268268

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System;
2+
using System.Buffers.Binary;
3+
using System.Collections.Generic;
4+
using System.Net;
5+
using System.Threading.Tasks;
6+
using Fragment.NetSlum.Core.Extensions;
7+
using Fragment.NetSlum.Networking.Attributes;
8+
using Fragment.NetSlum.Networking.Constants;
9+
using Fragment.NetSlum.Networking.Objects;
10+
using Fragment.NetSlum.Networking.Packets.Response;
11+
using Fragment.NetSlum.Networking.Sessions;
12+
using Microsoft.Extensions.Logging;
13+
using Fragment.NetSlum.Networking.Packets.Response.AreaServer;
14+
using Fragment.NetSlum.TcpServer.Extensions;
15+
16+
namespace Fragment.NetSlum.Networking.Packets.Request.AreaServer;
17+
18+
[FragmentPacket(MessageType.Data, OpCodes.Data_AreaServerDateTimeRequest)]
19+
public class AreaServerDateTimeRequest : BaseRequest
20+
{
21+
private readonly ILogger<AreaServerIPAddressPortRequest> _logger;
22+
23+
public AreaServerDateTimeRequest(ILogger<AreaServerIPAddressPortRequest> logger)
24+
{
25+
_logger = logger;
26+
}
27+
28+
public override ValueTask<ICollection<FragmentMessage>> GetResponse(FragmentTcpSession session, FragmentMessage request)
29+
{
30+
BaseResponse response = new AreaServerDateTimeResponse();
31+
return SingleMessage(response.Build());
32+
}
33+
}

src/Fragment.NetSlum.Networking/Packets/Request/AreaServer/AreaServerPublishDetailsRequest.cs

-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ namespace Fragment.NetSlum.Networking.Packets.Request.AreaServer;
1717
[FragmentPacket(MessageType.Data, OpCodes.Data_AreaServerPublishDetails2Request)]
1818
[FragmentPacket(MessageType.Data, OpCodes.Data_AreaServerPublishDetails3Request)]
1919
[FragmentPacket(MessageType.Data, OpCodes.Data_AreaServerPublishDetails4Request)]
20-
[FragmentPacket(MessageType.Data, OpCodes.Data_AreaServerPublishDetails6Request)]
2120
public class AreaServerPublishDetailsRequest:BaseRequest
2221
{
2322
private readonly FragmentContext _database;
@@ -70,8 +69,6 @@ public override ValueTask<ICollection<FragmentMessage>> GetResponse(FragmentTcpS
7069
]
7170
};
7271
break;
73-
case OpCodes.Data_AreaServerPublishDetails6Request:
74-
//response = new AreaServerPublishDetailsResponse() { PacketType = OpCodes.Data_AreaServerPublishDetails6Success, Data = new byte[] { 0x00, 0x09 } };
7572
default:
7673
return NoResponse();
7774
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using Fragment.NetSlum.Core.Buffers;
2+
using Fragment.NetSlum.Core.Extensions;
3+
using Fragment.NetSlum.Networking.Constants;
4+
using Fragment.NetSlum.Networking.Objects;
5+
using System;
6+
using System.Buffers.Binary;
7+
8+
namespace Fragment.NetSlum.Networking.Packets.Response.AreaServer;
9+
10+
public class AreaServerDateTimeResponse : BaseResponse
11+
{
12+
public override FragmentMessage Build()
13+
{
14+
var writer = new MemoryWriter(8);
15+
writer.Write((uint)0);
16+
writer.Write((uint)DateTime.UtcNow.ToEpoch());
17+
18+
return new FragmentMessage
19+
{
20+
MessageType = MessageType.Data,
21+
DataPacketType = OpCodes.Data_AreaServerDateTimeSuccess,
22+
Data = writer.Buffer,
23+
};
24+
}
25+
}

0 commit comments

Comments
 (0)