diff --git a/Common/Data/Excel/ExBossMonsterDataExcel.cs b/Common/Data/Excel/ExBossMonsterDataExcel.cs new file mode 100644 index 0000000..d4631e1 --- /dev/null +++ b/Common/Data/Excel/ExBossMonsterDataExcel.cs @@ -0,0 +1,16 @@ +namespace KianaBH.Data.Excel; + +[ResourceEntity("ExBossMonsterData.json")] +public class ExBossMonsterDataExcel : ExcelResource +{ + public int BossId { get; set; } + public override int GetId() + { + return BossId; + } + + public override void Loaded() + { + GameData.ExBossMonsterData.Add(BossId, this); + } +} \ No newline at end of file diff --git a/Common/Data/Excel/UltraEndlessFloorExcel.cs b/Common/Data/Excel/UltraEndlessFloorExcel.cs new file mode 100644 index 0000000..7398e57 --- /dev/null +++ b/Common/Data/Excel/UltraEndlessFloorExcel.cs @@ -0,0 +1,25 @@ + +namespace KianaBH.Data.Excel; + +[ResourceEntity("UltraEndlessFloor.json")] +public class UltraEndlessFloorExcel : ExcelResource +{ + public int NeedScore { get; set; } + public int MaxScore { get; set; } + public int FloorID { get; set; } + public int StageID { get; set; } + + public override int GetId() + { + return StageID; + } + + public override void Loaded() + { + if (!GameData.UltraEndlessFloorData.ContainsKey(StageID)) + { + GameData.UltraEndlessFloorData[StageID] = new List(); + } + GameData.UltraEndlessFloorData[StageID].Add(this); + } +} diff --git a/Common/Data/Excel/UltraEndlessSiteExcel.cs b/Common/Data/Excel/UltraEndlessSiteExcel.cs new file mode 100644 index 0000000..eb84774 --- /dev/null +++ b/Common/Data/Excel/UltraEndlessSiteExcel.cs @@ -0,0 +1,23 @@ + +namespace KianaBH.Data.Excel; + +[ResourceEntity("UltraEndlessSite.json")] +public class UltraEndlessSiteExcel : ExcelResource +{ + public int StageID { get; set; } + public int BuffID { get; set; } + public string SiteNodeName { get; set; } = ""; + public string SiteName { get; set; } = ""; + public int HardLevelGroup { get; set; } + public int SiteID { get; set; } + + public override int GetId() + { + return SiteID; + } + + public override void Loaded() + { + GameData.UltraEndlessSiteData.Add(SiteID, this); + } +} diff --git a/GameServer/Command/Commands/CommandAbyss.cs b/GameServer/Command/Commands/CommandAbyss.cs new file mode 100644 index 0000000..1b7fd54 --- /dev/null +++ b/GameServer/Command/Commands/CommandAbyss.cs @@ -0,0 +1,47 @@ +using Google.Protobuf.WellKnownTypes; +using System.Numerics; +using KianaBH.Data; +using KianaBH.Enums.Player; +using KianaBH.Internationalization; + +namespace KianaBH.GameServer.Command.Commands; + +[CommandInfo("abyss", "Game.Command.Abyss.Desc", "Game.Command.Abyss.Usage", ["ab"], [PermEnum.Admin, PermEnum.Support])] +public class CommandAbyss : ICommands +{ + [CommandMethod("bracket")] + public async ValueTask SetBracket(CommandArg arg) + { + if (!await arg.CheckOnlineTarget()) return; + var bracket = arg.GetInt(0); + arg.Target!.Player!.Data.Abyss.GroupLevel = bracket > 0 && bracket < 10 ? bracket : 9; + await arg.SendMsg(I18NManager.Translate("Game.Command.Abyss.Success", I18NManager.Translate("Word.Bracket"))); + } + + [CommandMethod("temp")] + public async ValueTask SetDisturbance(CommandArg arg) + { + if (!await arg.CheckOnlineTarget()) return; + var disturbanceValue = arg.GetInt(0); + arg.Target!.Player!.Data.Abyss.DynamicHard = disturbanceValue; + await arg.SendMsg(I18NManager.Translate("Game.Command.Abyss.Success", I18NManager.Translate("Word.Disturbance"))); + } + + [CommandMethod("site")] + public async ValueTask SetSite(CommandArg arg) + { + if (!await arg.CheckOnlineTarget()) return; + var siteId = arg.GetInt(0); + + var data = GameData.UltraEndlessSiteData.Values + .FirstOrDefault(x => x.SiteID == siteId); + if (data == null) + { + await arg.SendMsg(I18NManager.Translate("Game.Command.Abyss.AreaNotFound")); + return; + } + + arg.Target!.Player!.Data.Abyss.SiteId = siteId; + await arg.SendMsg(I18NManager.Translate("Game.Command.Abyss.Success", I18NManager.Translate("Word.Site"))); + } +} \ No newline at end of file diff --git a/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossInfoReq.cs b/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossInfoReq.cs index 6706b90..3326047 100644 --- a/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossInfoReq.cs +++ b/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossInfoReq.cs @@ -8,6 +8,6 @@ public class HandlerGetExBossInfoReq : Handler { public override async Task OnHandle(Connection connection, byte[] header, byte[] data) { - await connection.SendPacket(new PacketGetExBossInfoRsp()); + await connection.SendPacket(new PacketGetExBossInfoRsp(connection.Player!)); } } diff --git a/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossRankReq.cs b/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossRankReq.cs index 046193a..ee4cacc 100644 --- a/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossRankReq.cs +++ b/GameServer/Server/Packet/Recv/ExBoss/HandlerGetExBossRankReq.cs @@ -8,6 +8,7 @@ public class HandlerGetExBossRankReq : Handler { public override async Task OnHandle(Connection connection, byte[] header, byte[] data) { - await connection.SendPacket(new PacketGetExBossRankRsp(connection.Player!)); + var req = GetExBossRankReq.Parser.ParseFrom(data); + await connection.SendPacket(new PacketGetExBossRankRsp(connection.Player!,req.BossId,req.RankId)); } } diff --git a/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossInfoRsp.cs b/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossInfoRsp.cs index 671dc1e..65564b9 100644 --- a/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossInfoRsp.cs +++ b/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossInfoRsp.cs @@ -1,3 +1,4 @@ +using KianaBH.GameServer.Game.Player; using KianaBH.KcpSharp; using KianaBH.Proto; @@ -5,19 +6,23 @@ namespace KianaBH.GameServer.Server.Packet.Send.ExBoss; public class PacketGetExBossInfoRsp : BasePacket { - public PacketGetExBossInfoRsp() : base(CmdIds.GetExBossInfoRsp) + public PacketGetExBossInfoRsp(PlayerInstance player) : base(CmdIds.GetExBossInfoRsp) { - // TODO:Hardcoded - var proto = new GetExBossInfoRsp { BossInfo = new ExBossInfo { - BossIdList = { }, - CurMaxEnterTimes = 18, + BossIdList = + { + player.Data.ExBossMonster.Select(x => new ExBossIdInfo + { + BossId = (uint)x + }) + }, + CurMaxEnterTimes = 36, + NowScheduleId = 10407, RankId = 104, - ScheduleId = 10377, - NowScheduleId = 10377 + ScheduleId = 10407 } }; diff --git a/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossRankRsp.cs b/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossRankRsp.cs index d7a13b2..91d01e2 100644 --- a/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossRankRsp.cs +++ b/GameServer/Server/Packet/Send/ExBoss/PacketGetExBossRankRsp.cs @@ -6,31 +6,17 @@ namespace KianaBH.GameServer.Server.Packet.Send.ExBoss; public class PacketGetExBossRankRsp : BasePacket { - public PacketGetExBossRankRsp(PlayerInstance player) : base(CmdIds.GetExBossRankRsp) + public PacketGetExBossRankRsp(PlayerInstance player, uint bossId, uint rankId) : base(CmdIds.GetExBossRankRsp) { // TODO: Hardcoded var proto = new GetExBossRankRsp { - RankId = 104, + BossId = bossId, + RankId = rankId, RankData = new RankShowData { - MyRank = 104, - MyRankType = 2, - MyScore = 116330, - RankList = - { - new UserRankData - { - AvatarId = 3101, - CustomHeadId = 161099, - DressId = 50217, - FrameId = 200080, - NickName = "Kiana", - Rank = 1, - Score = 119727, - Uid = (uint)player.Data.Uid - } - } + MyRank = 1, + MyRankType = 1 } };