mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-14 16:04:36 +01:00
main quest works
This commit is contained in:
@@ -10,8 +10,8 @@ namespace ProtobufViewUtil
|
|||||||
{
|
{
|
||||||
Console.WriteLine("Hello, World!");
|
Console.WriteLine("Hello, World!");
|
||||||
|
|
||||||
ResGetContentsOpenData s = new ResGetContentsOpenData();
|
ResGetMainQuestData s = new ResGetMainQuestData();
|
||||||
var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\getusercontents-ch2complete");
|
var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\getmainquestdata-ch1complete2");
|
||||||
s.MergeFrom(inn);
|
s.MergeFrom(inn);
|
||||||
Console.WriteLine(s.ToString());
|
Console.WriteLine(s.ToString());
|
||||||
var outt = s.ToByteArray();
|
var outt = s.ToByteArray();
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace nksrv.IntlServer
|
|||||||
|
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
WriteJsonString("{\"del_account_info\":\"{\\\"ret\\\":0,\\\"msg\\\":\\\"\\\",\\\"status\\\":0,\\\"created_at\\\":\\\"0\\\",\\\"target_destroy_at\\\":\\\"0\\\",\\\"destroyed_at\\\":\\\"0\\\",\\\"err_code\\\":0,\\\"seq\\\":\\\"" + Seq + "\\\"}\",\"del_account_status\":0,\"del_li_account_status\":0,\"extra_json\":{\"del_li_account_info\":\"{\\\"ret\\\":0,\\\"msg\\\":\\\"\\\",\\\"status\\\":0,\\\"created_at\\\":\\\"0\\\",\\\"target_destroy_at\\\":\\\"0\\\",\\\"destroyed_at\\\":\\\"0\\\",\\\"err_code\\\":0,\\\"seq\\\":\\\"1719078088-4128751114-032279-4229229759\\\"}\",\"get_status_msg\":\"success\",\"get_status_ret\":0,\"get_status_rsp\":{\"adult_age\":14,\"adult_age_map\":{},\"adult_check_status\":1,\"adult_check_status_expiration\":\"0\",\"adult_status_map\":{},\"certificate_type\":3,\"email\":\"\",\"eu_user_agree_status\":0,\"game_grade\":0,\"game_grade_map\":{},\"is_dma\":true,\"is_eea\":false,\"is_need_li_cert\":false,\"msg\":\"success\",\"need_parent_control\":0,\"need_realname_auth\":0,\"parent_certificate_status\":0,\"parent_certificate_status_expiration\":\"0\",\"parent_control_map\":{},\"qr_code_ret\":0,\"realname_auth_status\":0,\"region\":\"724\",\"ret\":0,\"ts\":\""+ DateTimeOffset.UtcNow.ToUnixTimeSeconds()
|
WriteJsonString("{\"del_account_info\":\"{\\\"ret\\\":0,\\\"msg\\\":\\\"\\\",\\\"status\\\":0,\\\"created_at\\\":\\\"0\\\",\\\"target_destroy_at\\\":\\\"0\\\",\\\"destroyed_at\\\":\\\"0\\\",\\\"err_code\\\":0,\\\"seq\\\":\\\"" + Seq + "\\\"}\",\"del_account_status\":0,\"del_li_account_status\":0,\"extra_json\":{\"del_li_account_info\":\"{\\\"ret\\\":0,\\\"msg\\\":\\\"\\\",\\\"status\\\":0,\\\"created_at\\\":\\\"0\\\",\\\"target_destroy_at\\\":\\\"0\\\",\\\"destroyed_at\\\":\\\"0\\\",\\\"err_code\\\":0,\\\"seq\\\":\\\"" + Seq + "\\\"}\",\"get_status_msg\":\"success\",\"get_status_ret\":0,\"get_status_rsp\":{\"adult_age\":14,\"adult_age_map\":{},\"adult_check_status\":1,\"adult_check_status_expiration\":\"0\",\"adult_status_map\":{},\"certificate_type\":3,\"email\":\"\",\"eu_user_agree_status\":0,\"game_grade\":0,\"game_grade_map\":{},\"is_dma\":true,\"is_eea\":false,\"is_need_li_cert\":false,\"msg\":\"success\",\"need_parent_control\":0,\"need_realname_auth\":0,\"parent_certificate_status\":0,\"parent_certificate_status_expiration\":\"0\",\"parent_control_map\":{},\"qr_code_ret\":0,\"realname_auth_status\":0,\"region\":\"724\",\"ret\":0,\"ts\":\"" + DateTimeOffset.UtcNow.ToUnixTimeSeconds()
|
||||||
+ "\"},\"need_notify_msg\":\"success\",\"need_notify_ret\":0,\"need_notify_rsp\":{\"has_bind_li\":true,\"is_receive_email\":1,\"is_receive_email_in_night\":0,\"user_agreed_game_dma\":\"2\",\"user_agreed_game_pp\":\"1\",\"user_agreed_game_tos\":\"1\",\"user_agreed_li_dt\":\"\",\"user_agreed_li_pp\":\"1\",\"user_agreed_li_tos\":\"\"}},\"msg\":\"success\",\"ret\":0,\"seq\":\"" + Seq + "\"}");
|
+ "\"},\"need_notify_msg\":\"success\",\"need_notify_ret\":0,\"need_notify_rsp\":{\"has_bind_li\":true,\"is_receive_email\":1,\"is_receive_email_in_night\":0,\"user_agreed_game_dma\":\"2\",\"user_agreed_game_pp\":\"1\",\"user_agreed_game_tos\":\"1\",\"user_agreed_li_dt\":\"\",\"user_agreed_li_pp\":\"1\",\"user_agreed_li_tos\":\"\"}},\"msg\":\"success\",\"ret\":0,\"seq\":\"" + Seq + "\"}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using EmbedIO;
|
||||||
|
|
||||||
namespace nksrv.LobbyServer.Msgs.Auth
|
namespace nksrv.LobbyServer.Msgs.Auth
|
||||||
{
|
{
|
||||||
@@ -16,17 +17,25 @@ namespace nksrv.LobbyServer.Msgs.Auth
|
|||||||
{
|
{
|
||||||
var req = await ReadData<EnterServerRequest>();
|
var req = await ReadData<EnterServerRequest>();
|
||||||
|
|
||||||
|
// request has auth token
|
||||||
|
UsedAuthToken = req.AuthToken;
|
||||||
|
foreach (var item in JsonDb.Instance.LauncherAccessTokens)
|
||||||
|
{
|
||||||
|
if (item.Token == UsedAuthToken)
|
||||||
|
{
|
||||||
|
UserId = item.UserID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (UserId == 0) throw new HttpException(403);
|
||||||
|
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new EnterServerResponse();
|
var response = new EnterServerResponse();
|
||||||
var rsp = LobbyHandler.GenGameClientTok(req.ClientPublicKey, req.AuthToken);
|
var rsp = LobbyHandler.GenGameClientTok(req.ClientPublicKey, req.AuthToken);
|
||||||
response.GameClientToken = rsp.ClientAuthToken;
|
response.GameClientToken = rsp.ClientAuthToken;
|
||||||
response.FeatureDataInfo = new NetFeatureDataInfo() { UseFeatureData = true };
|
response.FeatureDataInfo = new NetFeatureDataInfo() { UseFeatureData = true };
|
||||||
response.Identifier = new NetLegacyUserIdentifier() { Server = 21769, Usn = 10984769 };
|
response.Identifier = new NetLegacyUserIdentifier() { Server = 21769, Usn = (long)user.ID };
|
||||||
response.ShouldRestartAfter = Duration.FromTimeSpan(TimeSpan.FromSeconds(86400));
|
response.ShouldRestartAfter = Duration.FromTimeSpan(TimeSpan.FromSeconds(86400));
|
||||||
|
|
||||||
// This was probably the public key for communication at some point during the game's development
|
|
||||||
// But, the developers chose to hardcode server public key in the client, which prevents this
|
|
||||||
// private server from "just working", so thats why hex patch is required.
|
|
||||||
// The only point of encrypting packets is to make it harder for me to develop this and users to use this.
|
|
||||||
response.EncryptionToken = ByteString.CopyFromUtf8(rsp.ClientAuthToken);
|
response.EncryptionToken = ByteString.CopyFromUtf8(rsp.ClientAuthToken);
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,18 @@ namespace nksrv.LobbyServer.Msgs.Campaign
|
|||||||
|
|
||||||
// todo save this data
|
// todo save this data
|
||||||
response.Team = new NetUserTeamData() { LastContentsTeamNumber = 1, Type = 1 };
|
response.Team = new NetUserTeamData() { LastContentsTeamNumber = 1, Type = 1 };
|
||||||
|
if (user.LastStageCleared >= 6000003)
|
||||||
|
{
|
||||||
|
var team = new NetTeamData() { TeamNumber = 1 };
|
||||||
|
team.Slots.Add(new NetTeamSlot() { Slot = 1, Value = 47263455 });
|
||||||
|
team.Slots.Add(new NetTeamSlot() { Slot = 2, Value = 47263456 });
|
||||||
|
team.Slots.Add(new NetTeamSlot() { Slot = 3, Value = 47263457 });
|
||||||
|
team.Slots.Add(new NetTeamSlot() { Slot = 4, Value = 47263458 });
|
||||||
|
team.Slots.Add(new NetTeamSlot() { Slot = 5, Value = 47263459 });
|
||||||
|
response.Team.Teams.Add(team);
|
||||||
|
|
||||||
|
response.TeamPositions.Add(new NetCampaignTeamPosition() { TeamNumber = 1, Type = 1, Position = new NetVector3() { } });
|
||||||
|
}
|
||||||
|
|
||||||
string resultingJson;
|
string resultingJson;
|
||||||
if (!user.MapJson.ContainsKey(req.MapId))
|
if (!user.MapJson.ContainsKey(req.MapId))
|
||||||
@@ -44,7 +56,7 @@ namespace nksrv.LobbyServer.Msgs.Campaign
|
|||||||
|
|
||||||
public static int GetChapterFromMapId(string mapId)
|
public static int GetChapterFromMapId(string mapId)
|
||||||
{
|
{
|
||||||
switch(mapId)
|
switch (mapId)
|
||||||
{
|
{
|
||||||
case "fcbg_cityforest_000":
|
case "fcbg_cityforest_000":
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ namespace nksrv.LobbyServer.Msgs
|
|||||||
var req = ReadData<ReqGetGachaData>();
|
var req = ReadData<ReqGetGachaData>();
|
||||||
|
|
||||||
var response = new ResGetGachaData();
|
var response = new ResGetGachaData();
|
||||||
|
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,9 +12,10 @@ namespace nksrv.LobbyServer.Msgs.Mission
|
|||||||
{
|
{
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ResGetAchievementRewardedData>();
|
var req = await ReadData<ReqGetAchievementRewardedData>();
|
||||||
|
|
||||||
|
var response = new ResGetAchievementRewardedData();
|
||||||
|
|
||||||
var response = new ReqGetAchievementRewardedData();
|
|
||||||
// TODO
|
// TODO
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,30 +31,13 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
user.FieldInfo.Add(0, new FieldInfo() { });
|
user.FieldInfo.Add(0, new FieldInfo() { });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DoQuestSpecificUserOperations(user, req.StageId);
|
||||||
|
|
||||||
// TODO: figure out how stageid corresponds to chapter
|
// TODO: figure out how stageid corresponds to chapter
|
||||||
user.FieldInfo[GetChapterForStageId(req.StageId)].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
|
user.FieldInfo[GetChapterForStageId(req.StageId)].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
|
||||||
JsonDb.Save();
|
JsonDb.Save();
|
||||||
|
|
||||||
if (req.StageId == 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
|
|
||||||
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 });
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47263458, Tid = 230101 });
|
|
||||||
user.Characters.Add(new Utils.Character() { Csn = 47263459, Tid = 301201 });
|
|
||||||
|
|
||||||
user.TeamData.TeamNumber = 1;
|
|
||||||
user.TeamData.TeamCombat = 1446; // TODO: Don't hardcode this
|
|
||||||
user.TeamData.Slots.Clear();
|
|
||||||
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 1, Csn = 47263455, Tid = 201001, Lvl = 1 });
|
|
||||||
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 2, Csn = 47273456, Tid = 330501, Lvl = 1 });
|
|
||||||
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 });
|
|
||||||
}
|
|
||||||
|
|
||||||
// assign rewards
|
// assign rewards
|
||||||
if (StageCompletionReward.RewardData.ContainsKey(req.StageId))
|
if (StageCompletionReward.RewardData.ContainsKey(req.StageId))
|
||||||
@@ -102,6 +85,55 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
// 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
|
||||||
|
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 });
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47263458, Tid = 230101 });
|
||||||
|
user.Characters.Add(new Utils.Character() { Csn = 47263459, Tid = 301201 });
|
||||||
|
|
||||||
|
user.TeamData.TeamNumber = 1;
|
||||||
|
user.TeamData.TeamCombat = 1446; // TODO: Don't hardcode this
|
||||||
|
user.TeamData.Slots.Clear();
|
||||||
|
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 1, Csn = 47263455, Tid = 201001, Lvl = 1 });
|
||||||
|
user.TeamData.Slots.Add(new NetWholeTeamSlot { Slot = 2, Csn = 47273456, Tid = 330501, Lvl = 1 });
|
||||||
|
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)
|
public static int GetChapterForStageId(int stageId)
|
||||||
{
|
{
|
||||||
if (6000001 <= stageId && stageId <= 6000003)
|
if (6000001 <= stageId && stageId <= 6000003)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using nksrv.Utils;
|
using nksrv.Utils;
|
||||||
|
using Swan.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -18,15 +19,35 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
|||||||
var user = GetUser();
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResGetStageData();
|
var response = new ResGetStageData();
|
||||||
response.Field = CreateFieldInfo(user, req.Chapter-1);
|
response.Field = CreateFieldInfo(user, req.Chapter - 1);
|
||||||
|
|
||||||
|
|
||||||
|
response.HasChapterBossEntered = true;
|
||||||
|
|
||||||
response.SquadData = "";
|
response.SquadData = "";
|
||||||
|
|
||||||
WriteData(response);
|
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)
|
public static NetFieldObjectData CreateFieldInfo(Utils.User user, int chapter)
|
||||||
{
|
{
|
||||||
var f = new NetFieldObjectData();
|
var f = new NetFieldObjectData();
|
||||||
|
|||||||
24
nksrv/LobbyServer/Msgs/Trigger/FinishMainQuest.cs
Normal file
24
nksrv/LobbyServer/Msgs/Trigger/FinishMainQuest.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using nksrv.Utils;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace nksrv.LobbyServer.Msgs.Trigger
|
||||||
|
{
|
||||||
|
[PacketPath("/Trigger/FinMainQuest")]
|
||||||
|
public class FinishMainQuest : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqFinMainQuest>();
|
||||||
|
var user = GetUser();
|
||||||
|
Console.WriteLine("Complete quest: " + req.Tid);
|
||||||
|
user.SetQuest(req.Tid, true); // todo is this right?
|
||||||
|
JsonDb.Save();
|
||||||
|
var response = new ResFinMainQuest();
|
||||||
|
WriteData(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,9 +8,14 @@ namespace nksrv.LobbyServer.Msgs.Trigger
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetMainQuestData>();
|
var req = await ReadData<ReqGetMainQuestData>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResGetMainQuestData();
|
var response = new ResGetMainQuestData();
|
||||||
response.MainQuestList.Add(new NetMainQuestData() { IsReceived = true, Tid = 1 });
|
foreach (var item in user.MainQuestData)
|
||||||
|
{
|
||||||
|
response.MainQuestList.Add(new NetMainQuestData() { IsReceived = item.Value, Tid = item.Key });
|
||||||
|
}
|
||||||
|
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
response.User.CommanderRoomJukebox = 5;
|
response.User.CommanderRoomJukebox = 5;
|
||||||
response.User.CostumeLv = 1;
|
response.User.CostumeLv = 1;
|
||||||
response.User.Frame = 1;
|
response.User.Frame = 1;
|
||||||
response.User.Icon = 39900;
|
response.User.Icon = user.ProfileIconId;
|
||||||
|
response.User.IconPrism = user.ProfileIconIsPrism;
|
||||||
response.User.LobbyJukebox = 2;
|
response.User.LobbyJukebox = 2;
|
||||||
response.ResetHour = 20;
|
response.ResetHour = 20;
|
||||||
response.Nickname = user.Nickname;
|
response.Nickname = user.Nickname;
|
||||||
|
|||||||
@@ -15,7 +15,42 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
var req = await ReadData<ReqGetAllFeatureFlags>();
|
var req = await ReadData<ReqGetAllFeatureFlags>();
|
||||||
|
|
||||||
var response = new ResGetAllFeatureFlags();
|
var response = new ResGetAllFeatureFlags();
|
||||||
// TODO
|
response.Flags.AddRange([
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.UnionRaid2, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.CooperationEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.RookieArena, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.SimulationRoom, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.DailyEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Intercept, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Attendance, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Dice, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.StoryDungeonEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Tower, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.LostSector2, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Subscription2, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.ArchiveEventSystem, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.ViewShortCut, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.PollEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.ComeBackUserEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.EventPass, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.FieldHubEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.ShopEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.MissionEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.ChargeGachaEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.MiniGameSortOut, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.CharacterSkillResetEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.EventQuest, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.RewardUpEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.SdbattleEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.TextAdventure, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.ChallengeModeEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.DailyFreeGachaEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.BoxGachaEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.DiceEvent, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Bbqtycoon, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.Ce002MiniGame, IsOpen = true },
|
||||||
|
new NetFeatureFlag() { FeatureKind = NetFeatureKind.SoloRaid, IsOpen = true },
|
||||||
|
]);
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
response.User.CommanderRoomJukebox = 5;
|
response.User.CommanderRoomJukebox = 5;
|
||||||
response.User.CostumeLv = 1;
|
response.User.CostumeLv = 1;
|
||||||
response.User.Frame = 1;
|
response.User.Frame = 1;
|
||||||
response.User.Icon = 39900;
|
response.User.Icon = user.ProfileIconId;
|
||||||
|
response.User.IconPrism = user.ProfileIconIsPrism;
|
||||||
response.User.LobbyJukebox = 2;
|
response.User.LobbyJukebox = 2;
|
||||||
response.ResetHour = 20;
|
response.ResetHour = 20;
|
||||||
response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000 };
|
response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000 };
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using nksrv.Utils;
|
using nksrv.Utils;
|
||||||
|
using Swan.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -13,11 +14,21 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetProfileData>();
|
var req = await ReadData<ReqGetProfileData>();
|
||||||
|
var user = GetUser();
|
||||||
var response = new ResGetProfileData();
|
var response = new ResGetProfileData();
|
||||||
|
|
||||||
Console.WriteLine(req.TargetUsn);
|
|
||||||
response.Data = new NetProfileData();
|
response.Data = new NetProfileData();
|
||||||
|
Console.WriteLine("GET USER PROFILE NOT IMPLEMENTED: " + req.TargetUsn);
|
||||||
|
if (user.ID == (ulong)req.TargetUsn)
|
||||||
|
{
|
||||||
|
response.Data.User = new NetWholeUserData();
|
||||||
|
response.Data.User.Icon = user.ProfileIconId;
|
||||||
|
response.Data.User.IconPrism = user.ProfileIconIsPrism;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.Warn("Unknown User ID: " + req.TargetUsn);
|
||||||
|
}
|
||||||
|
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetWallpaper>();
|
var req = await ReadData<ReqGetWallpaper>();
|
||||||
var response = new ResGetWallpaper();
|
var response = new ResGetWallpaper();
|
||||||
|
response.WallpaperList.AddRange(GetUser().WallpaperList);
|
||||||
|
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|||||||
24
nksrv/LobbyServer/Msgs/User/SetProfileIcon.cs
Normal file
24
nksrv/LobbyServer/Msgs/User/SetProfileIcon.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using nksrv.Utils;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace nksrv.LobbyServer.Msgs.User
|
||||||
|
{
|
||||||
|
[PacketPath("/user/setprofileicon")]
|
||||||
|
public class SetProfileIcon : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqSetProfileIcon>();
|
||||||
|
var user = GetUser();
|
||||||
|
user.ProfileIconId = req.Icon;
|
||||||
|
user.ProfileIconIsPrism = req.IsPrism;
|
||||||
|
JsonDb.Save();
|
||||||
|
var response = new ResSetProfileIcon();
|
||||||
|
WriteData(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
|||||||
{
|
{
|
||||||
var req = await ReadData<ReqSetWallpaper>();
|
var req = await ReadData<ReqSetWallpaper>();
|
||||||
var response = new ResSetWallpaper();
|
var response = new ResSetWallpaper();
|
||||||
// todo
|
var user = GetUser();
|
||||||
|
user.WallpaperList = req.WallpaperList.ToArray();
|
||||||
|
|
||||||
WriteData(response);
|
WriteData(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1518,7 +1518,34 @@ message ResGetJupiterMarketingDetail {
|
|||||||
|
|
||||||
|
|
||||||
message NetProfileData {
|
message NetProfileData {
|
||||||
// TODO
|
string desc = 1;
|
||||||
|
int64 lastActionAt = 2;
|
||||||
|
int32 exp = 3;
|
||||||
|
int32 lastCampaignNormalStageId = 4;
|
||||||
|
int32 lastCampaignHardStageId = 5;
|
||||||
|
int32 lastTribeTowerFloor = 6;
|
||||||
|
NetWholeUserData user = 7;
|
||||||
|
/*repeated NetProfileTeamSlot profileTeam = 8;
|
||||||
|
NetSimpleGuildData guild = 9;
|
||||||
|
NetCharacterCount characterCount = 10;
|
||||||
|
repeated NetUserRecycleRoomData recycle = 11;
|
||||||
|
int32 synchroLv = 12;
|
||||||
|
int32 synchroSlotCount = 13;
|
||||||
|
in32 infraCoreLv = 14;
|
||||||
|
int32 lastTacticAcademyClass = 15;
|
||||||
|
int32 lastTacticAcademyLesson = 16;
|
||||||
|
repeated NetMemorialCount memorialCount = 17;
|
||||||
|
int32 jukeboxCount = 18;
|
||||||
|
int32 costumeLv = 19;
|
||||||
|
int32 outpostOpenState = 20;
|
||||||
|
int32 costumeCount = 22;
|
||||||
|
string language = 23;
|
||||||
|
NetProfileFrameHistoryType profileFrameHistory = 24;
|
||||||
|
repeated NetProfileFrameData profileFrames = 25;
|
||||||
|
repeated NetProfileRepresentativeFrame representativeProfileFrames = 26;
|
||||||
|
repeated int32 recentAcquireFilterTypes = 27;
|
||||||
|
int32 simRoomOverclockHighScoreLevel = 28;
|
||||||
|
repeated NetProfileSimRoomOverclockHighScoreData simRoomOverclockHighScoreData = 29;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1573,3 +1600,17 @@ message ResSetTeam {
|
|||||||
int32 type = 2;
|
int32 type = 2;
|
||||||
repeated NetTeamData teams = 3;
|
repeated NetTeamData teams = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message ReqSetProfileIcon {
|
||||||
|
int32 icon = 2;
|
||||||
|
bool isPrism = 3;
|
||||||
|
}
|
||||||
|
message ResSetProfileIcon {
|
||||||
|
}
|
||||||
|
|
||||||
|
message ReqFinMainQuest {
|
||||||
|
int32 tid = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message ResFinMainQuest {
|
||||||
|
}
|
||||||
@@ -34,6 +34,8 @@ namespace nksrv.Utils
|
|||||||
var oldFG = Console.ForegroundColor;
|
var oldFG = Console.ForegroundColor;
|
||||||
Console.ForegroundColor = newFG;
|
Console.ForegroundColor = newFG;
|
||||||
Console.WriteLine(msg);
|
Console.WriteLine(msg);
|
||||||
|
if (logEvent.Exception != null)
|
||||||
|
Console.WriteLine(logEvent.Exception);
|
||||||
Console.ForegroundColor = oldFG;
|
Console.ForegroundColor = oldFG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,12 @@ namespace nksrv.Utils
|
|||||||
public int Skill2Lvl = 1;
|
public int Skill2Lvl = 1;
|
||||||
public int Grade = 0;
|
public int Grade = 0;
|
||||||
}
|
}
|
||||||
|
public class MainQuestData
|
||||||
|
{
|
||||||
|
public int TableId = 0;
|
||||||
|
public bool IsReceieved = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public class User
|
public class User
|
||||||
{
|
{
|
||||||
@@ -46,6 +52,8 @@ namespace nksrv.Utils
|
|||||||
public long RegisterTime;
|
public long RegisterTime;
|
||||||
public int LastStageCleared;
|
public int LastStageCleared;
|
||||||
public string Nickname = "SomePLayer";
|
public string Nickname = "SomePLayer";
|
||||||
|
public int ProfileIconId = 39900;
|
||||||
|
public bool ProfileIconIsPrism = false;
|
||||||
|
|
||||||
|
|
||||||
// Game data
|
// Game data
|
||||||
@@ -60,6 +68,29 @@ namespace nksrv.Utils
|
|||||||
public List<Character> Characters = [];
|
public List<Character> Characters = [];
|
||||||
public NetWholeUserTeamData TeamData = new();
|
public NetWholeUserTeamData TeamData = new();
|
||||||
public List<int> ClearedTutorials = [];
|
public List<int> ClearedTutorials = [];
|
||||||
|
public NetWallpaperData[] WallpaperList = [];
|
||||||
|
public Dictionary<int, bool> MainQuestData = new()
|
||||||
|
{
|
||||||
|
{1, false }
|
||||||
|
};
|
||||||
|
|
||||||
|
public void SetQuest(int tid, bool recieved)
|
||||||
|
{
|
||||||
|
if (MainQuestData.ContainsKey(tid))
|
||||||
|
{
|
||||||
|
MainQuestData[tid] = recieved;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MainQuestData.Add(tid, recieved);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RmQuest(int tid)
|
||||||
|
{
|
||||||
|
MainQuestData.Remove(tid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public class CoreInfo
|
public class CoreInfo
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user