ddon-server/Arrowgene.Ddon.GameServer/Handler/MailSystemMailGetListDataHandler.cs
Ryan Yappert 0e865d30cf
Feature: Communication Features (#983)
* Adds packet structures, handlers, and server support for Player Mail, Blacklists, Group Chats and Message Sets.
Implements rudimentary GM features via chat command.
Adds support for IP Bans and muted players.
Simplifies how login stamps are handled.
Cleans up and modernizes some old packet handlers.

* Rebase. Fix CommandRoute and AccountRoute. Cleanup and response to PR comments. Rearrange some of the schedule_next stuff in the DB creation schema for clarity.
2026-04-18 01:27:57 -07:00

44 lines
5.1 KiB
C#

using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.Server;
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
using Arrowgene.Logging;
using Arrowgene.Ddon.Shared.Model;
using System.Linq;
namespace Arrowgene.Ddon.GameServer.Handler
{
public class MailSystemMailGetListDataHandler : GameRequestPacketHandler<C2SMailSystemMailGetListDataReq, S2CMailSystemMailGetListDataRes>
{
private static readonly ServerLogger Logger = LogProvider.Logger<ServerLogger>(typeof(MailSystemMailGetListDataHandler));
public MailSystemMailGetListDataHandler(DdonGameServer server) : base(server)
{
}
public override S2CMailSystemMailGetListDataRes Handle(GameClient client, C2SMailSystemMailGetListDataReq request)
{
// var pcap = new S2CMailSystemMailGetListDataRes.Serializer().Read(InGameDump.Dump_85.AsBuffer());
// var pcap = new S2CMailSystemMailGetListDataRes.Serializer().Read(pcap_data);
S2CMailSystemMailGetListDataRes result = new S2CMailSystemMailGetListDataRes();
var messages = Server.Database.SelectSystemMailMessages(client.Character.CharacterId);
foreach (var message in messages)
{
byte itemState = (byte) MailItemState.Exist;
var attachments = Server.Database.SelectAttachmentsForSystemMail(message.MessageId);
if (attachments.Count > 0)
{
// TODO: Should item state be based on attachment type?
itemState = (byte)(attachments.All(x => x.IsReceived) ? MailItemState.Exist : MailItemState.Exist | MailItemState.Item);
}
result.MailInfo.Add(message.ToCDataMailInfo(itemState));
}
return result;
}
public byte[] pcap_data = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8F, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8E, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8D, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8C, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA8, 0x12, 0x8B, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x44, 0x44, 0x4F, 0x4E, 0xE9, 0x81, 0x8B, 0xE5, 0x96, 0xB6, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0x00, 0x3A, 0xE3, 0x83, 0x89, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xB4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xBA, 0xE3, 0x83, 0x89, 0xE3, 0x82, 0xB0, 0xE3, 0x83, 0x9E, 0x20, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA9, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x92, 0xE3, 0x83, 0x97, 0xE3, 0x83, 0xAC, 0xE3, 0x82, 0xA4, 0xE3, 0x81, 0x8F, 0xE3, 0x81, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xE6, 0xCD, 0xE1, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x05, 0x00, 0x04 };
}
}