mirror of
https://github.com/MikuLeaks/KianaBH3.git
synced 2025-12-12 13:04:33 +01:00
feat: add Abyss
This commit is contained in:
33
GameServer/Command/Commands/CommandEndless.cs
Normal file
33
GameServer/Command/Commands/CommandEndless.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using KianaBH.Data;
|
||||
using KianaBH.Enums.Player;
|
||||
using KianaBH.Internationalization;
|
||||
|
||||
namespace KianaBH.GameServer.Command.Commands;
|
||||
|
||||
[CommandInfo("endless", "Game.Command.Endless.Desc", "Game.Command.Endless.Usage", ["en"], [PermEnum.Admin, PermEnum.Support])]
|
||||
public class CommandEndless : ICommands
|
||||
{
|
||||
[CommandDefault]
|
||||
public async ValueTask SetBoss(CommandArg arg)
|
||||
{
|
||||
if (!await arg.CheckOnlineTarget()) return;
|
||||
|
||||
var bossIds = new[] { arg.GetInt(0), arg.GetInt(1), arg.GetInt(2) }.ToHashSet();
|
||||
|
||||
var data = GameData.ExBossMonsterData.Values
|
||||
.Where(x => bossIds.Contains(x.BossId))
|
||||
.Select(x => x.BossId)
|
||||
.ToList();
|
||||
|
||||
if (data.Count == 0)
|
||||
{
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Endless.NotFound"));
|
||||
return;
|
||||
}
|
||||
|
||||
arg.Target!.Player!.Data.ExBossMonster.Clear();
|
||||
arg.Target!.Player!.Data.ExBossMonster.AddRange(data);
|
||||
|
||||
await arg.SendMsg(I18NManager.Translate("Game.Command.Endless.Success"));
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,14 @@
|
||||
using KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
using KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Test;
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Endless;
|
||||
|
||||
[Opcode(CmdIds.UltraEndlessEnterSiteReq)]
|
||||
public class HandlerUltraEndlessEnterSiteReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
await connection.SendPacket(new PacketUltraEndlessEnterSiteRsp());
|
||||
var req = UltraEndlessEnterSiteReq.Parser.ParseFrom(data);
|
||||
await connection.SendPacket(new PacketUltraEndlessEnterSiteRsp(req.SiteId));
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
using KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
using KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Test;
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Endless;
|
||||
|
||||
[Opcode(CmdIds.UltraEndlessGetMainDataReq)]
|
||||
public class HandlerUltraEndlessGetMainDataReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
await connection.SendPacket(new PacketUltraEndlessGetMainDataRsp());
|
||||
await connection.SendPacket(new PacketUltraEndlessGetMainDataRsp(connection.Player!));
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,14 @@
|
||||
using KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
using KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Test;
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Endless;
|
||||
|
||||
[Opcode(CmdIds.UltraEndlessGetTopRankReq)]
|
||||
public class HandlerUltraEndlessGetTopRankReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
await connection.SendPacket(new PacketUltraEndlessGetTopRankRsp());
|
||||
var req = UltraEndlessGetTopRankReq.Parser.ParseFrom(data);
|
||||
await connection.SendPacket(new PacketUltraEndlessGetTopRankRsp(connection.Player!,req.ScheduleId));
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,14 @@
|
||||
using KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
using KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Test;
|
||||
namespace KianaBH.GameServer.Server.Packet.Recv.Endless;
|
||||
|
||||
[Opcode(CmdIds.UltraEndlessReportSiteFloorReq)]
|
||||
public class HandlerUltraEndlessReportSiteFloorReq : Handler
|
||||
{
|
||||
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
|
||||
{
|
||||
await connection.SendPacket(new PacketUltraEndlessReportSiteFloorRsp());
|
||||
var req = UltraEndlessReportSiteFloorReq.Parser.ParseFrom(data);
|
||||
await connection.SendPacket(new PacketUltraEndlessReportSiteFloorRsp(req.SiteId,req.Floor));
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
|
||||
public class PacketUltraEndlessEnterSiteRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessEnterSiteRsp() : base(CmdIds.UltraEndlessEnterSiteRsp)
|
||||
public PacketUltraEndlessEnterSiteRsp(uint siteId) : base(CmdIds.UltraEndlessEnterSiteRsp)
|
||||
{
|
||||
var proto = new UltraEndlessEnterSiteRsp
|
||||
{
|
||||
|
||||
SiteId = siteId
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
@@ -0,0 +1,66 @@
|
||||
using KianaBH.Data;
|
||||
using KianaBH.GameServer.Game.Player;
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
using KianaBH.Util.Extensions;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
|
||||
public class PacketUltraEndlessGetMainDataRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessGetMainDataRsp(PlayerInstance player) : base(CmdIds.UltraEndlessGetMainDataRsp)
|
||||
{
|
||||
uint cupNum = player.Data.GetCupNum();
|
||||
var proto = new UltraEndlessGetMainDataRsp
|
||||
{
|
||||
ScheduleId = 1028,
|
||||
GroupLevel = (uint)player.Data.Abyss.GroupLevel,
|
||||
TopGroupLevel = 9,
|
||||
CupNum = cupNum,
|
||||
MainData = new UltraEndlessMainData
|
||||
{
|
||||
ScheduleId = 1028,
|
||||
BeginTime = (uint)Extensions.GetUnixSec(),
|
||||
EndTime = (uint)Extensions.GetUnixSec() + 3600 * 24 * 7,
|
||||
CloseTime = (uint)Extensions.GetUnixSec() + 3600 * 24 * 7 + 1200,
|
||||
CurSeasonId = 1,
|
||||
SiteList = { player.Data.ToUltraEndlessSiteProto() }
|
||||
},
|
||||
DynamicHardLevel = (uint)player.Data.Abyss.DynamicHard,
|
||||
EndlessPlayerList =
|
||||
{
|
||||
new UltraEndlessPlayer
|
||||
{
|
||||
Uid = (uint)player.Data.Uid,
|
||||
GroupLevel = (uint)player.Data.Abyss.GroupLevel,
|
||||
CupNum = cupNum,
|
||||
MaxStageScore = 18000
|
||||
}
|
||||
},
|
||||
BriefDataList =
|
||||
{
|
||||
new PlayerFriendBriefData
|
||||
{
|
||||
Uid = (uint)player.Data.Uid,
|
||||
Nickname = player.Data.Name,
|
||||
Level = (uint)player.Data.Level,
|
||||
}
|
||||
},
|
||||
LastSettleInfo = new UltraEndlessSettleInfo
|
||||
{
|
||||
CupNum = 280,
|
||||
CupNumAfterScheduleSettle = 280,
|
||||
CupNumAfterSeasonSettle = 380,
|
||||
CupNumBefore = 380,
|
||||
CupNumBeforeSeasonSettle = 380,
|
||||
GroupLevel = 3,
|
||||
GroupMemberNum = 20,
|
||||
MmrScore = 974,
|
||||
Rank = 20,
|
||||
ScheduleId = 3426
|
||||
},
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using KianaBH.GameServer.Game.Player;
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
|
||||
public class PacketUltraEndlessGetTopRankRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessGetTopRankRsp(PlayerInstance player, uint scheduleId) : base(CmdIds.UltraEndlessGetTopRankRsp)
|
||||
{
|
||||
var proto = new UltraEndlessGetTopRankRsp
|
||||
{
|
||||
ScheduleId = scheduleId,
|
||||
RankData = new RankShowData
|
||||
{
|
||||
IsFeatureClosed = true,
|
||||
MyRank = 1,
|
||||
MyRankType = 1,
|
||||
MyScore = 18000,
|
||||
RankList =
|
||||
{
|
||||
new UserRankData
|
||||
{
|
||||
Uid = (uint)player.Data.Uid,
|
||||
NickName = player.Data.Name,
|
||||
Rank = 1,
|
||||
Score = 18000,
|
||||
CustomHeadId = (uint)player.Data.HeadIcon,
|
||||
FrameId = (uint)player.Data.HeadFrame,
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Endless;
|
||||
|
||||
public class PacketUltraEndlessReportSiteFloorRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessReportSiteFloorRsp(uint siteId, uint floor) : base(CmdIds.UltraEndlessReportSiteFloorRsp)
|
||||
{
|
||||
var proto = new UltraEndlessReportSiteFloorRsp
|
||||
{
|
||||
SiteId = siteId,
|
||||
Floor = floor,
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
|
||||
public class PacketUltraEndlessGetMainDataRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessGetMainDataRsp() : base(CmdIds.UltraEndlessGetMainDataRsp)
|
||||
{
|
||||
var proto = new UltraEndlessGetMainDataRsp
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
|
||||
public class PacketUltraEndlessGetTopRankRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessGetTopRankRsp() : base(CmdIds.UltraEndlessGetTopRankRsp)
|
||||
{
|
||||
var proto = new UltraEndlessGetTopRankRsp
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
using KianaBH.KcpSharp;
|
||||
using KianaBH.Proto;
|
||||
|
||||
namespace KianaBH.GameServer.Server.Packet.Send.Test;
|
||||
|
||||
public class PacketUltraEndlessReportSiteFloorRsp : BasePacket
|
||||
{
|
||||
public PacketUltraEndlessReportSiteFloorRsp() : base(CmdIds.UltraEndlessReportSiteFloorRsp)
|
||||
{
|
||||
var proto = new UltraEndlessReportSiteFloorRsp
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
SetData(proto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user