mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 07:24:52 +01:00
main quest works
This commit is contained in:
@@ -10,8 +10,8 @@ namespace ProtobufViewUtil
|
||||
{
|
||||
Console.WriteLine("Hello, World!");
|
||||
|
||||
ResGetContentsOpenData s = new ResGetContentsOpenData();
|
||||
var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\getusercontents-ch2complete");
|
||||
ResGetMainQuestData s = new ResGetMainQuestData();
|
||||
var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\getmainquestdata-ch1complete2");
|
||||
s.MergeFrom(inn);
|
||||
Console.WriteLine(s.ToString());
|
||||
var outt = s.ToByteArray();
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace nksrv.IntlServer
|
||||
|
||||
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 + "\"}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using EmbedIO;
|
||||
|
||||
namespace nksrv.LobbyServer.Msgs.Auth
|
||||
{
|
||||
@@ -16,17 +17,25 @@ namespace nksrv.LobbyServer.Msgs.Auth
|
||||
{
|
||||
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 rsp = LobbyHandler.GenGameClientTok(req.ClientPublicKey, req.AuthToken);
|
||||
response.GameClientToken = rsp.ClientAuthToken;
|
||||
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));
|
||||
|
||||
// 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);
|
||||
WriteData(response);
|
||||
}
|
||||
|
||||
@@ -24,6 +24,18 @@ namespace nksrv.LobbyServer.Msgs.Campaign
|
||||
|
||||
// todo save this data
|
||||
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;
|
||||
if (!user.MapJson.ContainsKey(req.MapId))
|
||||
@@ -38,13 +50,13 @@ namespace nksrv.LobbyServer.Msgs.Campaign
|
||||
|
||||
response.Json = resultingJson;
|
||||
|
||||
|
||||
|
||||
WriteData(response);
|
||||
}
|
||||
|
||||
public static int GetChapterFromMapId(string mapId)
|
||||
{
|
||||
switch(mapId)
|
||||
switch (mapId)
|
||||
{
|
||||
case "fcbg_cityforest_000":
|
||||
return 0;
|
||||
|
||||
@@ -16,7 +16,6 @@ namespace nksrv.LobbyServer.Msgs
|
||||
var req = ReadData<ReqGetGachaData>();
|
||||
|
||||
var response = new ResGetGachaData();
|
||||
|
||||
WriteData(response);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,9 +12,10 @@ namespace nksrv.LobbyServer.Msgs.Mission
|
||||
{
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ResGetAchievementRewardedData>();
|
||||
var req = await ReadData<ReqGetAchievementRewardedData>();
|
||||
|
||||
var response = new ResGetAchievementRewardedData();
|
||||
|
||||
var response = new ReqGetAchievementRewardedData();
|
||||
// TODO
|
||||
WriteData(response);
|
||||
}
|
||||
|
||||
@@ -31,30 +31,13 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
||||
user.FieldInfo.Add(0, new FieldInfo() { });
|
||||
}
|
||||
|
||||
DoQuestSpecificUserOperations(user, req.StageId);
|
||||
|
||||
// TODO: figure out how stageid corresponds to chapter
|
||||
user.FieldInfo[GetChapterForStageId(req.StageId)].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
|
||||
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
|
||||
if (StageCompletionReward.RewardData.ContainsKey(req.StageId))
|
||||
@@ -102,6 +85,55 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
||||
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)
|
||||
{
|
||||
if (6000001 <= stageId && stageId <= 6000003)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using nksrv.Utils;
|
||||
using Swan.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -18,15 +19,35 @@ namespace nksrv.LobbyServer.Msgs.Stage
|
||||
var user = GetUser();
|
||||
|
||||
var response = new ResGetStageData();
|
||||
response.Field = CreateFieldInfo(user, req.Chapter-1);
|
||||
|
||||
|
||||
|
||||
response.Field = CreateFieldInfo(user, req.Chapter - 1);
|
||||
|
||||
response.HasChapterBossEntered = true;
|
||||
|
||||
response.SquadData = "";
|
||||
|
||||
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();
|
||||
|
||||
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()
|
||||
{
|
||||
var req = await ReadData<ReqGetMainQuestData>();
|
||||
var user = GetUser();
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
response.User.CommanderRoomJukebox = 5;
|
||||
response.User.CostumeLv = 1;
|
||||
response.User.Frame = 1;
|
||||
response.User.Icon = 39900;
|
||||
response.User.Icon = user.ProfileIconId;
|
||||
response.User.IconPrism = user.ProfileIconIsPrism;
|
||||
response.User.LobbyJukebox = 2;
|
||||
response.ResetHour = 20;
|
||||
response.Nickname = user.Nickname;
|
||||
|
||||
@@ -15,7 +15,42 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
var req = await ReadData<ReqGetAllFeatureFlags>();
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
response.User.CommanderRoomJukebox = 5;
|
||||
response.User.CostumeLv = 1;
|
||||
response.User.Frame = 1;
|
||||
response.User.Icon = 39900;
|
||||
response.User.Icon = user.ProfileIconId;
|
||||
response.User.IconPrism = user.ProfileIconIsPrism;
|
||||
response.User.LobbyJukebox = 2;
|
||||
response.ResetHour = 20;
|
||||
response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000 };
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using nksrv.Utils;
|
||||
using Swan.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -13,11 +14,21 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
protected override async Task HandleAsync()
|
||||
{
|
||||
var req = await ReadData<ReqGetProfileData>();
|
||||
|
||||
var user = GetUser();
|
||||
var response = new ResGetProfileData();
|
||||
|
||||
Console.WriteLine(req.TargetUsn);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace nksrv.LobbyServer.Msgs.User
|
||||
{
|
||||
var req = await ReadData<ReqGetWallpaper>();
|
||||
var response = new ResGetWallpaper();
|
||||
|
||||
response.WallpaperList.AddRange(GetUser().WallpaperList);
|
||||
|
||||
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 response = new ResSetWallpaper();
|
||||
// todo
|
||||
var user = GetUser();
|
||||
user.WallpaperList = req.WallpaperList.ToArray();
|
||||
|
||||
WriteData(response);
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace nksrv.LobbyServer.Msgs.User.Tutorial
|
||||
var req = await ReadData<ReqSetTutorial>();
|
||||
var user = GetUser();
|
||||
if (!user.ClearedTutorials.Contains(req.LastClearedTid))
|
||||
user.ClearedTutorials.Add(req.LastClearedTid);
|
||||
user.ClearedTutorials.Add(req.LastClearedTid);
|
||||
JsonDb.Save();
|
||||
|
||||
var response = new ResSetTutorial();
|
||||
|
||||
@@ -1518,7 +1518,34 @@ message ResGetJupiterMarketingDetail {
|
||||
|
||||
|
||||
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;*/
|
||||
}
|
||||
|
||||
|
||||
@@ -1572,4 +1599,18 @@ message ReqSetTeam {
|
||||
message ResSetTeam {
|
||||
int32 type = 2;
|
||||
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;
|
||||
Console.ForegroundColor = newFG;
|
||||
Console.WriteLine(msg);
|
||||
if (logEvent.Exception != null)
|
||||
Console.WriteLine(logEvent.Exception);
|
||||
Console.ForegroundColor = oldFG;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,13 @@ namespace nksrv.Utils
|
||||
public int Skill2Lvl = 1;
|
||||
public int Grade = 0;
|
||||
}
|
||||
|
||||
public class MainQuestData
|
||||
{
|
||||
public int TableId = 0;
|
||||
public bool IsReceieved = false;
|
||||
}
|
||||
|
||||
|
||||
public class User
|
||||
{
|
||||
// User info
|
||||
@@ -46,6 +52,8 @@ namespace nksrv.Utils
|
||||
public long RegisterTime;
|
||||
public int LastStageCleared;
|
||||
public string Nickname = "SomePLayer";
|
||||
public int ProfileIconId = 39900;
|
||||
public bool ProfileIconIsPrism = false;
|
||||
|
||||
|
||||
// Game data
|
||||
@@ -60,6 +68,29 @@ namespace nksrv.Utils
|
||||
public List<Character> Characters = [];
|
||||
public NetWholeUserTeamData TeamData = new();
|
||||
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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user