fix: valk tutorial stage

This commit is contained in:
Naruse
2025-06-14 21:23:44 +08:00
parent 47b14f5c07
commit 5da6892d76
5 changed files with 67 additions and 64 deletions

View File

@@ -0,0 +1,14 @@
using KianaBH.GameServer.Server.Packet.Send.Activity;
using KianaBH.Proto;
namespace KianaBH.GameServer.Server.Packet.Recv.Activity;
[Opcode(CmdIds.GeneralActivityGetScoreRewardInfoReq)]
public class HandlerGeneralActivityGetScoreRewardInfoReq : Handler
{
public override async Task OnHandle(Connection connection, byte[] header, byte[] data)
{
var req = GeneralActivityGetScoreRewardInfoReq.Parser.ParseFrom(data);
await connection.SendPacket(new PacketGeneralActivityGetScoreRewardInfoRsp(req.ActivityIdList));
}
}

View File

@@ -2,6 +2,7 @@ using Google.Protobuf.Collections;
using KianaBH.Data; using KianaBH.Data;
using KianaBH.KcpSharp; using KianaBH.KcpSharp;
using KianaBH.Proto; using KianaBH.Proto;
using KianaBH.Util.Extensions;
namespace KianaBH.GameServer.Server.Packet.Send.Activity; namespace KianaBH.GameServer.Server.Packet.Send.Activity;
@@ -19,30 +20,19 @@ public class PacketGeneralActivityGetMainInfoRsp : BasePacket
GeneralBasicInfo = new GeneralActivityBasicInfo GeneralBasicInfo = new GeneralActivityBasicInfo
{ {
ActivityId = activityId, ActivityId = activityId,
ScheduleId = series?.Series ?? 0, //ScheduleId = series?.Series ?? 0,
SeriesActivityId ={ activityId } //SeriesActivityId ={ activityId }
} }
}; };
GameData.GeneralActivityStageGroupData activity.ActivityStage = new GeneralActivityStage
.TryGetValue((int)activityId, out var activityStage);
if (activityStage != null)
{ {
activity.ActivityStage = new GeneralActivityStage EnterTimes = 1,
{ ExchangeTimes = 1,
StageGroupScheduleList = };
{
activityStage.Select(x => new GeneralActivityStageGroupScheduleInfo
{
BeginTime = 1593223200,
EndTime = 1913140799,
StageGroupId = x.StageGroupId
})
}
};
}
return activity; return activity;
}); });

View File

@@ -1,3 +1,4 @@
using System.Security.Cryptography;
using KianaBH.Data; using KianaBH.Data;
using KianaBH.KcpSharp; using KianaBH.KcpSharp;
using KianaBH.Proto; using KianaBH.Proto;
@@ -36,6 +37,13 @@ public class PacketGeneralActivityGetScheduleRsp : BasePacket
EndTime = time, EndTime = time,
}); });
} }
proto.ScheduleList.Add(new GeneralActivityScheduleInfo
{
ActivityId = 50000006,
SettleTime = time,
EndTime = time,
EndDayTime = time
});
SetData(proto); SetData(proto);
} }

View File

@@ -0,0 +1,25 @@
using Google.Protobuf.Collections;
using KianaBH.KcpSharp;
using KianaBH.Proto;
namespace KianaBH.GameServer.Server.Packet.Send.Activity;
public class PacketGeneralActivityGetScoreRewardInfoRsp : BasePacket
{
public PacketGeneralActivityGetScoreRewardInfoRsp(RepeatedField<uint> ActivityIdList) : base(CmdIds.GeneralActivityGetScoreRewardInfoRsp)
{
var proto = new GeneralActivityGetScoreRewardInfoRsp
{
ScoreInfoList =
{
ActivityIdList?.Select(id => new GeneralActivityScoreRewardInfo
{
ActivityId = id,
CurScore = 0
})
}
};
SetData(proto);
}
}

View File

@@ -9,55 +9,21 @@ public class PacketGetStageDataRsp : BasePacket
{ {
public PacketGetStageDataRsp(RepeatedField<uint> StageIdList) : base(CmdIds.GetStageDataRsp) public PacketGetStageDataRsp(RepeatedField<uint> StageIdList) : base(CmdIds.GetStageDataRsp)
{ {
var isAll = StageIdList.Count == 1 && StageIdList[0] == 0;
var stageData = GameData.StageDataMain; var stageData = GameData.StageDataMain;
var stageList = isAll
? stageData.Values.Select(stage => new Proto.Stage
{
Id = stage.LevelId,
Progress = 1,
ChallengeIndexList =
{
stage.ChallengeList.Count == 3
? new uint[] { 0, 1, 2 }
: new uint[] { 0 }
},
IsDone = true,
MaxRank = 1
})
: stageData.Values
.Where(stage => StageIdList.Contains(stage.LevelId))
.Select(stage => new Proto.Stage
{
Id = stage.LevelId,
Progress = 1,
ChallengeIndexList =
{
stage.ChallengeList.Count == 3
? new uint[] { 0, 1, 2 }
: new uint[] { 0 }
},
IsDone = true,
MaxRank = 1
});
var proto = new GetStageDataRsp var proto = new GetStageDataRsp
{ {
IsAll = isAll, IsAll = true,
FinishedChapterList = { Enumerable.Range(1, 43).Select(i => (uint)i) }, StageList =
EventDataList =
{ {
new StageEventData stageData.Values.Select(stage => new Proto.Stage
{ {
BeginTime = 1729108800, Id = stage.LevelId,
EndTime = 1990911600, Progress = stage.MaxProgress,
ChapterId = 200, EnterTimes = 0,
UnlockLevel = 30 ChallengeIndexList = { stage.ChallengeList.Count == 3 ? new uint[] { 0, 1, 2 } : new uint[0] },
} IsDone = true,
}, }).ToList(),
StageList = { } }
}; };
SetData(proto); SetData(proto);