ma abyss & chapter 37 fix

This commit is contained in:
rafi1212122
2023-06-04 10:29:08 +07:00
parent 127dc1b345
commit 7c19038c3c
14 changed files with 441 additions and 1 deletions

View File

@@ -0,0 +1,89 @@
using Common.Utils.ExcelReader;
using Newtonsoft.Json;
namespace PemukulPaku.GameServer.Commands
{
internal class ExBossMonsterData : BaseExcelReader<ExBossMonsterData, ExBossMonsterDataExcel>
{
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 int MonsterHp { get; set; }
[JsonProperty("MonsterLevel")]
public uint 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; }
}
}

View File

@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using System.Security.Cryptography;
using Newtonsoft.Json;
namespace Common.Utils.ExcelReader
{
@@ -43,6 +44,27 @@ namespace Common.Utils.ExcelReader
return new LevelData(level, expRemain);
}
public uint ExBossRankFromExp(int exp)
{
int UserLevel = CalculateLevel(exp).Level;
if (UserLevel >= 81)
{
return 104;
}
else if (UserLevel >= 70)
{
return 103;
}
else if (UserLevel >= 56)
{
return 102;
}
else
{
return 101;
}
}
public LevelData CalculateExpForLevel(int level)
{
int exp = 0;

View File

@@ -0,0 +1,88 @@
using Newtonsoft.Json;
namespace Common.Utils.ExcelReader
{
internal class ExBossMonsterData : BaseExcelReader<ExBossMonsterData, ExBossMonsterDataExcel>
{
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; }
}
}

View File

@@ -0,0 +1,23 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.ChapterBwWorldGetDataReq)]
internal class ChapterBwWorldGetDataReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
ChapterBwWorldGetDataReq Data = packet.GetDecodedBody<ChapterBwWorldGetDataReq>();
session.Send(Packet.FromProto(new ChapterBwWorldGetDataRsp()
{
retcode = ChapterBwWorldGetDataRsp.Retcode.Succ,
ChapterBwWorld = new()
{
ChapterId = Data.ChapterId,
EquipRuneUniqueIdLists = new uint[] { 0, 0 }
}
}, CmdId.ChapterBwWorldGetDataRsp));
}
}
}

View File

@@ -0,0 +1,13 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.ExBossStageBeginReq)]
internal class ExBossStageBeginReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
session.Send(Packet.FromProto(new ExBossStageBeginRsp() { retcode = ExBossStageBeginRsp.Retcode.Succ }, CmdId.ExBossStageBeginRsp));
}
}
}

View File

@@ -0,0 +1,21 @@

using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.ExBossStageEndReq)]
internal class ExBossStageEndReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
ExBossStageEndReq Data = packet.GetDecodedBody<ExBossStageEndReq>();
session.Send(Packet.FromProto(new ExBossStageEndRsp()
{
retcode = ExBossStageEndRsp.Retcode.Succ,
BossId = Data.BossId,
EndStatus = Data.EndStatus
}, CmdId.ExBossStageEndRsp));
}
}
}

View File

@@ -0,0 +1,30 @@
using Common.Resources.Proto;
using Common.Utils.ExcelReader;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.GetExBossInfoReq)]
internal class GetExBossInfoReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetExBossInfoRsp Rsp = new()
{
retcode = GetExBossInfoRsp.Retcode.Succ,
BossInfo = new()
{
EnterTimes = 0,
ScheduleId = 1,
MaxSweepLevel = 4
}
};
Rsp.BossInfo.RankId = PlayerLevelData.GetInstance().ExBossRankFromExp(session.Player.User.Exp);
foreach (ExBossMonsterDataExcel monsterData in ExBossMonsterData.GetInstance().All.Where(monster => monster.ConfigId == Rsp.BossInfo.RankId))
{
Rsp.BossInfo.BossIdLists.Add(new() { BossId = (uint)monsterData.BossId });
}
session.Send(Packet.FromProto(Rsp, CmdId.GetExBossInfoRsp));
}
}
}

View File

@@ -0,0 +1,27 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.GetExBossRankReq)]
internal class GetExBossRankReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetExBossRankReq Data = packet.GetDecodedBody<GetExBossRankReq>();
GetExBossRankRsp Rsp = new()
{
retcode = GetExBossRankRsp.Retcode.Succ,
BossId = Data.BossId,
RankId = Data.RankId,
RankData = new()
{
MyScore = 0,
MyRank = 1,
MyRankType = 1
}
};
session.Send(Packet.FromProto(Rsp, CmdId.GetExBossRankRsp));
}
}
}

View File

@@ -0,0 +1,26 @@
using Common;
using Common.Database;
using Common.Resources.Proto;
using Common.Utils.ExcelReader;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.GetExBossScheduleReq)]
internal class GetExBossScheduleReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetExBossScheduleRsp Rsp = new()
{
retcode = GetExBossScheduleRsp.Retcode.Succ,
BeginTime = 0,
EndTime = (uint)Global.GetUnixInSeconds() + 604800,
MinLevel = 0,
ScheduleId = 1
};
Rsp.RankId = PlayerLevelData.GetInstance().ExBossRankFromExp(session.Player.User.Exp);
session.Send(Packet.FromProto(Rsp, CmdId.GetExBossScheduleRsp));
}
}
}

View File

@@ -0,0 +1,13 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.GetGodWarReq)]
internal class GetGodWarReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
session.Send(Packet.FromProto(new GetGodWarRsp() { retcode = GetGodWarRsp.Retcode.NotOpen }, CmdId.GetGodWarRsp));
}
}
}

View File

@@ -0,0 +1,20 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.GetStageRecommendAvatarReq)]
internal class GetStageRecommendAvatarReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetStageRecommendAvatarReq Data = packet.GetDecodedBody<GetStageRecommendAvatarReq>();
GetStageRecommendAvatarRsp Rsp = new() { retcode = GetStageRecommendAvatarRsp.Retcode.Succ };
if(Data.IdLists is not null)
{
Rsp.StageRecommendAvatarLists.AddRange(Data.IdLists.Select(x => new StageRecommendAvatar() { Id = x }));
}
session.Send(Packet.FromProto(Rsp, CmdId.GetStageRecommendAvatarRsp));
}
}
}

View File

@@ -0,0 +1,13 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.ThemeWantedRefreshTicketReq)]
internal class ThemeWantedRefreshTicketReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
session.Send(Packet.FromProto(new ThemeWantedRefreshTicketRsp() { retcode = ThemeWantedRefreshTicketRsp.Retcode.Succ }, CmdId.ThemeWantedRefreshTicketRsp));
}
}
}

View File

@@ -0,0 +1,23 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.UpdateAvatarTeamNotify)]
internal class UpdateAvatarTeamNotifyHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
UpdateAvatarTeamNotify Data = packet.GetDecodedBody<UpdateAvatarTeamNotify>();
AvatarTeam? avatarTeam = session.Player.User.AvatarTeamList.FirstOrDefault(team => team.StageType == Data.Team.StageType);
if(avatarTeam is not null)
{
avatarTeam.AvatarIdLists = Data.Team.AvatarIdLists;
}
else
{
session.Player.User.AvatarTeamList.Add(Data.Team);
}
}
}
}

View File

@@ -0,0 +1,32 @@
using Common.Database;
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers
{
[PacketCmdId(CmdId.UpdateCustomAvatarTeamReq)]
internal class UpdateCustomAvatarTeamReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
UpdateCustomAvatarTeamReq Data = packet.GetDecodedBody<UpdateCustomAvatarTeamReq>();
UpdateCustomAvatarTeamRsp Rsp = new() { retcode = UpdateCustomAvatarTeamRsp.Retcode.Succ };
CustomAvatarTeam? customAvatarTeam = session.Player.User.CustomAvatarTeamList.FirstOrDefault(x => x.TeamId == Data.Team.TeamId);
if (customAvatarTeam is not null)
{
customAvatarTeam.AvatarIdLists = Data.Team.AvatarIdLists;
customAvatarTeam.ElfIdLists = Data.Team.ElfIdLists;
customAvatarTeam.Name = Data.Team.Name;
}
else
{
session.Player.User.CustomAvatarTeamList.Add(Data.Team);
}
GetAvatarTeamDataRsp avatarTeamDataRsp = new() { retcode = GetAvatarTeamDataRsp.Retcode.Succ };
avatarTeamDataRsp.CustomAvatarTeamLists.Add(Data.Team);
session.Send(Packet.FromProto(avatarTeamDataRsp, CmdId.GetAvatarTeamDataRsp), Packet.FromProto(Rsp, CmdId.UpdateCustomAvatarTeamRsp));
}
}
}