From cd2087f6cb4150da843128772e21837f8adaec9b Mon Sep 17 00:00:00 2001 From: rafi1212122 Date: Wed, 7 Jun 2023 10:21:58 +0700 Subject: [PATCH] CustomHead and Frame impl, with `GetMainDataRsp` fix --- Common/Database/Avatar.cs | 71 +++++++++++++++++++ Common/Database/User.cs | 10 +++ Common/Utils/ExcelReader/CustomHeadData.cs | 61 ++++++++++++++++ Common/Utils/ExcelReader/FrameData.cs | 43 +++++++++++ GameServer/Commands/LevelCommand.cs | 3 +- GameServer/Game/Chatrooms/Chatroom.cs | 4 +- .../Handlers/Chat/SendChatMsgNotifyHandler.cs | 3 +- .../Handlers/One/GetMainDataReqHandler.cs | 8 +-- .../Handlers/One/NicknameModifyReqHandler.cs | 2 +- .../Handlers/One/ReportBirthdayReqHandler.cs | 3 +- .../Handlers/One/SetSelfDescReqHandler.cs | 3 +- .../One/UpdateAssistantAvatarIdReqHandler.cs | 2 +- .../Three/GetCustomHeadDataReqHandler.cs | 3 +- .../GetOtherPlayerClientSettingReqHadler.cs | 22 ++++++ .../Handlers/Three/SetCustomHeadReqHandler.cs | 23 ++++++ .../Three/SetWarshipAvatarReqHandler.cs | 3 +- .../Handlers/Two/GetFrameDataReqHandler.cs | 2 +- .../Two/GetOtherPlayerCardDataReqHandler.cs | 49 +++++++++++++ .../Handlers/Two/SetFrameUseReqHandler.cs | 22 ++++++ .../Handlers/Warship/SetWarshipReqHandler.cs | 3 +- 20 files changed, 324 insertions(+), 16 deletions(-) create mode 100644 Common/Utils/ExcelReader/CustomHeadData.cs create mode 100644 Common/Utils/ExcelReader/FrameData.cs create mode 100644 GameServer/Handlers/Three/GetOtherPlayerClientSettingReqHadler.cs create mode 100644 GameServer/Handlers/Three/SetCustomHeadReqHandler.cs create mode 100644 GameServer/Handlers/Two/GetOtherPlayerCardDataReqHandler.cs create mode 100644 GameServer/Handlers/Two/SetFrameUseReqHandler.cs diff --git a/Common/Database/Avatar.cs b/Common/Database/Avatar.cs index 4f792c4..40a1762 100644 --- a/Common/Database/Avatar.cs +++ b/Common/Database/Avatar.cs @@ -102,6 +102,77 @@ namespace Common.Database } } + public AvatarDetailData ToDetailData(EquipmentScheme equipment) + { + Weapon? weapon = equipment.WeaponList.Where(x => x.UniqueId == WeaponUniqueId).FirstOrDefault(); + Stigmata? stigmata1 = equipment.StigmataList.Where(x => x.UniqueId == StigmataUniqueId1).FirstOrDefault(); + Stigmata? stigmata2 = equipment.StigmataList.Where(x => x.UniqueId == StigmataUniqueId2).FirstOrDefault(); + Stigmata? stigmata3 = equipment.StigmataList.Where(x => x.UniqueId == StigmataUniqueId3).FirstOrDefault(); + + AvatarDetailData detailData = new() + { + AvatarId = AvatarId, + AvatarArtifact = AvatarArtifact, + AvatarLevel = Level, + AvatarStar = Star, + AvatarSubStar = SubStar, + DressId = DressId, + }; + + if (weapon is not null) + { + detailData.Weapon = new() + { + Id = weapon.Id, + Level = weapon.Level, + UniqueId = weapon.UniqueId, + SubWeaponId = weapon.SubWeaponId + }; + } + + if (stigmata1 is not null) + { + detailData.Stigmata1 = new() + { + Id = stigmata1.Id, + Level = stigmata1.Level, + UniqueId = stigmata1.UniqueId + }; + detailData.Stigmata1.RuneLists.AddRange(stigmata1.RuneLists); + } + + if (stigmata2 is not null) + { + detailData.Stigmata2 = new() + { + Id = stigmata2.Id, + Level = stigmata2.Level, + UniqueId = stigmata2.UniqueId + }; + detailData.Stigmata2.RuneLists.AddRange(stigmata2.RuneLists); + } + + if (stigmata3 is not null) + { + detailData.Stigmata3 = new() + { + Id = stigmata3.Id, + Level = stigmata3.Level, + UniqueId = stigmata3.UniqueId + }; + detailData.Stigmata3.RuneLists.AddRange(stigmata3.RuneLists); + } + + detailData.SkillLists.AddRange(SkillLists.Select(x => + { + AvatarSkillDetailData skillDetailData = new() { SkillId = x.SkillId }; + skillDetailData.SubSkillLists.AddRange(x.SubSkillLists.Select(x => new AvatarSubSkillDetailData() { IsMask = x.IsMask, Level = x.Level, SubSkillId = x.SubSkillId })); + return skillDetailData; + })); + + return detailData; + } + public void AddFragment(uint num) { Fragment += num; } public void SetDress(uint dressId) { DressId = dressId; } diff --git a/Common/Database/User.cs b/Common/Database/User.cs index e323c76..ab6f4aa 100644 --- a/Common/Database/User.cs +++ b/Common/Database/User.cs @@ -31,6 +31,8 @@ namespace Common.Database WarshipFirstAvatarId = 101, WarshipSecondAvatarId = 0 }, + CustomHeadId = 161001, + FrameId = 200001, AssistantAvatarId = 101, BirthDate = 0, AbyssDynamicHard = 100, @@ -55,6 +57,12 @@ namespace Common.Database return user; } + public static UserScheme? FromUid(uint uid) + { + UserScheme? user = collection.AsQueryable().Where(d => d.Uid == uid).FirstOrDefault(); + return user; + } + } #pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. @@ -70,6 +78,8 @@ namespace Common.Database public string SelfDesc { get; set; } public bool IsFirstLogin { get; set; } public string Token { get; set; } + public int CustomHeadId { get; set; } + public int FrameId { get; set; } public int WarshipId { get; set; } public WarshipAvatarData WarshipAvatar { get; set; } public int AssistantAvatarId { get; set; } diff --git a/Common/Utils/ExcelReader/CustomHeadData.cs b/Common/Utils/ExcelReader/CustomHeadData.cs new file mode 100644 index 0000000..3b3d57f --- /dev/null +++ b/Common/Utils/ExcelReader/CustomHeadData.cs @@ -0,0 +1,61 @@ +using Newtonsoft.Json; + +namespace Common.Utils.ExcelReader +{ + public class CustomHeadData : BaseExcelReader + { + public override string FileName { get { return "CustomHeadData.json"; } } + } + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public partial class CustomHeadDataExcel + { + [JsonProperty("indexID")] + public int IndexId { get; set; } + + [JsonProperty("Page")] + public int Page { get; set; } + + [JsonProperty("headTitle")] + public string HeadTitle { get; set; } + + [JsonProperty("headDescription")] + public string HeadDescription { get; set; } + + [JsonProperty("iconPath")] + public string IconPath { get; set; } + + [JsonProperty("imagePath")] + public string ImagePath { get; set; } + + [JsonProperty("Show")] + public bool Show { get; set; } + + [JsonProperty("HeadType")] + public int HeadType { get; set; } + + [JsonProperty("HeadParaInt")] + public int HeadParaInt { get; set; } + + [JsonProperty("TimeType")] + public int TimeType { get; set; } + + [JsonProperty("During")] + public int During { get; set; } + + [JsonProperty("EndTime")] + public string EndTime { get; set; } + + [JsonProperty("BgColorPath")] + public string BgColorPath { get; set; } + + [JsonProperty("rarity")] + public int Rarity { get; set; } + + [JsonProperty("DataImpl")] + public object DataImpl { get; set; } + + [JsonProperty("headID")] + public int HeadId { get; set; } + } +} diff --git a/Common/Utils/ExcelReader/FrameData.cs b/Common/Utils/ExcelReader/FrameData.cs new file mode 100644 index 0000000..df558c6 --- /dev/null +++ b/Common/Utils/ExcelReader/FrameData.cs @@ -0,0 +1,43 @@ +using Newtonsoft.Json; + +namespace Common.Utils.ExcelReader +{ + public class FrameData : BaseExcelReader + { + public override string FileName { get { return "FrameData.json"; } } + } + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public partial class FrameDataExcel + { + [JsonProperty("name")] + public HashName Name { get; set; } + + [JsonProperty("rarity")] + public int Rarity { get; set; } + + [JsonProperty("desc")] + public HashName Desc { get; set; } + + [JsonProperty("iconPath")] + public string IconPath { get; set; } + + [JsonProperty("imagePath")] + public string ImagePath { get; set; } + + [JsonProperty("isShow")] + public bool IsShow { get; set; } + + [JsonProperty("UIShowOrder")] + public int UiShowOrder { get; set; } + + [JsonProperty("Type")] + public int Type { get; set; } + + [JsonProperty("DataImpl")] + public object DataImpl { get; set; } + + [JsonProperty("id")] + public int Id { get; set; } + } +} diff --git a/GameServer/Commands/LevelCommand.cs b/GameServer/Commands/LevelCommand.cs index ced7c35..9802f36 100644 --- a/GameServer/Commands/LevelCommand.cs +++ b/GameServer/Commands/LevelCommand.cs @@ -15,7 +15,8 @@ namespace PemukulPaku.GameServer.Commands { retcode = GetMainDataRsp.Retcode.Succ, Level = (uint)PlayerLevelData.GetInstance().CalculateLevel(session.Player.User.Exp).Level, - Exp = (uint)PlayerLevelData.GetInstance().CalculateLevel(session.Player.User.Exp).Exp + Exp = (uint)PlayerLevelData.GetInstance().CalculateLevel(session.Player.User.Exp).Exp, + TypeLists = new uint[] { 3, 4 } }; session.Send(Packet.FromProto(Rsp, CmdId.GetMainDataRsp), Packet.FromProto(new PlayerLevelUpNotify() { NewLevel = Rsp.Level }, CmdId.PlayerLevelUpNotify)); } diff --git a/GameServer/Game/Chatrooms/Chatroom.cs b/GameServer/Game/Chatrooms/Chatroom.cs index 487ab5c..7750bcd 100644 --- a/GameServer/Game/Chatrooms/Chatroom.cs +++ b/GameServer/Game/Chatrooms/Chatroom.cs @@ -70,8 +70,8 @@ namespace PemukulPaku.GameServer.Game.Chatrooms chatMsg.Time = (uint)Global.GetUnixInSeconds(); chatMsg.AvatarId = (uint)User.AssistantAvatarId; chatMsg.DressId = session.Player.AvatarList.Where(avatar => avatar.AvatarId == User.AssistantAvatarId).First().DressId; - chatMsg.FrameId = 200001; - chatMsg.CustomHeadId = 161001; + chatMsg.FrameId = User.FrameId < 200001 ? 200001 : (uint)User.FrameId; + chatMsg.CustomHeadId = (uint)User.CustomHeadId; Broadcast(chatMsg); Messages.Add(chatMsg); diff --git a/GameServer/Handlers/Chat/SendChatMsgNotifyHandler.cs b/GameServer/Handlers/Chat/SendChatMsgNotifyHandler.cs index fd94277..bfd1e54 100644 --- a/GameServer/Handlers/Chat/SendChatMsgNotifyHandler.cs +++ b/GameServer/Handlers/Chat/SendChatMsgNotifyHandler.cs @@ -9,7 +9,8 @@ namespace PemukulPaku.GameServer.Handlers public void Handle(Session session, Packet packet) { SendChatMsgNotify Data = packet.GetDecodedBody(); - WorldChatroom.GetInstance().GetChatroom(session).OnSendChat(session, Data.ChatMsg); + if (Data.ChatMsg.Channel == ChatMsg.MsgChannel.World) + WorldChatroom.GetInstance().GetChatroom(session).OnSendChat(session, Data.ChatMsg); } } } diff --git a/GameServer/Handlers/One/GetMainDataReqHandler.cs b/GameServer/Handlers/One/GetMainDataReqHandler.cs index 7c44f14..170fcce 100644 --- a/GameServer/Handlers/One/GetMainDataReqHandler.cs +++ b/GameServer/Handlers/One/GetMainDataReqHandler.cs @@ -9,8 +9,8 @@ namespace PemukulPaku.GameServer.Handlers { public void Handle(Session session, Packet packet) { + GetMainDataReq Data = packet.GetDecodedBody(); UserScheme User = session.Player.User; - PlayerLevelData.LevelData levelData = PlayerLevelData.GetInstance().CalculateLevel(User.Exp); GetMainDataRsp Rsp = new() @@ -23,18 +23,18 @@ namespace PemukulPaku.GameServer.Handlers Exp = (uint)levelData.Exp, FreeHcoin = (uint)User.Hcoin, Hcoin = (uint)User.Hcoin, - CustomHeadId = 161001, + CustomHeadId = (uint)User.CustomHeadId, Scoin = session.Player.Equipment.MaterialList.Where(mat => mat.Id == 100).FirstOrDefault()?.Num ?? 0, IsAll = true, RegisterTime = User.GetCreationTime(), PayHcoin = 0, WarshipAvatar = User.WarshipAvatar, SelfDesc = User.SelfDesc, - UseFrameId = 200001, + UseFrameId = User.FrameId < 200001 ? 200001 : (uint)User.FrameId, OnPhonePendantId = 350005, Stamina = (uint)User.Stamina, StaminaRecoverConfigTime = 360, - StaminaRecoverLeftTime = 0, + StaminaRecoverLeftTime = 360, EquipmentSizeLimit = 1000, OpenPanelActivityLists = new uint[] { 2 }, ChatworldActivityInfo = new() diff --git a/GameServer/Handlers/One/NicknameModifyReqHandler.cs b/GameServer/Handlers/One/NicknameModifyReqHandler.cs index 5e5d349..39c674f 100644 --- a/GameServer/Handlers/One/NicknameModifyReqHandler.cs +++ b/GameServer/Handlers/One/NicknameModifyReqHandler.cs @@ -11,7 +11,7 @@ namespace PemukulPaku.GameServer.Handlers session.Player.User.Nick = Data.Nickname; - GetMainDataRsp MainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, Nickname = session.Player.User.Nick }; + GetMainDataRsp MainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, Nickname = session.Player.User.Nick, TypeLists = new uint[] { 2 } }; session.Send(Packet.FromProto(MainDataRsp, CmdId.GetMainDataRsp), Packet.FromProto(new NicknameModifyRsp() { retcode = NicknameModifyRsp.Retcode.Succ }, CmdId.NicknameModifyRsp)); } } diff --git a/GameServer/Handlers/One/ReportBirthdayReqHandler.cs b/GameServer/Handlers/One/ReportBirthdayReqHandler.cs index d209f40..b5176ef 100644 --- a/GameServer/Handlers/One/ReportBirthdayReqHandler.cs +++ b/GameServer/Handlers/One/ReportBirthdayReqHandler.cs @@ -12,7 +12,8 @@ namespace PemukulPaku.GameServer.Handlers GetMainDataRsp mainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, - Birthday = Data.Birthday + Birthday = Data.Birthday, + TypeLists = new uint[] { 21 } }; ReportBirthdayRsp Rsp = new() { retcode = ReportBirthdayRsp.Retcode.Succ }; diff --git a/GameServer/Handlers/One/SetSelfDescReqHandler.cs b/GameServer/Handlers/One/SetSelfDescReqHandler.cs index b400ee1..4d9ebf7 100644 --- a/GameServer/Handlers/One/SetSelfDescReqHandler.cs +++ b/GameServer/Handlers/One/SetSelfDescReqHandler.cs @@ -12,7 +12,8 @@ namespace PemukulPaku.GameServer.Handlers GetMainDataRsp mainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, - SelfDesc = Data.SelfDesc + SelfDesc = Data.SelfDesc, + TypeLists = new uint[] { 16 } }; SetSelfDescRsp Rsp = new() { retcode = SetSelfDescRsp.Retcode.Succ }; diff --git a/GameServer/Handlers/One/UpdateAssistantAvatarIdReqHandler.cs b/GameServer/Handlers/One/UpdateAssistantAvatarIdReqHandler.cs index 74d6068..0713b64 100644 --- a/GameServer/Handlers/One/UpdateAssistantAvatarIdReqHandler.cs +++ b/GameServer/Handlers/One/UpdateAssistantAvatarIdReqHandler.cs @@ -11,7 +11,7 @@ namespace PemukulPaku.GameServer.Handlers session.Player.User.AssistantAvatarId = (int)Data.AvatarId; UpdateAssistantAvatarIdRsp Rsp = new() { retcode = UpdateAssistantAvatarIdRsp.Retcode.Succ }; - GetMainDataRsp MainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, AssistantAvatarId = (uint)session.Player.User.AssistantAvatarId }; + GetMainDataRsp MainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, AssistantAvatarId = (uint)session.Player.User.AssistantAvatarId, TypeLists = new uint[] { 19 } }; session.Send(Packet.FromProto(MainDataRsp, CmdId.GetMainDataRsp), Packet.FromProto(Rsp, CmdId.UpdateAssistantAvatarIdRsp)); } diff --git a/GameServer/Handlers/Three/GetCustomHeadDataReqHandler.cs b/GameServer/Handlers/Three/GetCustomHeadDataReqHandler.cs index 35e7555..29bbb83 100644 --- a/GameServer/Handlers/Three/GetCustomHeadDataReqHandler.cs +++ b/GameServer/Handlers/Three/GetCustomHeadDataReqHandler.cs @@ -1,4 +1,5 @@ using Common.Resources.Proto; +using Common.Utils.ExcelReader; namespace PemukulPaku.GameServer.Handlers { @@ -8,7 +9,7 @@ namespace PemukulPaku.GameServer.Handlers public void Handle(Session session, Packet packet) { GetCustomHeadDataRsp Rsp = new() { retcode = GetCustomHeadDataRsp.Retcode.Succ, IsAll = true }; - Rsp.CustomHeadLists.Add(new CustomHead() { Id = 161001 }); + Rsp.CustomHeadLists.AddRange(CustomHeadData.GetInstance().All.Where(x => x.HeadParaInt == 0 || session.Player.AvatarList.Select(x => x.AvatarId).ToList().Contains((uint)x.HeadParaInt) || session.Player.AvatarList.SelectMany(x => x.DressLists).ToList().Contains((uint)x.HeadParaInt)).Select(x => new CustomHead() { Id = (uint)x.HeadId })); session.Send(Packet.FromProto(Rsp, CmdId.GetCustomHeadDataRsp)); } diff --git a/GameServer/Handlers/Three/GetOtherPlayerClientSettingReqHadler.cs b/GameServer/Handlers/Three/GetOtherPlayerClientSettingReqHadler.cs new file mode 100644 index 0000000..eb709c3 --- /dev/null +++ b/GameServer/Handlers/Three/GetOtherPlayerClientSettingReqHadler.cs @@ -0,0 +1,22 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers.Three +{ + [PacketCmdId(CmdId.GetOtherPlayerClientSettingReq)] + internal class GetOtherPlayerClientSettingReqHadler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetOtherPlayerClientSettingReq Data = packet.GetDecodedBody(); + GetOtherPlayerClientSettingRsp Rsp = new() + { + retcode = GetOtherPlayerClientSettingRsp.Retcode.Succ, + ClientSettingType = Data.ClientSettingType, + TargetUid = Data.TargetUid, + IsWeeklyGuideSwitchOn = false + }; + + session.Send(Packet.FromProto(Rsp, CmdId.GetOtherPlayerClientSettingRsp)); + } + } +} diff --git a/GameServer/Handlers/Three/SetCustomHeadReqHandler.cs b/GameServer/Handlers/Three/SetCustomHeadReqHandler.cs new file mode 100644 index 0000000..4105146 --- /dev/null +++ b/GameServer/Handlers/Three/SetCustomHeadReqHandler.cs @@ -0,0 +1,23 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers.Three +{ + [PacketCmdId(CmdId.SetCustomHeadReq)] + internal class SetCustomHeadReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + SetCustomHeadReq Data = packet.GetDecodedBody(); + session.Player.User.CustomHeadId = (int)Data.Id; + + GetMainDataRsp mainDataRsp = new() + { + retcode = GetMainDataRsp.Retcode.Succ, + CustomHeadId = Data.Id, + TypeLists = new uint[] { 36 } + }; + + session.Send(Packet.FromProto(mainDataRsp, CmdId.GetMainDataRsp), Packet.FromProto(new SetCustomHeadRsp() { retcode = SetCustomHeadRsp.Retcode.Succ }, CmdId.SetCustomHeadRsp)); + } + } +} diff --git a/GameServer/Handlers/Three/SetWarshipAvatarReqHandler.cs b/GameServer/Handlers/Three/SetWarshipAvatarReqHandler.cs index c9b6f47..4c5e1f8 100644 --- a/GameServer/Handlers/Three/SetWarshipAvatarReqHandler.cs +++ b/GameServer/Handlers/Three/SetWarshipAvatarReqHandler.cs @@ -22,7 +22,8 @@ namespace PemukulPaku.GameServer.Handlers GetMainDataRsp MainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, - WarshipAvatar = session.Player.User.WarshipAvatar + WarshipAvatar = session.Player.User.WarshipAvatar, + TypeLists = new uint[] { 35 } }; session.Send(Packet.FromProto(MainDataRsp, CmdId.GetMainDataRsp), Packet.FromProto(new SetWarshipAvatarRsp() { retcode = SetWarshipAvatarRsp.Retcode.Succ }, CmdId.SetWarshipAvatarRsp)); diff --git a/GameServer/Handlers/Two/GetFrameDataReqHandler.cs b/GameServer/Handlers/Two/GetFrameDataReqHandler.cs index acaaa03..8139ecd 100644 --- a/GameServer/Handlers/Two/GetFrameDataReqHandler.cs +++ b/GameServer/Handlers/Two/GetFrameDataReqHandler.cs @@ -8,7 +8,7 @@ namespace PemukulPaku.GameServer.Handlers public void Handle(Session session, Packet packet) { GetFrameDataRsp Rsp = new() { retcode = GetFrameDataRsp.Retcode.Succ, IsAll = true }; - Rsp.FrameLists.Add(new FrameData() { Id = 200001 }); + Rsp.FrameLists.AddRange(Common.Utils.ExcelReader.FrameData.GetInstance().All.Select(x => new FrameData() { Id = (uint)x.Id })); session.Send(Packet.FromProto(Rsp, CmdId.GetFrameDataRsp)); } diff --git a/GameServer/Handlers/Two/GetOtherPlayerCardDataReqHandler.cs b/GameServer/Handlers/Two/GetOtherPlayerCardDataReqHandler.cs new file mode 100644 index 0000000..73c36a6 --- /dev/null +++ b/GameServer/Handlers/Two/GetOtherPlayerCardDataReqHandler.cs @@ -0,0 +1,49 @@ +using Common.Database; +using Common.Resources.Proto; +using Common.Utils.ExcelReader; +using PemukulPaku.GameServer.Game; + +namespace PemukulPaku.GameServer.Handlers.Two +{ + [PacketCmdId(CmdId.GetOtherPlayerCardDataReq)] + internal class GetOtherPlayerCardDataReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetOtherPlayerCardDataReq Data = packet.GetDecodedBody(); + UserScheme? user = User.FromUid(Data.TargetUid); + GetOtherPlayerCardDataRsp Rsp = new() { retcode = GetOtherPlayerCardDataRsp.Retcode.Succ, TargetUid = Data.TargetUid }; + + if(user is not null) + { + Player player = new(user); + Rsp.CardData = new() + { + Uid = player.User.Uid, + MsgData = new() + { + MsgIndex = 0, + MsgConfig = 1 + }, + OnPhonePendantId = 350005 + }; + Rsp.PlayerData = new() + { + Uid = player.User.Uid, + Nickname = player.User.Nick, + Level = (uint)PlayerLevelData.GetInstance().CalculateLevel(player.User.Exp).Level, + SelfDesc = player.User.SelfDesc, + CustomHeadId = (uint)player.User.CustomHeadId, + FrameId = player.User.FrameId < 200001 ? 200001 : (uint)player.User.FrameId, + LeaderAvatar = player.AvatarList.FirstOrDefault(x => x.AvatarId == player.User.AvatarTeamList.FirstOrDefault()?.AvatarIdLists[0])?.ToDetailData(player.Equipment) ?? new() { AvatarId = 101 } + }; + } + else + { + Rsp.retcode = GetOtherPlayerCardDataRsp.Retcode.Fail; + } + + session.Send(Packet.FromProto(Rsp, CmdId.GetOtherPlayerCardDataRsp)); + } + } +} diff --git a/GameServer/Handlers/Two/SetFrameUseReqHandler.cs b/GameServer/Handlers/Two/SetFrameUseReqHandler.cs new file mode 100644 index 0000000..f4bd91b --- /dev/null +++ b/GameServer/Handlers/Two/SetFrameUseReqHandler.cs @@ -0,0 +1,22 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers.Two +{ + [PacketCmdId(CmdId.SetFrameUseReq)] + internal class SetFrameUseReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + SetFrameUseReq Data = packet.GetDecodedBody(); + session.Player.User.FrameId = (int)Data.FrameId; + GetMainDataRsp mainDataRsp = new() + { + retcode = GetMainDataRsp.Retcode.Succ, + UseFrameId = Data.FrameId, + TypeLists = new uint[] { 26 } + }; + + session.Send(Packet.FromProto(mainDataRsp, CmdId.GetMainDataRsp), Packet.FromProto(new SetFrameUseRsp() { FrameId = Data.FrameId, retcode = SetFrameUseRsp.Retcode.Succ }, CmdId.SetFrameUseRsp)); + } + } +} diff --git a/GameServer/Handlers/Warship/SetWarshipReqHandler.cs b/GameServer/Handlers/Warship/SetWarshipReqHandler.cs index 581dc27..e1460d3 100644 --- a/GameServer/Handlers/Warship/SetWarshipReqHandler.cs +++ b/GameServer/Handlers/Warship/SetWarshipReqHandler.cs @@ -14,7 +14,8 @@ namespace PemukulPaku.GameServer.Handlers GetMainDataRsp MainDataRsp = new() { retcode = GetMainDataRsp.Retcode.Succ, - WarshipTheme = new() { WarshipId = (uint)session.Player.User.WarshipId } + WarshipTheme = new() { WarshipId = (uint)session.Player.User.WarshipId }, + TypeLists = new uint[] { 38 } }; SetWarshipRsp Rsp = new() { retcode = SetWarshipRsp.Retcode.Succ };