yae openworld but dialogs aren't triggered

This commit is contained in:
rafi1212122
2023-06-12 20:06:26 +07:00
parent f9e0aa8e1f
commit bfe8347610
26 changed files with 537 additions and 12 deletions

View File

@@ -0,0 +1,22 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.AcceptOpenworldStoryReq)]
internal class AcceptOpenworldStoryReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
AcceptOpenworldStoryReq Data = packet.GetDecodedBody<AcceptOpenworldStoryReq>();
AcceptOpenworldStoryRsp Rsp = new()
{
retcode = AcceptOpenworldStoryRsp.Retcode.Succ,
StoryId = Data.StoryId
};
session.Player.User.AddOWStory(Data.StoryId);
session.Send(Packet.FromProto(Rsp, CmdId.AcceptOpenworldStoryRsp));
session.ProcessPacket(Packet.FromProto(new GetOpenworldStoryReq() { }, CmdId.GetOpenworldStoryReq));
}
}
}

View File

@@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using Common;
using Common.Database;
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.GetNewOpenworldReq)]
internal class GetNewOpenworldReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetNewOpenworldRsp Rsp = new()
{
retcode = GetNewOpenworldRsp.Retcode.Succ,
DataType = OpenworldDataType.OpenworldDataAll,
QuestLevel = 1,
QuestStar = 0,
MaxQuestLevel = 1,
NextRefreshTime = (uint)Global.GetUnixInSeconds() + 3600 * 24 * 3,
CloseTime = (uint)Global.GetUnixInSeconds() + 3600 * 24 * 3,
GlobalRandomSeed = Global.GetRandomSeed()
};
Rsp.Techs.AddRange(OpenWorld.ShowMapList.Select(x => new OpenworldTechData() { MapId = x }));
Rsp.MapLists.AddRange(session.Player.OpenWorlds.Select(ow => new OpenworldMapBriefData() {
MapId = ow.MapId,
Status = 3,
Cycle = ow.Cycle,
QuestLevel = ow.QuestLevel,
HasTakeFinishRewardCycle = ow.HasTakeFinishRewardCycle
}));
session.Send(Packet.FromProto(Rsp, CmdId.GetNewOpenworldRsp));
}
}
}

View File

@@ -0,0 +1,45 @@
using Common;
using Common.Database;
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.GetOpenworldMapReq)]
internal class GetOpenworldMapReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetOpenworldMapReq Data = packet.GetDecodedBody<GetOpenworldMapReq>();
OpenWorldScheme? OpenWorldData = session.Player.OpenWorlds.FirstOrDefault(x => x.MapId == Data.MapId);
if (OpenWorldData is null)
return;
GetOpenworldMapRsp Rsp = new()
{
retcode = GetOpenworldMapRsp.Retcode.Succ,
MapId = Data.MapId,
Cycle = OpenWorldData.Cycle,
EventRandomSeed = Global.GetRandomSeed(),
SpawnPoint = OpenWorldData.SpawnPoint,
Status = 3,
QuestData = new()
{
IsOpen = false,
DayOpenTimes = 0,
RefreshLeftTimes = 0,
NextRefreshCost = 0,
IsCanAbandon = true,
ChallengeScore = 0,
IsQuestFinish = false,
OpenQuestTime = 0
},
TechData = new()
{
MapId = Data.MapId
},
HasTakeFinishRewardCycle = OpenWorldData.HasTakeFinishRewardCycle
};
session.Send(Packet.FromProto(Rsp, CmdId.GetOpenworldMapRsp));
}
}
}

View File

@@ -0,0 +1,24 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.GetOpenworldStageReq)]
internal class GetOpenworldStageReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetOpenworldStageReq Data = packet.GetDecodedBody<GetOpenworldStageReq>();
session.Send(Packet.FromProto(new GetOpenworldStageRsp()
{
retcode = GetOpenworldStageRsp.Retcode.Succ,
MapId = Data.MapId,
MechaLostHpPercent = 0,
MechaLostSpPercent = 0,
MapEnergy = 0,
ScDlcFeverScore = 0,
ScDlcClimaxScore = 0
}, CmdId.GetOpenworldStageRsp));
}
}
}

View File

@@ -0,0 +1,21 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.GetOpenworldStoryReq)]
internal class GetOpenworldStoryReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
GetOpenworldStoryRsp Rsp = new()
{
retcode = GetOpenworldStoryRsp.Retcode.Succ,
FinishStoryIdLists = session.Player.User.OpenWorldStory.Where(x => x.IsDone).Select(x => x.StoryId).ToArray(),
IsAll = true
};
Rsp.CurStoryLists.AddRange(session.Player.User.OpenWorldStory.Where(x => !x.IsDone).Select(x => x.ToProto()));
session.Send(Packet.FromProto(Rsp, CmdId.GetOpenworldStoryRsp));
}
}
}

View File

@@ -0,0 +1,19 @@
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.OpenworldStageBeginReq)]
internal class OpenworldStageBeginReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
OpenworldStageBeginReq Data = packet.GetDecodedBody<OpenworldStageBeginReq>();
session.Send(Packet.FromProto(new OpenworldStageBeginRsp()
{
retcode = OpenworldStageBeginRsp.Retcode.Succ,
MapId = Data.MapId
}, CmdId.OpenworldStageBeginRsp));
}
}
}

View File

@@ -0,0 +1,25 @@
using Common.Database;
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.ReportOpenworldSpawnPointReq)]
internal class ReportOpenworldSpawnPointReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
ReportOpenworldSpawnPointReq Data = packet.GetDecodedBody<ReportOpenworldSpawnPointReq>();
ReportOpenworldSpawnPointRsp Rsp = new()
{
retcode = ReportOpenworldSpawnPointRsp.Retcode.Succ,
MapId = Data.MapId,
PointInfo = Data.PointInfo
};
OpenWorldScheme? OpenWorldData = session.Player.OpenWorlds.FirstOrDefault(x => x.MapId == Data.MapId);
if (OpenWorldData is not null)
OpenWorldData.SpawnPoint = Data.PointInfo;
session.Send(Packet.FromProto(Rsp, CmdId.ReportOpenworldSpawnPointRsp));
}
}
}

View File

@@ -0,0 +1,20 @@
using Common.Resources.Proto;
using Common.Database;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.SetOpenworldStoryProgressReq)]
internal class SetOpenworldStoryProgressReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
SetOpenworldStoryProgressReq Data = packet.GetDecodedBody<SetOpenworldStoryProgressReq>();
UserScheme.OpenWorldStoryScheme? ow = session.Player.User.OpenWorldStory.FirstOrDefault(x => x.StoryId == Data.StoryId);
if (ow is not null)
ow.StoryProgress = Data.StoryProgress;
session.Send(Packet.FromProto(new SetOpenworldStoryProgressRsp() { retcode = SetOpenworldStoryProgressRsp.Retcode.Succ, StoryId = Data.StoryId }, CmdId.SetOpenworldStoryProgressRsp));
session.ProcessPacket(Packet.FromProto(new GetOpenworldStoryReq() { }, CmdId.GetOpenworldStoryReq));
}
}
}

View File

@@ -0,0 +1,28 @@
using Common.Database;
using Common.Resources.Proto;
using Common.Utils.ExcelReader;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.TakeOpenworldCycleFinishRewardReq)]
internal class TakeOpenworldCycleFinishRewardReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
TakeOpenworldCycleFinishRewardReq Data = packet.GetDecodedBody<TakeOpenworldCycleFinishRewardReq>();
OpenWorldScheme? ow = session.Player.OpenWorlds.Where(x => x.MapId == Data.MapId).FirstOrDefault();
if (ow is not null)
{
ow.Cycle = OpenWorldCycleData.GetInstance().GetNextCycle(Data.MapId, Data.Cycle);
ow.HasTakeFinishRewardCycle = OpenWorldCycleData.GetInstance().GetNextCycle(Data.MapId, Data.Cycle);
}
session.Send(Packet.FromProto(new TakeOpenworldCycleFinishRewardRsp()
{
retcode = TakeOpenworldCycleFinishRewardRsp.Retcode.Succ,
MapId = Data.MapId,
Cycle = Data.Cycle
}, CmdId.TakeOpenworldCycleFinishRewardRsp));
}
}
}

View File

@@ -0,0 +1,20 @@
using Common.Database;
using Common.Resources.Proto;
namespace PemukulPaku.GameServer.Handlers.Openworld
{
[PacketCmdId(CmdId.TakeOpenworldStoryRewardReq)]
internal class TakeOpenworldStoryRewardReqHandler : IPacketHandler
{
public void Handle(Session session, Packet packet)
{
TakeOpenworldStoryRewardReq Data = packet.GetDecodedBody<TakeOpenworldStoryRewardReq>();
UserScheme.OpenWorldStoryScheme? ow = session.Player.User.OpenWorldStory.FirstOrDefault(x => x.StoryId == Data.StoryId);
if (ow is not null)
ow.IsDone = true;
session.Send(Packet.FromProto(new TakeOpenworldStoryRewardRsp() { retcode = TakeOpenworldStoryRewardRsp.Retcode.Succ, StoryId = Data.StoryId }, CmdId.TakeOpenworldStoryRewardRsp));
session.ProcessPacket(Packet.FromProto(new GetOpenworldStoryReq() { }, CmdId.GetOpenworldStoryReq));
}
}
}