parse static data to get quest data

This commit is contained in:
Mikhail Thompson
2024-06-29 20:57:44 +03:00
parent 846b72ce9d
commit 48ed961648
11 changed files with 344 additions and 62 deletions

View File

@@ -16,7 +16,7 @@ namespace nksrv.LobbyServer.Msgs.Misc
var r = new ResourceHostResponse();
r.BaseUrl = "https://cloud.nikke-kr.com/prdenv/121-b0630db21d/{Platform}";
WriteData(r);
}
}

View File

@@ -1,4 +1,5 @@
using Google.Protobuf;
using nksrv.StaticInfo;
using nksrv.Utils;
namespace nksrv.LobbyServer.Msgs.Misc
@@ -11,14 +12,14 @@ namespace nksrv.LobbyServer.Msgs.Misc
var req = await ReadData<StaticDataPackRequest>();
var r = new StaticDataPackResponse();
r.Url = "https://cloud.nikke-kr.com/prdenv/121-c5e64b1a1b/staticdata/data/qa-240620-05b-p1/307748/StaticData.pack";
r.Version = "data/qa-240620-05b-p1/307748";
r.Size = 11575712;
r.Url = StaticDataParser.StaticDataUrl;
r.Version = StaticDataParser.Version;
r.Size = StaticDataParser.Size;
// TODO: Read the file and compute these values
r.Sha256Sum = ByteString.CopyFrom(Convert.FromBase64String("PBcDa3PoHR2MJQ+4Xc3/FUSgkqx2gY25MBJ0ih9FMsM="));
r.Salt1 = ByteString.CopyFrom(Convert.FromBase64String("WqyrQ8MGtzwHN3AGPkqVKyjdfWZjBJXw9K7nGblv/SA="));
r.Salt2 = ByteString.CopyFrom(Convert.FromBase64String("6Gf2jEvAX2mt5OWIxIU5uDdbjKtIc+VgTjKKSLuYnsI="));
r.Sha256Sum = ByteString.CopyFrom(StaticDataParser.Sha256Sum);
r.Salt1 = ByteString.CopyFrom(StaticDataParser.Salt1);
r.Salt2 = ByteString.CopyFrom(StaticDataParser.Salt2);
WriteData(r);
}

View File

@@ -1,4 +1,5 @@
using nksrv.Utils;
using Swan.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -23,8 +24,9 @@ namespace nksrv.LobbyServer.Msgs.Shop
}
WriteData(response);
}
catch
catch(Exception ex)
{
Logger.Error("Error while handling GetProductList request. Have you replaced sodium library?" + ex);
;
}
}

View File

@@ -87,19 +87,16 @@ namespace nksrv.LobbyServer.Msgs.Stage
private static void DoQuestSpecificUserOperations(Utils.User user, int clearedStageId)
{
if (clearedStageId == 6000001)
{
user.SetQuest(2, true);
}
else if (clearedStageId == 6000002)
{
user.SetQuest(3, true);
}
else if (clearedStageId == 6000003)
var quest = StaticDataParser.Instance.GetMainQuestForStageClearCondition(clearedStageId);
if (quest == null) throw new Exception("quest not found for stage: " + clearedStageId);
user.SetQuest(quest.id, true);
user.SetQuest(quest.next_main_quest_id, false);
if (clearedStageId == 6000003)
{
// TODO: Is this the right place to copy over default characters?
// TODO: What is CSN and TID? Also need to add names for these
// Note: CSN appears to be a character ID, still not sure what TID is
// Note: TID is table index, not sure what CSN is
user.Characters.Add(new Utils.Character() { Csn = 47263455, Tid = 201001 });
user.Characters.Add(new Utils.Character() { Csn = 47273456, Tid = 330501 });
user.Characters.Add(new Utils.Character() { Csn = 47263457, Tid = 130201 });
@@ -114,24 +111,6 @@ namespace nksrv.LobbyServer.Msgs.Stage
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 3, Csn = 47263457, Tid = 130201, Lvl = 1 });
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 4, Csn = 47263458, Tid = 230101, Lvl = 1 });
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 5, Csn = 47263459, Tid = 301201, Lvl = 1 });
user.SetQuest(4, true);
}
else if (clearedStageId == 6001001)
{
user.SetQuest(5, true);
}
else if (clearedStageId == 6001003)
{
user.SetQuest(6, true);
}
else if (clearedStageId == 6001004)
{
user.SetQuest(7, true);
}
else if (clearedStageId == 6002001)
{
user.SetQuest(13, true);
}
}
public static int GetChapterForStageId(int stageId)

View File

@@ -28,26 +28,6 @@ namespace nksrv.LobbyServer.Msgs.Stage
WriteData(response);
}
public static NetFieldObjectData CreateFieldInfoWithAllStages(int chapter)
{
var f = new NetFieldObjectData();
switch(chapter)
{
case 1:
f.Stages.Add(new NetFieldStageData() { StageId = 6001001 });
f.Stages.Add(new NetFieldStageData() { StageId = 6001002 });
f.Stages.Add(new NetFieldStageData() { StageId = 6001003 });
f.Stages.Add(new NetFieldStageData() { StageId = 6001004 });
// Objects are collected i think
break;
default:
Logger.Error("ERROR: CreateFieldInfoWithAllStages: TODO chapter " + chapter);
break;
}
return f;
}
public static NetFieldObjectData CreateFieldInfo(Utils.User user, int chapter)
{
var f = new NetFieldObjectData();

View File

@@ -1,4 +1,5 @@
using nksrv.Utils;
using nksrv.StaticInfo;
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -15,7 +16,14 @@ namespace nksrv.LobbyServer.Msgs.Trigger
var req = await ReadData<ReqFinMainQuest>();
var user = GetUser();
Console.WriteLine("Complete quest: " + req.Tid);
user.SetQuest(req.Tid, true); // todo is this right?
user.SetQuest(req.Tid, true);
var completedQuest = StaticDataParser.Instance.GetMainQuestByTableId(req.Tid);
if (completedQuest == null) throw new Exception("Quest not found");
// set next quest as available
user.SetQuest(completedQuest.next_main_quest_id, true);
JsonDb.Save();
var response = new ResFinMainQuest();
WriteData(response);