PSO2SERVER/Server/Protocol/Handlers/11-ClientHandler/11-06-DeleteCharacter.cs
2024-11-27 18:05:53 +08:00

49 lines
1.5 KiB
C#

using System;
using System.IO;
using PSO2SERVER.Protocol.Packets;
using PSO2SERVER.Database;
using static PSO2SERVER.Protocol.Packets.CharacterDeletionPacket;
namespace PSO2SERVER.Protocol.Handlers
{
[PacketHandlerAttr(0x11, 0x06)]
public class DeleteCharacter : PacketHandler
{
#region implemented abstract members of PacketHandler
public override void HandlePacket(Client context, byte flags, byte[] data, uint position, uint size)
{
var reader = new PacketReader(data);
var CharacterID = reader.ReadInt32();
Logger.Write("[CHR] {0} 正在删除ID {1} 的角色", context._account.Username, CharacterID);
// Delete Character
using (var db = new ServerEf())
{
foreach (var character in db.Characters)
if (character.CharacterID == CharacterID)
{
db.Characters.Remove(character);
db.ChangeTracker.DetectChanges();
break;
}
// Detect the deletion and save the Database
if (db.ChangeTracker.HasChanges())
{
db.SaveChanges();
}
}
context.SendPacket(new CharacterDeletionPacket(DeletionStatus.Success));
//context.SendPacket(new CharacterDeletionPacket(DeletionStatus.UndeletableItems));
}
#endregion
}
}