From 6a090b29173d0b510e07a74014c26a832909f064 Mon Sep 17 00:00:00 2001 From: rafi1212122 Date: Mon, 29 May 2023 20:42:34 +0700 Subject: [PATCH] =?UTF-8?q?Packets=20=F0=9F=98=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/Database/User.cs | 4 + Common/Utils/ExcelReader/MissionData.cs | 79 +++++++++++++++++++ .../Handlers/GetBuffEffectReqHandler.cs | 13 +++ GameServer/Handlers/GetGobackReqHandler.cs | 13 +++ .../Handlers/GetLoginActivityReqHandler.cs | 23 ++++++ GameServer/Handlers/GetMainDataReqHandler.cs | 2 +- .../Handlers/GetMissionDataReqHandler.cs | 33 ++++++++ .../Handlers/GetPlayerCardReqHandler.cs | 22 ++++++ .../Handlers/GetPlayerTokenReqHandler.cs | 2 +- GameServer/Handlers/GetRpgTaleReqHandler.cs | 15 ++++ .../Handlers/GetStageChapterReqHandler.cs | 20 +++++ 11 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 Common/Utils/ExcelReader/MissionData.cs create mode 100644 GameServer/Handlers/GetBuffEffectReqHandler.cs create mode 100644 GameServer/Handlers/GetGobackReqHandler.cs create mode 100644 GameServer/Handlers/GetLoginActivityReqHandler.cs create mode 100644 GameServer/Handlers/GetMissionDataReqHandler.cs create mode 100644 GameServer/Handlers/GetPlayerCardReqHandler.cs create mode 100644 GameServer/Handlers/GetRpgTaleReqHandler.cs create mode 100644 GameServer/Handlers/GetStageChapterReqHandler.cs diff --git a/Common/Database/User.cs b/Common/Database/User.cs index 711ff49..faa5e46 100644 --- a/Common/Database/User.cs +++ b/Common/Database/User.cs @@ -79,6 +79,10 @@ namespace Common.Database { User.collection.ReplaceOne(Builders.Filter.Eq(user => user.Id, Id), this); } + public uint GetCreationTime() + { + return (uint)((DateTimeOffset)Id.CreationTime).ToUnixTimeSeconds(); + } } #pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. diff --git a/Common/Utils/ExcelReader/MissionData.cs b/Common/Utils/ExcelReader/MissionData.cs new file mode 100644 index 0000000..d2c0f7d --- /dev/null +++ b/Common/Utils/ExcelReader/MissionData.cs @@ -0,0 +1,79 @@ +using Newtonsoft.Json; + +namespace Common.Utils.ExcelReader +{ + public class MissionData : BaseExcelReader + { + public override string FileName { get { return "MissionData.json"; } } + + public MissionDataExcel? FromId(int id) + { + return All.Where(mission => mission.Id == id).FirstOrDefault(); + } + } + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public partial class MissionDataExcel + { + [JsonProperty("type")] + public int Type { get; set; } + + [JsonProperty("subType")] + public int SubType { get; set; } + + [JsonProperty("title")] + public HashName Title { get; set; } + + [JsonProperty("description")] + public HashName Description { get; set; } + + [JsonProperty("thumb")] + public string Thumb { get; set; } + + [JsonProperty("finishWay")] + public int FinishWay { get; set; } + + [JsonProperty("finishParaInt")] + public int FinishParaInt { get; set; } + + [JsonProperty("finishParaStr")] + public string FinishParaStr { get; set; } + + [JsonProperty("totalProgress")] + public int TotalProgress { get; set; } + + [JsonProperty("rewardId")] + public int RewardId { get; set; } + + [JsonProperty("LinkType")] + public int LinkType { get; set; } + + [JsonProperty("LinkParams")] + public int[] LinkParams { get; set; } + + [JsonProperty("TextmapTag")] + public HashName TextmapTag { get; set; } + + [JsonProperty("LinkParamStr")] + public string LinkParamStr { get; set; } + + [JsonProperty("PreviewTime")] + public int PreviewTime { get; set; } + + [JsonProperty("NoDisplay")] + public bool NoDisplay { get; set; } + + [JsonProperty("IsNeedDisplay")] + public bool IsNeedDisplay { get; set; } + + [JsonProperty("Priority")] + public int Priority { get; set; } + + [JsonProperty("DataImpl")] + public object DataImpl { get; set; } + + [JsonProperty("id")] + public int Id { get; set; } + } +#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. +} diff --git a/GameServer/Handlers/GetBuffEffectReqHandler.cs b/GameServer/Handlers/GetBuffEffectReqHandler.cs new file mode 100644 index 0000000..0b2f43c --- /dev/null +++ b/GameServer/Handlers/GetBuffEffectReqHandler.cs @@ -0,0 +1,13 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetBuffEffectReq)] + internal class GetBuffEffectReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + session.Send(Packet.FromProto(new GetBuffEffectRsp() { retcode = GetBuffEffectRsp.Retcode.Succ }, CmdId.GetBuffEffectRsp)); + } + } +} \ No newline at end of file diff --git a/GameServer/Handlers/GetGobackReqHandler.cs b/GameServer/Handlers/GetGobackReqHandler.cs new file mode 100644 index 0000000..49b8ee4 --- /dev/null +++ b/GameServer/Handlers/GetGobackReqHandler.cs @@ -0,0 +1,13 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetGobackReq)] + internal class GetGobackReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + session.Send(Packet.FromProto(new GetGobackRsp() { retcode = GetGobackRsp.Retcode.Succ }, CmdId.GetGobackRsp)); + } + } +} diff --git a/GameServer/Handlers/GetLoginActivityReqHandler.cs b/GameServer/Handlers/GetLoginActivityReqHandler.cs new file mode 100644 index 0000000..e648a4a --- /dev/null +++ b/GameServer/Handlers/GetLoginActivityReqHandler.cs @@ -0,0 +1,23 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetLoginActivityReq)] + internal class GetLoginActivityReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetLoginActivityRsp Rsp = new () { retcode = GetLoginActivityRsp.Retcode.Succ }; + + Rsp.LoginLists.Add(new LoginActivityData + { + Id = 581, + LoginDays = 1, + AcceptTime = session.Player.User.GetCreationTime(), + DurationEndTime = session.Player.User.GetCreationTime() + 604800 + }); + + session.Send(Packet.FromProto(Rsp, CmdId.GetLoginActivityRsp)); + } + } +} diff --git a/GameServer/Handlers/GetMainDataReqHandler.cs b/GameServer/Handlers/GetMainDataReqHandler.cs index 586db6f..5e25845 100644 --- a/GameServer/Handlers/GetMainDataReqHandler.cs +++ b/GameServer/Handlers/GetMainDataReqHandler.cs @@ -26,7 +26,7 @@ namespace PemukulPaku.GameServer.Handlers CustomHeadId = 161001, Scoin = session.Player.Equipment.MaterialList.Where(mat => mat.Id == 100).FirstOrDefault()?.Num ?? 0, IsAll = true, - RegisterTime = (uint)User.Id.Timestamp, + RegisterTime = User.GetCreationTime(), PayHcoin = 0, WarshipAvatar = User.WarshipAvatar, SelfDesc = User.SelfDesc, diff --git a/GameServer/Handlers/GetMissionDataReqHandler.cs b/GameServer/Handlers/GetMissionDataReqHandler.cs new file mode 100644 index 0000000..c929cd1 --- /dev/null +++ b/GameServer/Handlers/GetMissionDataReqHandler.cs @@ -0,0 +1,33 @@ +using Common.Resources.Proto; +using Common.Utils.ExcelReader; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetMissionDataReq)] + internal class GetMissionDataReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetMissionDataRsp Rsp = new() + { + retcode = GetMissionDataRsp.Retcode.Succ, + IsAll = true + }; + + MissionDataExcel[] missionDatas = MissionData.GetInstance().All; + + Rsp.MissionLists.AddRange(missionDatas.Select(mission => new Mission() + { + MissionId = (uint)mission.Id, + Status = MissionStatus.MissionFinish, + Priority = (uint)mission.Priority, + Progress = (uint)mission.TotalProgress, + BeginTime = session.Player.User.GetCreationTime(), + EndTime = 2073239999, + CycleId = 1 + })); + + session.Send(Packet.FromProto(Rsp, CmdId.GetMissionDataRsp)); + } + } +} diff --git a/GameServer/Handlers/GetPlayerCardReqHandler.cs b/GameServer/Handlers/GetPlayerCardReqHandler.cs new file mode 100644 index 0000000..efc4931 --- /dev/null +++ b/GameServer/Handlers/GetPlayerCardReqHandler.cs @@ -0,0 +1,22 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetPlayerCardReq)] + internal class GetPlayerCardReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetPlayerCardRsp Rsp = new() + { + retcode = GetPlayerCardRsp.Retcode.Succ, + Type = PlayerCardType.CardAll, + ElfIdLists = new uint[] { 0 }, + AvatarIdLists = new uint[] { 0, 0, 0 }, + }; + Rsp.MedalLists.AddRange(new Medal[] { new Medal() { Id = 0, EndTime = 0, ExtraParam = 0 }, new Medal() { Id = 0, EndTime = 0, ExtraParam = 0 } }); + + session.Send(Packet.FromProto(Rsp, CmdId.GetPlayerCardRsp)); + } + } +} diff --git a/GameServer/Handlers/GetPlayerTokenReqHandler.cs b/GameServer/Handlers/GetPlayerTokenReqHandler.cs index f6ce68a..673e595 100644 --- a/GameServer/Handlers/GetPlayerTokenReqHandler.cs +++ b/GameServer/Handlers/GetPlayerTokenReqHandler.cs @@ -13,7 +13,7 @@ namespace PemukulPaku.GameServer.Handlers GetPlayerTokenRsp Rsp = new () { }; UserScheme? CurrentUser = User.FromToken(Packet.AccountToken); - if (CurrentUser == null || CurrentUser.Uid != uint.Parse(Packet.AccountUid)) + if (CurrentUser is null || CurrentUser.Uid != uint.Parse(Packet.AccountUid)) { Rsp.retcode = GetPlayerTokenRsp.Retcode.AccountVerifyError; Rsp.Msg = "Account verification failed, please re-login!"; diff --git a/GameServer/Handlers/GetRpgTaleReqHandler.cs b/GameServer/Handlers/GetRpgTaleReqHandler.cs new file mode 100644 index 0000000..60705f4 --- /dev/null +++ b/GameServer/Handlers/GetRpgTaleReqHandler.cs @@ -0,0 +1,15 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetRpgTaleReq)] + internal class GetRpgTaleReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetRpgTaleReq Data = packet.GetDecodedBody(); + + session.Send(Packet.FromProto(new GetRpgTaleRsp() { retcode = GetRpgTaleRsp.Retcode.Succ, IsAll = Data.IsAll, TaleId = Data.TaleId }, CmdId.GetRpgTaleRsp)); + } + } +} diff --git a/GameServer/Handlers/GetStageChapterReqHandler.cs b/GameServer/Handlers/GetStageChapterReqHandler.cs new file mode 100644 index 0000000..7e0b8bc --- /dev/null +++ b/GameServer/Handlers/GetStageChapterReqHandler.cs @@ -0,0 +1,20 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetStageChapterReq)] + internal class GetStageChapterReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetStageChapterRsp Rsp = new() { retcode = GetStageChapterRsp.Retcode.Succ }; + + for (uint i = 1; i < 38; i++) + { + Rsp.ChapterLists.Add(new() { ChapterId = i, HasTakeChallenge = 0 }); + } + + session.Send(Packet.FromProto(Rsp, CmdId.GetStageChapterRsp)); + } + } +}