Skip to content

Commit

Permalink
Send S2C_QUEST_GET_PARTY_QUEST_PROGRESS_INFO_RES
Browse files Browse the repository at this point in the history
And a ton of quest related structures
  • Loading branch information
alborrajo committed Jan 12, 2024
1 parent e891a2a commit 181f702
Show file tree
Hide file tree
Showing 38 changed files with 3,147 additions and 86 deletions.
814 changes: 812 additions & 2 deletions Arrowgene.Ddon.GameServer/Dump/GameFullDump.cs

Large diffs are not rendered by default.

1,417 changes: 1,415 additions & 2 deletions Arrowgene.Ddon.GameServer/Dump/InGameDump.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.Server;
using Arrowgene.Ddon.Server.Network;
using Arrowgene.Ddon.Shared.Entity;
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
using Arrowgene.Ddon.Shared.Network;
using Arrowgene.Logging;

Expand All @@ -20,9 +22,9 @@ public QuestGetCycleContentsStateListHandler(DdonGameServer server) : base(serve

public override void Handle(GameClient client, IPacket packet)
{
// S2C_QUEST_JOIN_LOBBY_QUEST_INFO_NTC
//Not sending this makes the Vocation change option not show up and some paths are blocked
client.Send(InGameDump.Dump_20);
EntitySerializer<S2CQuestJoinLobbyQuestInfoNtc> serializer = EntitySerializer.Get<S2CQuestJoinLobbyQuestInfoNtc>();
S2CQuestJoinLobbyQuestInfoNtc pcap = serializer.Read(InGameDump.data_Dump_20A);
client.Send(pcap);

IBuffer buffer = new StreamBuffer();
buffer.WriteInt32(0, Endianness.Big);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Arrowgene.Ddon.GameServer.Dump;
using Arrowgene.Ddon.Server;
using Arrowgene.Ddon.Server.Network;
using Arrowgene.Ddon.Shared.Entity;
using Arrowgene.Ddon.Shared.Entity.PacketStructure;
using Arrowgene.Ddon.Shared.Network;
using Arrowgene.Logging;
Expand All @@ -21,9 +22,10 @@ public QuestGetPartyQuestProgressInfoHandler(DdonGameServer server) : base(serve

public override void Handle(GameClient client, IPacket packet)
{
S2CQuestGetPartyQuestProgressInfoRes res = new S2CQuestGetPartyQuestProgressInfoRes();
// client.Send(res);
client.Send(GameFull.Dump_142);
// Not sending this blocks paths
EntitySerializer<S2CQuestGetPartyQuestProgressInfoRes> serializer = EntitySerializer.Get<S2CQuestGetPartyQuestProgressInfoRes>();
S2CQuestGetPartyQuestProgressInfoRes pcap = serializer.Read(GameFull.data_Dump_142);
client.Send(pcap);
}
}
}
20 changes: 20 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ static EntitySerializer()
Create(new CDataAchieveCategoryStatus.Serializer());
Create(new CDataAchievementIdentifierSerializer());
Create(new CDataAllPlayerContext.Serializer());
Create(new CDataAreaRank.Serializer());
Create(new CDataArisenProfileSerializer());
Create(new CDataCharacterEquipDataSerializer());
Create(new CDataCharacterEquipInfo.Serializer());
Expand Down Expand Up @@ -69,6 +70,7 @@ static EntitySerializer()
Create(new CDataContextResist.Serializer());
Create(new CDataContextSetAdditional.Serializer());
Create(new CDataContextSetBase.Serializer());
Create(new CDataDeliveredItem.Serializer());
Create(new CDataDeliveredItemRecord.Serializer());
Create(new CDataDeliveryItem.Serializer());
Create(new CDataDropItemSetInfo.Serializer());
Expand Down Expand Up @@ -113,6 +115,8 @@ static EntitySerializer()
Create(new CDataLobbyContextPlayer.Serializer());
Create(new CDataLobbyMemberInfoSerializer());
Create(new CDataLoginSettingSerializer());
Create(new CDataLotQuestOrderList.Serializer());
Create(new CDataMainQuestOrderList.Serializer());
Create(new CDataMasterInfo.Serializer());
Create(new CDataMatchingProfileSerializer());
Create(new CDataMoonSchedule.Serializer());
Expand Down Expand Up @@ -144,12 +148,17 @@ static EntitySerializer()
Create(new CDataPawnTrainingPreparationInfoToAdvice.Serializer());
Create(new CDataPlayPointDataSerializer());
Create(new CDataPresetAbilityParam.Serializer());
Create(new CDataPriorityQuest.Serializer());
Create(new CDataQuestAnnounce.Serializer());
Create(new CDataQuestProcessState.MtTypedArrayCDataQuestCommand.Serializer());
Create(new CDataQuestCommand.Serializer());
Create(new CDataQuestContents.Serializer());
Create(new CDataQuestDefine.Serializer());
Create(new CDataQuestEnemyInfo.Serializer());
Create(new CDataQuestFlag.Serializer());
Create(new CDataQuestId.Serializer());
Create(new CDataQuestIdScheduleId.Serializer());
Create(new CDataQuestKeyItemPoint.Serializer());
Create(new CDataQuestKeyItemPointRecord.Serializer());
Create(new CDataQuestLayoutFlag.Serializer());
Create(new CDataQuestLayoutFlagSetInfo.Serializer());
Expand All @@ -164,7 +173,13 @@ static EntitySerializer()
Create(new CDataQuestSetInfo.Serializer());
Create(new CDataQuestTalkInfo.Serializer());
Create(new CDataRewardItem.Serializer());
Create(new CDataS2CQuestJoinLobbyQuestInfoNtcUnk0.Serializer());
Create(new CDataS2CQuestJoinLobbyQuestInfoNtcUnk0Unk1.Serializer());
Create(new CDataS2CQuestJoinLobbyQuestInfoNtcUnk1.Serializer());
Create(new CDataSetAcquirementParam.Serializer());
Create(new CDataSetQuestDetail.Serializer());
Create(new CDataSetQuestList.Serializer());
Create(new CDataSetQuestOrderList.Serializer());
Create(new CDataShortCut.Serializer());
Create(new CDataSkillLevelParam.Serializer());
Create(new CDataSkillParam.Serializer());
Expand All @@ -173,14 +188,17 @@ static EntitySerializer()
Create(new CDataStageLayoutEnemyPresetEnemyInfoClient.Serializer());
Create(new CDataStatusInfoSerializer());
Create(new CDataStorageItemUIDList.Serializer());
Create(new CDataTimeLimitedQuestOrderList.Serializer());
Create(new CDataTraningRoomEnemyHeader.Serializer());
Create(new CDataTutorialQuestOrderList.Serializer());
Create(new CDataUpdateMatchingProfileInfo.Serializer());
Create(new CDataUpdateWalletPoint.Serializer());
Create(new CDataURLInfoSerializer());
Create(new CDataWalletPoint.Serializer());
Create(new CDataWarpPoint.Serializer());
Create(new CDataWeatherLoop.Serializer());
Create(new CDataWeatherSchedule.Serializer());
Create(new CDataWorldManageQuestOrderList.Serializer());
Create(new CDataStageLayoutId.Serializer());
Create(new UnkownCharacterData0Serializer());

Expand Down Expand Up @@ -531,6 +549,8 @@ static EntitySerializer()
Create(new S2CQuestGetLotQuestListRes.Serializer());
Create(new S2CQuestGetMainQuestListRes.Serializer());
Create(new S2CQuestGetPartyQuestProgressInfoRes.Serializer());
Create(new S2CQuestGetSetQuestListRes.Serializer());
Create(new S2CQuestJoinLobbyQuestInfoNtc.Serializer());
Create(new S2CQuestPartyQuestProgressNtc.Serializer());
Create(new S2CQuestSendLeaderQuestOrderConditionInfoNtc.Serializer());
Create(new S2CQuestSendLeaderQuestOrderConditionInfoRes.Serializer());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using System.Collections.Generic;
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class S2CQuestGetSetQuestListRes : ServerResponse
{
public override PacketId Id => PacketId.S2C_QUEST_GET_SET_QUEST_LIST_RES;

public S2CQuestGetSetQuestListRes()
{
SetQuestList = new List<CDataSetQuestList>();
}

public uint DistributeId { get; set; }
public List<CDataSetQuestList> SetQuestList { get; set; }

public class Serializer : PacketEntitySerializer<S2CQuestGetSetQuestListRes>
{
public override void Write(IBuffer buffer, S2CQuestGetSetQuestListRes obj)
{
WriteServerResponse(buffer, obj);
WriteUInt32(buffer, obj.DistributeId);
WriteEntityList<CDataSetQuestList>(buffer, obj.SetQuestList);
}

public override S2CQuestGetSetQuestListRes Read(IBuffer buffer)
{
S2CQuestGetSetQuestListRes obj = new S2CQuestGetSetQuestListRes();
ReadServerResponse(buffer, obj);
obj.DistributeId = ReadUInt32(buffer);
obj.SetQuestList = ReadEntityList<CDataSetQuestList>(buffer);
return obj;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
using System.Collections.Generic;
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Entity.Structure;
using Arrowgene.Ddon.Shared.Model;
using Arrowgene.Ddon.Shared.Network;

namespace Arrowgene.Ddon.Shared.Entity.PacketStructure
{
public class S2CQuestJoinLobbyQuestInfoNtc : IPacketStructure
{
public PacketId Id => PacketId.S2C_QUEST_JOIN_LOBBY_QUEST_INFO_NTC;

public S2CQuestJoinLobbyQuestInfoNtc()
{
LightQuestOrderList = new List<CDataLightQuestOrderList>();
SetQuestOrderList = new List<CDataSetQuestOrderList>();
MainQuestOrderList = new List<CDataMainQuestOrderList>();
TutorialQuestOrderList = new List<CDataTutorialQuestOrderList>();
LotQuestOrderList = new List<CDataLotQuestOrderList>();
Unk0 = new List<CDataS2CQuestJoinLobbyQuestInfoNtcUnk0>();
Unk1 = new List<CDataS2CQuestJoinLobbyQuestInfoNtcUnk1>();
TimeLimitedQuestOrderList = new List<CDataTimeLimitedQuestOrderList>();
WorldManageQuestOrderList = new List<CDataWorldManageQuestOrderList>();
ExpiredQuestList = new List<CDataExpiredQuestList>();
MainQuestIdList = new List<CDataQuestId>();
TutorialQuestIdList = new List<CDataQuestId>();
PriorityQuestList = new List<CDataPriorityQuest>();
AreaRankList = new List<CDataAreaRank>();
QuestDefine = new CDataQuestDefine();
}

public List<CDataLightQuestOrderList> LightQuestOrderList { get; set; }
public List<CDataSetQuestOrderList> SetQuestOrderList { get; set; }
public List<CDataMainQuestOrderList> MainQuestOrderList { get; set; }
public List<CDataTutorialQuestOrderList> TutorialQuestOrderList { get; set; }
public List<CDataLotQuestOrderList> LotQuestOrderList { get; set; }
public List<CDataS2CQuestJoinLobbyQuestInfoNtcUnk0> Unk0 { get; set; }
public List<CDataS2CQuestJoinLobbyQuestInfoNtcUnk1> Unk1 { get; set; }
public List<CDataTimeLimitedQuestOrderList> TimeLimitedQuestOrderList { get; set; }
public List<CDataWorldManageQuestOrderList> WorldManageQuestOrderList { get; set; }
public List<CDataExpiredQuestList> ExpiredQuestList { get; set; }
public List<CDataQuestId> MainQuestIdList { get; set; }
public List<CDataQuestId> TutorialQuestIdList { get; set; }
public List<CDataPriorityQuest> PriorityQuestList { get; set; }
public List<CDataAreaRank> AreaRankList { get; set; }
public CDataQuestDefine QuestDefine { get; set; }

public class Serializer : PacketEntitySerializer<S2CQuestJoinLobbyQuestInfoNtc>
{
public override void Write(IBuffer buffer, S2CQuestJoinLobbyQuestInfoNtc obj)
{
WriteEntityList<CDataLightQuestOrderList>(buffer, obj.LightQuestOrderList);
WriteEntityList<CDataSetQuestOrderList>(buffer, obj.SetQuestOrderList);
WriteEntityList<CDataMainQuestOrderList>(buffer, obj.MainQuestOrderList);
WriteEntityList<CDataTutorialQuestOrderList>(buffer, obj.TutorialQuestOrderList);
WriteEntityList<CDataLotQuestOrderList>(buffer, obj.LotQuestOrderList);
WriteEntityList<CDataS2CQuestJoinLobbyQuestInfoNtcUnk0>(buffer, obj.Unk0);
WriteEntityList<CDataS2CQuestJoinLobbyQuestInfoNtcUnk1>(buffer, obj.Unk1);
WriteEntityList<CDataTimeLimitedQuestOrderList>(buffer, obj.TimeLimitedQuestOrderList);
WriteEntityList<CDataWorldManageQuestOrderList>(buffer, obj.WorldManageQuestOrderList);
WriteEntityList<CDataExpiredQuestList>(buffer, obj.ExpiredQuestList);
WriteEntityList<CDataQuestId>(buffer, obj.MainQuestIdList);
WriteEntityList<CDataQuestId>(buffer, obj.TutorialQuestIdList);
WriteEntityList<CDataPriorityQuest>(buffer, obj.PriorityQuestList);
WriteEntityList<CDataAreaRank>(buffer, obj.AreaRankList);
WriteEntity<CDataQuestDefine>(buffer, obj.QuestDefine);
}

public override S2CQuestJoinLobbyQuestInfoNtc Read(IBuffer buffer)
{
S2CQuestJoinLobbyQuestInfoNtc obj = new S2CQuestJoinLobbyQuestInfoNtc();
obj.LightQuestOrderList = ReadEntityList<CDataLightQuestOrderList>(buffer);
obj.SetQuestOrderList = ReadEntityList<CDataSetQuestOrderList>(buffer);
obj.MainQuestOrderList = ReadEntityList<CDataMainQuestOrderList>(buffer);
obj.TutorialQuestOrderList = ReadEntityList<CDataTutorialQuestOrderList>(buffer);
obj.LotQuestOrderList = ReadEntityList<CDataLotQuestOrderList>(buffer);
obj.Unk0 = ReadEntityList<CDataS2CQuestJoinLobbyQuestInfoNtcUnk0>(buffer);
obj.Unk1 = ReadEntityList<CDataS2CQuestJoinLobbyQuestInfoNtcUnk1>(buffer);
obj.TimeLimitedQuestOrderList = ReadEntityList<CDataTimeLimitedQuestOrderList>(buffer);
obj.WorldManageQuestOrderList = ReadEntityList<CDataWorldManageQuestOrderList>(buffer);
obj.ExpiredQuestList = ReadEntityList<CDataExpiredQuestList>(buffer);
obj.MainQuestIdList = ReadEntityList<CDataQuestId>(buffer);
obj.TutorialQuestIdList = ReadEntityList<CDataQuestId>(buffer);
obj.PriorityQuestList = ReadEntityList<CDataPriorityQuest>(buffer);
obj.AreaRankList = ReadEntityList<CDataAreaRank>(buffer);
obj.QuestDefine = ReadEntity<CDataQuestDefine>(buffer);
return obj;
}
}

}
}
29 changes: 29 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataAreaRank.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System.Collections.Generic;
using Arrowgene.Buffers;
using Arrowgene.Ddon.Shared.Model;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataAreaRank
{
public uint AreaID { get; set; }
public uint Rank { get; set; }

public class Serializer : EntitySerializer<CDataAreaRank>
{
public override void Write(IBuffer buffer, CDataAreaRank obj)
{
WriteUInt32(buffer, obj.AreaID);
WriteUInt32(buffer, obj.Rank);
}

public override CDataAreaRank Read(IBuffer buffer)
{
CDataAreaRank obj = new CDataAreaRank();
obj.AreaID = ReadUInt32(buffer);
obj.Rank = ReadUInt32(buffer);
return obj;
}
}
}
}
30 changes: 30 additions & 0 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataDeliveredItem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using Arrowgene.Buffers;

namespace Arrowgene.Ddon.Shared.Entity.Structure
{
public class CDataDeliveredItem
{
public uint ItemId { get; set; }
public ushort ItemNum { get; set; }
public ushort NeedNum { get; set; }

public class Serializer : EntitySerializer<CDataDeliveredItem>
{
public override void Write(IBuffer buffer, CDataDeliveredItem obj)
{
WriteUInt32(buffer, obj.ItemId);
WriteUInt16(buffer, obj.ItemNum);
WriteUInt16(buffer, obj.NeedNum);
}

public override CDataDeliveredItem Read(IBuffer buffer)
{
CDataDeliveredItem obj = new CDataDeliveredItem();
obj.ItemId = ReadUInt32(buffer);
obj.ItemNum = ReadUInt16(buffer);
obj.NeedNum = ReadUInt16(buffer);
return obj;
}
}
}
}
19 changes: 16 additions & 3 deletions Arrowgene.Ddon.Shared/Entity/Structure/CDataDeliveredItemRecord.cs
Original file line number Diff line number Diff line change
@@ -1,24 +1,37 @@
using Arrowgene.Buffers;
using System.Collections.Generic;
using Arrowgene.Buffers;

namespace Arrowgene.Ddon.Shared.Entity.Structure;

public class CDataDeliveredItemRecord
{
public CDataDeliveredItemRecord()
{

DeliveredItemList = new List<CDataDeliveredItem>();
}

public uint CharacterId { get; set; }
public uint QuestScheduleId { get; set; }
public ushort ProcessNo { get; set; }
public List<CDataDeliveredItem> DeliveredItemList { get; set; }

public class Serializer : EntitySerializer<CDataDeliveredItemRecord>
{
public override void Write(IBuffer buffer, CDataDeliveredItemRecord obj)
{

WriteUInt32(buffer, obj.CharacterId);
WriteUInt32(buffer, obj.QuestScheduleId);
WriteUInt16(buffer, obj.ProcessNo);
WriteEntityList<CDataDeliveredItem>(buffer, obj.DeliveredItemList);
}

public override CDataDeliveredItemRecord Read(IBuffer buffer)
{
CDataDeliveredItemRecord obj = new CDataDeliveredItemRecord();
obj.CharacterId = ReadUInt32(buffer);
obj.QuestScheduleId = ReadUInt32(buffer);
obj.ProcessNo = ReadUInt16(buffer);
obj.DeliveredItemList = ReadEntityList<CDataDeliveredItem>(buffer);
return obj;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Arrowgene.Ddon.Shared.Entity.Structure;
public class CDataDeliveryItem
{
public uint ItemId { get; set; }
// One of these is num
// One of these is item num, another probably need num
public ushort Unk0 { get; set; }
public ushort Unk1 { get; set; }
public ushort Unk2 { get; set; }
Expand Down
Loading

0 comments on commit 181f702

Please sign in to comment.