From 130f83544c466f3816845bd62b6947ee5cae01a4 Mon Sep 17 00:00:00 2001 From: rafi1212122 Date: Sun, 4 Jun 2023 21:36:34 +0700 Subject: [PATCH] LeShite abyss --- Common/Utils/ExcelReader/ExBossMonsterData.cs | 7 +- Common/Utils/ExcelReader/UltraEndlessFloor.cs | 38 ++++++++ Common/Utils/ExcelReader/UltraEndlessSite.cs | 48 ++++++++++ GameServer/Commands/ExBossMonsterData.cs | 88 ------------------- .../ClientCheckNetworkEnvReqHandler.cs | 15 ++++ .../Handlers/GetEndlessStatusReqHandler.cs | 28 ++++++ GameServer/Handlers/GetGodWarReqHandler.cs | 4 +- .../UltraEndlessEnterSiteReqHandler.cs | 15 ++++ .../UltraEndlessGetMainDataReqHandler.cs | 43 +++++++++ .../UltraEndlessGetTopRankReqHandler.cs | 27 ++++++ .../UltraEndlessReportSiteFloorReqHandler.cs | 22 +++++ 11 files changed, 242 insertions(+), 93 deletions(-) create mode 100644 Common/Utils/ExcelReader/UltraEndlessFloor.cs create mode 100644 Common/Utils/ExcelReader/UltraEndlessSite.cs delete mode 100644 GameServer/Commands/ExBossMonsterData.cs create mode 100644 GameServer/Handlers/ClientCheckNetworkEnvReqHandler.cs create mode 100644 GameServer/Handlers/GetEndlessStatusReqHandler.cs create mode 100644 GameServer/Handlers/UltraEndlessEnterSiteReqHandler.cs create mode 100644 GameServer/Handlers/UltraEndlessGetMainDataReqHandler.cs create mode 100644 GameServer/Handlers/UltraEndlessGetTopRankReqHandler.cs create mode 100644 GameServer/Handlers/UltraEndlessReportSiteFloorReqHandler.cs diff --git a/Common/Utils/ExcelReader/ExBossMonsterData.cs b/Common/Utils/ExcelReader/ExBossMonsterData.cs index 8c95f3e..fd6f178 100644 --- a/Common/Utils/ExcelReader/ExBossMonsterData.cs +++ b/Common/Utils/ExcelReader/ExBossMonsterData.cs @@ -1,9 +1,8 @@ -using Common.Utils.ExcelReader; -using Newtonsoft.Json; +using Newtonsoft.Json; -namespace PemukulPaku.GameServer.Commands +namespace Common.Utils.ExcelReader { - internal class ExBossMonsterData : BaseExcelReader + public class ExBossMonsterData : BaseExcelReader { public override string FileName { get { return "ExBossMonsterData.json"; } } } diff --git a/Common/Utils/ExcelReader/UltraEndlessFloor.cs b/Common/Utils/ExcelReader/UltraEndlessFloor.cs new file mode 100644 index 0000000..82fbaf7 --- /dev/null +++ b/Common/Utils/ExcelReader/UltraEndlessFloor.cs @@ -0,0 +1,38 @@ +using Newtonsoft.Json; + +namespace Common.Utils.ExcelReader +{ + public class UltraEndlessFloor : BaseExcelReader + { + public override string FileName { get { return "UltraEndlessFloor.json"; } } + + public List GetFloorDatasFromStageId(int id) + { + return All.Where(floor => floor.StageId == id).ToList(); + } + + public UltraEndlessFloorExcel? FromStageAndFloorId(int stageId, int floorId) + { + return All.FirstOrDefault(x => x.FloorId == floorId && x.StageId == stageId); + } + } + +#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. + public partial class UltraEndlessFloorExcel + { + [JsonProperty("NeedScore")] + public int NeedScore { get; set; } + + [JsonProperty("MaxScore")] + public int MaxScore { get; set; } + + [JsonProperty("DataImpl")] + public object DataImpl { get; set; } + + [JsonProperty("FloorID")] + public int FloorId { get; set; } + + [JsonProperty("StageID")] + public int StageId { get; set; } + } +} diff --git a/Common/Utils/ExcelReader/UltraEndlessSite.cs b/Common/Utils/ExcelReader/UltraEndlessSite.cs new file mode 100644 index 0000000..4234cbe --- /dev/null +++ b/Common/Utils/ExcelReader/UltraEndlessSite.cs @@ -0,0 +1,48 @@ +using Newtonsoft.Json; + +namespace Common.Utils.ExcelReader +{ + public class UltraEndlessSite : BaseExcelReader + { + public override string FileName { get { return "UltraEndlessSite.json"; } } + + public UltraEndlessSiteExcel? FromId(int id) + { + return All.Where(site => site.SiteId == 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 UltraEndlessSiteExcel + { + [JsonProperty("StageID")] + public int StageId { get; set; } + + [JsonProperty("BuffID")] + public int BuffId { get; set; } + + [JsonProperty("SiteNodeName")] + public string SiteNodeName { get; set; } + + [JsonProperty("PreSiteList")] + public int[] PreSiteList { get; set; } + + [JsonProperty("SiteName")] + public string SiteName { get; set; } + + [JsonProperty("LevelEndWebLink")] + public string LevelEndWebLink { get; set; } + + [JsonProperty("HardLevelGroup")] + public int HardLevelGroup { get; set; } + + [JsonProperty("WebLink")] + public string WebLink { get; set; } + + [JsonProperty("DataImpl")] + public object DataImpl { get; set; } + + [JsonProperty("SiteID")] + public int SiteId { get; set; } + } +} diff --git a/GameServer/Commands/ExBossMonsterData.cs b/GameServer/Commands/ExBossMonsterData.cs deleted file mode 100644 index ee91e7c..0000000 --- a/GameServer/Commands/ExBossMonsterData.cs +++ /dev/null @@ -1,88 +0,0 @@ -using Newtonsoft.Json; - -namespace Common.Utils.ExcelReader -{ - internal class ExBossMonsterData : BaseExcelReader - { - public override string FileName { get { return "ExBossMonsterData.json"; } } - } - -#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable. - public partial class ExBossMonsterDataExcel - { - [JsonProperty("BossGroupId")] - public int BossGroupId { get; set; } - - [JsonProperty("BossName")] - public string BossName { get; set; } - - [JsonProperty("BossPrefabPath")] - public string BossPrefabPath { get; set; } - - [JsonProperty("MonsterId")] - public int MonsterId { get; set; } - - [JsonProperty("HardLevel")] - public int HardLevel { get; set; } - - [JsonProperty("HardLevelGroup")] - public int HardLevelGroup { get; set; } - - [JsonProperty("MonsterHp")] - public uint MonsterHp { get; set; } - - [JsonProperty("MonsterLevel")] - public int MonsterLevel { get; set; } - - [JsonProperty("MonsterBaseScore")] - public int MonsterBaseScore { get; set; } - - [JsonProperty("SceneName")] - public string SceneName { get; set; } - - [JsonProperty("BossAttribute")] - public int BossAttribute { get; set; } - - [JsonProperty("BossSkillTipsList")] - public int[] BossSkillTipsList { get; set; } - - [JsonProperty("DefaultShowSkillDetail")] - public bool DefaultShowSkillDetail { get; set; } - - [JsonProperty("BossDesc")] - public HashName BossDesc { get; set; } - - [JsonProperty("ImagePath")] - public string ImagePath { get; set; } - - [JsonProperty("RestrictList")] - public int[] RestrictList { get; set; } - - [JsonProperty("EventMark")] - public HashName EventMark { get; set; } - - [JsonProperty("TimesScore")] - public int TimesScore { get; set; } - - [JsonProperty("CornerMarkPath")] - public string CornerMarkPath { get; set; } - - [JsonProperty("UpTagList")] - public TagList[] UpTagList { get; set; } - - [JsonProperty("DownTagList")] - public TagList[] DownTagList { get; set; } - - [JsonProperty("ExtraTimeScore")] - public int ExtraTimeScore { get; set; } - - [JsonProperty("ConfigID")] - public int ConfigId { get; set; } - - [JsonProperty("DataImpl")] - public object DataImpl { get; set; } - - [JsonProperty("BossId")] - public int BossId { get; set; } - } -} diff --git a/GameServer/Handlers/ClientCheckNetworkEnvReqHandler.cs b/GameServer/Handlers/ClientCheckNetworkEnvReqHandler.cs new file mode 100644 index 0000000..d587ed9 --- /dev/null +++ b/GameServer/Handlers/ClientCheckNetworkEnvReqHandler.cs @@ -0,0 +1,15 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.ClientCheckNetworkEnvReq)] + internal class ClientCheckNetworkEnvReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + ClientCheckNetworkEnvReq Data = packet.GetDecodedBody(); + + session.Send(Packet.FromProto(new ClientCheckNetworkEnvRsp() { retcode = ClientCheckNetworkEnvRsp.Retcode.Succ, TokenStr = Data.TokenStr }, CmdId.ClientCheckNetworkEnvRsp)); + } + } +} diff --git a/GameServer/Handlers/GetEndlessStatusReqHandler.cs b/GameServer/Handlers/GetEndlessStatusReqHandler.cs new file mode 100644 index 0000000..dc5bb32 --- /dev/null +++ b/GameServer/Handlers/GetEndlessStatusReqHandler.cs @@ -0,0 +1,28 @@ +using Common; +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.GetEndlessStatusReq)] + internal class GetEndlessStatusReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + GetEndlessStatusRsp Rsp = new() + { + retcode = GetEndlessStatusRsp.Retcode.Succ, + CurStatus = new() + { + BeginTime = 0, + EndTime = (uint)Global.GetUnixInSeconds() + 3600 * 24 * 7, + CloseTime = (uint)Global.GetUnixInSeconds() + 3600 * 24 * 7 + 1200, + EndlessType = EndlessType.EndlessTypeUltra, + CanJoinIn = true + }, + SelectedEndlessType = 5 + }; + + session.Send(Packet.FromProto(Rsp, CmdId.GetEndlessStatusRsp)); + } + } +} diff --git a/GameServer/Handlers/GetGodWarReqHandler.cs b/GameServer/Handlers/GetGodWarReqHandler.cs index c4b71ea..df4a6a9 100644 --- a/GameServer/Handlers/GetGodWarReqHandler.cs +++ b/GameServer/Handlers/GetGodWarReqHandler.cs @@ -7,7 +7,9 @@ namespace PemukulPaku.GameServer.Handlers { public void Handle(Session session, Packet packet) { - session.Send(Packet.FromProto(new GetGodWarRsp() { retcode = GetGodWarRsp.Retcode.Succ }, CmdId.GetGodWarRsp)); + GetGodWarRsp Rsp = new() { retcode = GetGodWarRsp.Retcode.Succ }; + + session.Send(Packet.FromProto(Rsp, CmdId.GetGodWarRsp)); } } } diff --git a/GameServer/Handlers/UltraEndlessEnterSiteReqHandler.cs b/GameServer/Handlers/UltraEndlessEnterSiteReqHandler.cs new file mode 100644 index 0000000..1f7c5b6 --- /dev/null +++ b/GameServer/Handlers/UltraEndlessEnterSiteReqHandler.cs @@ -0,0 +1,15 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.UltraEndlessEnterSiteReq)] + internal class UltraEndlessEnterSiteReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + UltraEndlessEnterSiteReq Data = packet.GetDecodedBody(); + + session.Send(Packet.FromProto(new UltraEndlessEnterSiteRsp() { retcode = UltraEndlessEnterSiteRsp.Retcode.Succ, SiteId = Data.SiteId }, CmdId.UltraEndlessEnterSiteRsp)); + } + } +} diff --git a/GameServer/Handlers/UltraEndlessGetMainDataReqHandler.cs b/GameServer/Handlers/UltraEndlessGetMainDataReqHandler.cs new file mode 100644 index 0000000..5d80e2a --- /dev/null +++ b/GameServer/Handlers/UltraEndlessGetMainDataReqHandler.cs @@ -0,0 +1,43 @@ +using Common; +using Common.Resources.Proto; +using Common.Utils.ExcelReader; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.UltraEndlessGetMainDataReq)] + internal class UltraEndlessGetMainDataReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + UltraEndlessGetMainDataRsp Rsp = new() + { + retcode = UltraEndlessGetMainDataRsp.Retcode.Succ, + ScheduleId = 1028, + GroupLevel = 9, + TopGroupLevel = 9, + CupNum = 2000, + MainData = new() + { + ScheduleId = 1028, + EffectTime = 0, + BeginTime = 0, + EndTime = (uint)Global.GetUnixInSeconds() + 3600 * 24 * 7, + CloseTime = (uint)Global.GetUnixInSeconds() + 3600 * 24 * 7 + 1200, + CurSeasonId = 1 + }, + DynamicHardLevel = 430, + LastSettleInfo = new() { } + }; + Rsp.MainData.SiteLists.AddRange(Common.Utils.ExcelReader.UltraEndlessSite.GetInstance().All.Where(x => x.SiteId > 1019).Select(siteData => + { + List floorDatas = Common.Utils.ExcelReader.UltraEndlessFloor.GetInstance().GetFloorDatasFromStageId(siteData.StageId); + var siteInfo = new Common.Resources.Proto.UltraEndlessSite() { SiteId = (uint)siteData.SiteId }; + siteInfo.FloorLists.AddRange(floorDatas.Select(x => new Common.Resources.Proto.UltraEndlessFloor() { Floor = (uint)x.FloorId, MaxScore = 0 })); + + return siteInfo; + })); + + session.Send(Packet.FromProto(Rsp, CmdId.UltraEndlessGetMainDataRsp)); + } + } +} diff --git a/GameServer/Handlers/UltraEndlessGetTopRankReqHandler.cs b/GameServer/Handlers/UltraEndlessGetTopRankReqHandler.cs new file mode 100644 index 0000000..5d50540 --- /dev/null +++ b/GameServer/Handlers/UltraEndlessGetTopRankReqHandler.cs @@ -0,0 +1,27 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.UltraEndlessGetTopRankReq)] + internal class UltraEndlessGetTopRankReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + UltraEndlessGetTopRankReq Data = packet.GetDecodedBody(); + UltraEndlessGetTopRankRsp Rsp = new() + { + retcode = UltraEndlessGetTopRankRsp.Retcode.Succ, + ScheduleId = Data.ScheduleId, + RankData = new() + { + IsFeatureClosed = true, + MyRank = 1, + MyRankType = 1, + MyScore = 0 + } + }; + + session.Send(Packet.FromProto(Rsp, CmdId.UltraEndlessGetTopRankRsp)); + } + } +} diff --git a/GameServer/Handlers/UltraEndlessReportSiteFloorReqHandler.cs b/GameServer/Handlers/UltraEndlessReportSiteFloorReqHandler.cs new file mode 100644 index 0000000..20ceb94 --- /dev/null +++ b/GameServer/Handlers/UltraEndlessReportSiteFloorReqHandler.cs @@ -0,0 +1,22 @@ +using Common.Resources.Proto; + +namespace PemukulPaku.GameServer.Handlers +{ + [PacketCmdId(CmdId.UltraEndlessReportSiteFloorReq)] + internal class UltraEndlessReportSiteFloorReqHandler : IPacketHandler + { + public void Handle(Session session, Packet packet) + { + UltraEndlessReportSiteFloorReq Data = packet.GetDecodedBody(); + // Common.Utils.ExcelReader.UltraEndlessSiteExcel? siteData = Common.Utils.ExcelReader.UltraEndlessSite.GetInstance().FromId((int)Data.SiteId); + + session.Send(Packet.FromProto(new UltraEndlessReportSiteFloorRsp() + { + retcode = UltraEndlessReportSiteFloorRsp.Retcode.Succ, + Floor = Data.Floor, + SiteId = Data.SiteId, + IsUpFloor = false + }, CmdId.UltraEndlessReportSiteFloorRsp)); + } + } +}