sync: main repo

This commit is contained in:
Somebody
2025-05-30 19:57:41 +08:00
32 changed files with 562 additions and 131 deletions

View File

@@ -1,4 +1,5 @@
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Chat;
using EggLink.DanhengServer.Kcp;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Chat;
@@ -7,6 +8,8 @@ public class HandlerGetChatFriendHistoryCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
await connection.SendPacket(CmdIds.GetChatFriendHistoryScRsp);
var history = connection.Player!.FriendManager!.FriendData.ChatHistory;
await connection.SendPacket(new PacketGetChatFriendHistoryScRsp(history));
}
}

View File

@@ -0,0 +1,21 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.AddBlacklistCsReq)]
public class HandlerAddBlacklistCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var req = AddBlacklistCsReq.Parser.ParseFrom(data);
var player = await connection.Player!.FriendManager!.AddBlackList((int)req.Uid);
if (player != null)
await connection.SendPacket(new PacketAddBlacklistScRsp(player));
else
await connection.SendPacket(new PacketAddBlacklistScRsp());
}
}

View File

@@ -11,8 +11,8 @@ public class HandlerApplyFriendCsReq : Handler
{
var req = ApplyFriendCsReq.Parser.ParseFrom(data);
await connection.Player!.FriendManager!.AddFriend((int)req.Uid);
var ret = await connection.Player!.FriendManager!.AddFriend((int)req.Uid);
await connection.SendPacket(new PacketApplyFriendScRsp(req.Uid));
await connection.SendPacket(new PacketApplyFriendScRsp(ret, req.Uid));
}
}

View File

@@ -0,0 +1,18 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.DeleteBlacklistCsReq)]
public class HandlerDeleteBlacklistCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var req = DeleteBlacklistCsReq.Parser.ParseFrom(data);
connection.Player!.FriendManager!.RemoveBlackList((int)req.Uid);
await connection.SendPacket(new PacketDeleteBlacklistScRsp(req.Uid));
}
}

View File

@@ -0,0 +1,20 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.DeleteFriendCsReq)]
public class HandlerDeleteFriendCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var req = DeleteFriendCsReq.Parser.ParseFrom(data);
var uid = await connection.Player!.FriendManager!.RemoveFriend((int)req.Uid);
if (uid == null)
await connection.SendPacket(new PacketDeleteFriendScRsp());
else
await connection.SendPacket(new PacketDeleteFriendScRsp((uint)uid));
}
}

View File

@@ -0,0 +1,16 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.GetFriendLoginInfoCsReq)]
public class HandlerGetFriendLoginInfoCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var friends = connection.Player!.FriendManager!
.GetFriendPlayerData().Select(x => x.Uid).ToList();
await connection.SendPacket(new PacketGetFriendLoginInfoScRsp(friends));
}
}

View File

@@ -0,0 +1,15 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.GetFriendRecommendListInfoCsReq)]
public class HandlerGetFriendRecommendListInfoCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var friends = connection.Player!.FriendManager!.GetRandomFriend();
await connection.SendPacket(new PacketGetFriendRecommendListInfoScRsp(friends));
}
}

View File

@@ -1,8 +1,6 @@
using EggLink.DanhengServer.Database.Player;
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
using EggLink.DanhengServer.Util;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
@@ -13,32 +11,13 @@ public class HandlerGetPlayerDetailInfoCsReq : Handler
{
var req = GetPlayerDetailInfoCsReq.Parser.ParseFrom(data);
var playerData = PlayerData.GetPlayerByUid(req.Uid);
var playerData = connection.Player!.FriendManager!.GetFriendPlayerData([(int)req.Uid]).First();
if (playerData == null)
{
var serverProfile = ConfigManager.Config.ServerOption.ServerProfile;
if (req.Uid == serverProfile.Uid)
{
playerData = new PlayerData
{
Uid = serverProfile.Uid,
HeadIcon = serverProfile.HeadIcon,
Signature = serverProfile.Signature,
Level = serverProfile.Level,
WorldLevel = 0,
Name = serverProfile.Name,
ChatBubble = serverProfile.ChatBubbleId,
PersonalCard = serverProfile.PersonalCardId
};
}
else
{
await connection.SendPacket(new PacketGetPlayerDetailInfoScRsp());
return;
}
await connection.SendPacket(new PacketGetPlayerDetailInfoScRsp());
return;
}
await connection.SendPacket(new PacketGetPlayerDetailInfoScRsp(playerData));
await connection.SendPacket(new PacketGetPlayerDetailInfoScRsp(playerData.ToDetailProto()));
}
}

View File

@@ -16,7 +16,7 @@ public class HandlerHandleFriendCsReq : Handler
if (req.IsAccept)
playerData = await connection.Player!.FriendManager!.ConfirmAddFriend((int)req.Uid);
else
connection.Player!.FriendManager!.RefuseAddFriend((int)req.Uid);
await connection.Player!.FriendManager!.RefuseAddFriend((int)req.Uid);
if (playerData != null)
await connection.SendPacket(new PacketHandleFriendScRsp(req.Uid, req.IsAccept, playerData));

View File

@@ -15,7 +15,7 @@ public class HandlerSearchPlayerCsReq : Handler
foreach (var uid in req.UidList)
{
var player = PlayerData.GetPlayerByUid(uid);
var player = connection.Player!.FriendManager!.GetFriendPlayerData([(int)uid]).First();
if (player != null) playerList.Add(player);
}

View File

@@ -0,0 +1,18 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.SetFriendMarkCsReq)]
public class HandlerSetFriendMarkCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var req = SetFriendMarkCsReq.Parser.ParseFrom(data);
connection.Player!.FriendManager!.MarkFriend((int)req.Uid, req.ADJGKCOKOLN);
await connection.SendPacket(new PacketSetFriendMarkScRsp(req.Uid, req.ADJGKCOKOLN));
}
}

View File

@@ -0,0 +1,18 @@
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Friend;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Friend;
[Opcode(CmdIds.SetFriendRemarkNameCsReq)]
public class HandlerSetFriendRemarkNameCsReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var req = SetFriendRemarkNameCsReq.Parser.ParseFrom(data);
connection.Player!.FriendManager!.RemarkFriendName((int)req.Uid, req.RemarkName);
await connection.SendPacket(new PacketSetFriendRemarkNameScRsp(req.Uid, req.RemarkName));
}
}

View File

@@ -16,7 +16,10 @@ public class HandlerSetAssistAvatarCsReq : Handler
foreach (var id in req.AvatarIdList)
{
if (id == 0) continue;
avatars.Add((int)id);
var avatarData = player.AvatarManager!.AvatarData.FormalAvatars.First(x =>
x.BaseAvatarId == (int)id);
if (avatarData != null) avatars.Add(avatarData.AvatarId);
}
await connection.SendPacket(new PacketSetAssistAvatarScRsp(req.AvatarIdList));

View File

@@ -13,10 +13,13 @@ public class HandlerSetDisplayAvatarCsReq : Handler
var player = connection.Player!;
var avatars = player.AvatarManager!.AvatarData!.DisplayAvatars;
avatars.Clear();
foreach (var id in req.DisplayAvatarList)
foreach (var avatar in req.DisplayAvatarList)
{
if (id.AvatarId == 0) continue;
avatars.Add((int)id.AvatarId);
if (avatar.AvatarId == 0) continue;
var avatarData = player.AvatarManager!.AvatarData.FormalAvatars.First(x =>
x.BaseAvatarId == (int)avatar.AvatarId);
if (avatarData != null) avatars.Add(avatarData.AvatarId);
}
await connection.SendPacket(new PacketSetDisplayAvatarScRsp(req.DisplayAvatarList));