From 9cf99754d62d50219c5dace36b3f785124f1208e Mon Sep 17 00:00:00 2001 From: Mikhail Date: Tue, 16 Jul 2024 20:27:56 -0400 Subject: [PATCH] misc changes --- nksrv/IntlServer/IntlHandler.cs | 3 ++- nksrv/LobbyServer/Msgs/Campaign/ObtainItem.cs | 2 +- .../Msgs/Character/GetSynchrodevice.cs | 15 ++++++++---- nksrv/LobbyServer/Msgs/Character/LevelUp.cs | 11 ++++----- .../Msgs/Character/SetCharacterCostume.cs | 4 ++-- .../Msgs/Gacha/CheckGachaDailyEvent.cs | 2 +- nksrv/LobbyServer/Msgs/Gacha/ExecGacha.cs | 9 +++---- .../Msgs/Inventory/ClearAllEquipment.cs | 3 ++- .../Msgs/Inventory/ClearEquipment.cs | 3 ++- .../Msgs/Inventory/GetInventoryData.cs | 5 ++-- .../Msgs/Inventory/WearEquipment.cs | 2 ++ .../Msgs/Inventory/WearEquipmentList.cs | 4 ++-- .../Mission/GetAchievementRewardedData.cs | 2 +- .../Msgs/Mission/Rewards/GetDailyRewards.cs | 2 +- .../Msgs/Outpost/CheckInfracore.cs | 2 +- nksrv/LobbyServer/Msgs/Outpost/DoWipeout.cs | 24 +++++++++++++++++++ nksrv/LobbyServer/Msgs/Team/GetTeamData.cs | 3 +-- .../Msgs/User/GetProfileDecoration.cs | 2 +- nksrv/LobbyServer/Msgs/User/GetUserTitle.cs | 3 ++- nksrv/Protos/allmsgs.proto | 2 +- nksrv/Protos/outpost.proto | 10 ++++++++ nksrv/StaticInfo/StaticDataParser.cs | 2 ++ 22 files changed, 80 insertions(+), 35 deletions(-) create mode 100644 nksrv/LobbyServer/Msgs/Outpost/DoWipeout.cs diff --git a/nksrv/IntlServer/IntlHandler.cs b/nksrv/IntlServer/IntlHandler.cs index 307c753..ee29e00 100644 --- a/nksrv/IntlServer/IntlHandler.cs +++ b/nksrv/IntlServer/IntlHandler.cs @@ -60,7 +60,8 @@ namespace nksrv.IntlServer public static AccessToken CreateLauncherTokenForUser(User user) { - AccessToken token = new() { ExpirationTime = DateTimeOffset.UtcNow.AddDays(1).ToUnixTimeSeconds() }; + // TODO: implement access token expiration + AccessToken token = new() { ExpirationTime = DateTimeOffset.UtcNow.AddYears(1).ToUnixTimeSeconds() }; token.Token = Rng.RandomString(64); token.UserID = user.ID; JsonDb.Instance.LauncherAccessTokens.Add(token); diff --git a/nksrv/LobbyServer/Msgs/Campaign/ObtainItem.cs b/nksrv/LobbyServer/Msgs/Campaign/ObtainItem.cs index 7706867..0e9d110 100644 --- a/nksrv/LobbyServer/Msgs/Campaign/ObtainItem.cs +++ b/nksrv/LobbyServer/Msgs/Campaign/ObtainItem.cs @@ -25,7 +25,7 @@ namespace nksrv.LobbyServer.Msgs.Campaign // TODO response.Reward = new(); - + await WriteDataAsync(response); diff --git a/nksrv/LobbyServer/Msgs/Character/GetSynchrodevice.cs b/nksrv/LobbyServer/Msgs/Character/GetSynchrodevice.cs index dbfafc4..b6675e0 100644 --- a/nksrv/LobbyServer/Msgs/Character/GetSynchrodevice.cs +++ b/nksrv/LobbyServer/Msgs/Character/GetSynchrodevice.cs @@ -24,18 +24,25 @@ namespace nksrv.LobbyServer.Msgs.Character { response.Synchro.StandardCharacters.Add(new NetUserCharacterData() { Default = new() { Csn = item.Csn, Skill1Lv = item.Skill1Lvl, Skill2Lv = item.Skill2Lvl, CostumeId = item.CostumeId, Lv = item.Level, Grade = item.Grade, Tid = item.Tid, UltiSkillLv = item.UltimateLevel } }); } - + response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 1 }); response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 2 }); response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 3 }); response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 4 }); response.Synchro.Slots.Add(new NetSynchroSlot() { Slot = 5 }); - response.Synchro.SynchroMaxLv = highestLevelCharacters.First().Level; - response.Synchro.SynchroLv = highestLevelCharacters.Last().Level; + if (highestLevelCharacters.Count > 0) + { + response.Synchro.SynchroMaxLv = highestLevelCharacters.First().Level; + response.Synchro.SynchroLv = highestLevelCharacters.Last().Level; + } + else + { + response.Synchro.SynchroLv = 1; + } // TODO: Validate response from real server and pull info from user info - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Character/LevelUp.cs b/nksrv/LobbyServer/Msgs/Character/LevelUp.cs index 6652dfe..d960ba4 100644 --- a/nksrv/LobbyServer/Msgs/Character/LevelUp.cs +++ b/nksrv/LobbyServer/Msgs/Character/LevelUp.cs @@ -23,8 +23,6 @@ namespace nksrv.LobbyServer.Msgs.Character { if (item.Csn == req.Csn) { - // item.Level = req.Level; - int requiredCredit = 0; int requiredBattleData = 0; int requiredCoreDust = 0; @@ -52,8 +50,9 @@ namespace nksrv.LobbyServer.Msgs.Character return; } - response.Character = new() { - CostumeId = item.CostumeId, + response.Character = new() + { + CostumeId = item.CostumeId, Csn = item.Csn, Lv = item.Level, Skill1Lv = item.Skill1Lvl, @@ -81,9 +80,7 @@ namespace nksrv.LobbyServer.Msgs.Character } JsonDb.Save(); - - - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Character/SetCharacterCostume.cs b/nksrv/LobbyServer/Msgs/Character/SetCharacterCostume.cs index c312cf5..ba782fc 100644 --- a/nksrv/LobbyServer/Msgs/Character/SetCharacterCostume.cs +++ b/nksrv/LobbyServer/Msgs/Character/SetCharacterCostume.cs @@ -17,7 +17,7 @@ namespace nksrv.LobbyServer.Msgs.Character foreach (var item in user.Characters) { - if(item.Csn == req.Csn) + if (item.Csn == req.Csn) { item.CostumeId = req.CostumeId; break; @@ -27,7 +27,7 @@ namespace nksrv.LobbyServer.Msgs.Character var response = new ResSetCharacterCostume(); - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Gacha/CheckGachaDailyEvent.cs b/nksrv/LobbyServer/Msgs/Gacha/CheckGachaDailyEvent.cs index 1c80511..3e2916a 100644 --- a/nksrv/LobbyServer/Msgs/Gacha/CheckGachaDailyEvent.cs +++ b/nksrv/LobbyServer/Msgs/Gacha/CheckGachaDailyEvent.cs @@ -20,7 +20,7 @@ namespace nksrv.LobbyServer.Msgs.Gacha response.FreeCount = 0; response.EventData = new NetEventData() { Id = 1 }; - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Gacha/ExecGacha.cs b/nksrv/LobbyServer/Msgs/Gacha/ExecGacha.cs index 73464a1..b005de9 100644 --- a/nksrv/LobbyServer/Msgs/Gacha/ExecGacha.cs +++ b/nksrv/LobbyServer/Msgs/Gacha/ExecGacha.cs @@ -27,14 +27,15 @@ namespace nksrv.LobbyServer.Msgs.Gacha { foreach (var c in StaticDataParser.Instance.GetAllCharacterTids()) { - response.Gacha.Add(new NetGachaEntityData() { Corporation = 0, PieceCount = 1, CurrencyValue = 5, Sn = 130201, Tid = c, Type = 1 }); - - user.Characters.Add(new Utils.Character() { CostumeId = 0, Csn = c, Grade = 0, Level = 1, Skill1Lvl = 1, Skill2Lvl = 1, Tid = c, UltimateLevel = 1 }); + response.Gacha.Add(new NetGachaEntityData() { Corporation = 0, PieceCount = 1, CurrencyValue = 5, Sn = c, Tid = c, Type = 1 }); + + // response.Characters.Add(new NetUserCharacterDefaultData() { CostumeId = 0, Csn = c, Grade = 0, Lv = 1, Skill1Lv = 1, Skill2Lv = 1, Tid = c, UltiSkillLv = 1 }); + // user.Characters.Add(new Utils.Character() { CostumeId = 0, Csn = c, Grade = 0, Level = 1, Skill1Lvl = 1, Skill2Lvl = 1, Tid = c, UltimateLevel = 1 }); // response.Characters.Add(new NetUserCharacterDefaultData() { Lv = 1, Skill1Lv = 1, Grade = 0, Csn = 1, Tid = 130201 }); } - user.GachaTutorialPlayCount++; + // user.GachaTutorialPlayCount++; } JsonDb.Save(); diff --git a/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs index c34d60b..1a5a2e7 100644 --- a/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs +++ b/nksrv/LobbyServer/Msgs/Inventory/ClearAllEquipment.cs @@ -28,9 +28,10 @@ namespace nksrv.LobbyServer.Msgs.Inventory response.Items.Add(NetUtils.ToNet(item)); } } + JsonDb.Save(); - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs index 64331cc..390ee58 100644 --- a/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs +++ b/nksrv/LobbyServer/Msgs/Inventory/ClearEquipment.cs @@ -26,12 +26,13 @@ namespace nksrv.LobbyServer.Msgs.Inventory item.Csn = 0; response.Item = NetUtils.ToNet(item); + break; } } JsonDb.Save(); - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Inventory/GetInventoryData.cs b/nksrv/LobbyServer/Msgs/Inventory/GetInventoryData.cs index fbcaa2c..9f85f39 100644 --- a/nksrv/LobbyServer/Msgs/Inventory/GetInventoryData.cs +++ b/nksrv/LobbyServer/Msgs/Inventory/GetInventoryData.cs @@ -20,10 +20,9 @@ namespace nksrv.LobbyServer.Msgs.Inventory { response.Items.Add(new NetUserItemData() { Count = item.Count, Tid = item.ItemType, Csn = item.Csn, Lv = item.Level, Exp = item.Exp, Corporation = item.Corp, Isn = item.Isn, Position = item.Position }); } + // TODO: HarmonyCubes, RunAwakeningIsnList, UserRedeems - // TODO implement - - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs index 313e85e..c997632 100644 --- a/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs +++ b/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs @@ -24,6 +24,7 @@ namespace nksrv.LobbyServer.Msgs.Inventory // update character id item.Csn = req.Csn; item.Position = NetUtils.GetItemPos(user, item.Isn); + break; } } @@ -33,6 +34,7 @@ namespace nksrv.LobbyServer.Msgs.Inventory if (item.Csn == req.Csn) { response.Items.Add(NetUtils.ToNet(item)); + break; } } JsonDb.Save(); diff --git a/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs b/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs index 08dd133..30753a2 100644 --- a/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs +++ b/nksrv/LobbyServer/Msgs/Inventory/WearEquipmentList.cs @@ -17,9 +17,9 @@ namespace nksrv.LobbyServer.Msgs.Inventory var response = new ResWearEquipmentList(); - foreach (var item in user.Items.ToArray()) + foreach (var item2 in req.IsnList) { - foreach (var item2 in req.IsnList) + foreach (var item in user.Items.ToArray()) { if (item2 == item.Isn) { diff --git a/nksrv/LobbyServer/Msgs/Mission/GetAchievementRewardedData.cs b/nksrv/LobbyServer/Msgs/Mission/GetAchievementRewardedData.cs index eb2195b..732a5eb 100644 --- a/nksrv/LobbyServer/Msgs/Mission/GetAchievementRewardedData.cs +++ b/nksrv/LobbyServer/Msgs/Mission/GetAchievementRewardedData.cs @@ -17,7 +17,7 @@ namespace nksrv.LobbyServer.Msgs.Mission var response = new ResGetAchievementRewardedData(); // TODO - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Mission/Rewards/GetDailyRewards.cs b/nksrv/LobbyServer/Msgs/Mission/Rewards/GetDailyRewards.cs index c84dcd4..99e8dd3 100644 --- a/nksrv/LobbyServer/Msgs/Mission/Rewards/GetDailyRewards.cs +++ b/nksrv/LobbyServer/Msgs/Mission/Rewards/GetDailyRewards.cs @@ -17,7 +17,7 @@ namespace nksrv.LobbyServer.Msgs.Mission.Rewards // TODO: implement var response = new ResGetDailyRewardedData(); - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Outpost/CheckInfracore.cs b/nksrv/LobbyServer/Msgs/Outpost/CheckInfracore.cs index 2878d78..ed802e5 100644 --- a/nksrv/LobbyServer/Msgs/Outpost/CheckInfracore.cs +++ b/nksrv/LobbyServer/Msgs/Outpost/CheckInfracore.cs @@ -17,7 +17,7 @@ namespace nksrv.LobbyServer.Msgs.Outpost // TODO - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/Outpost/DoWipeout.cs b/nksrv/LobbyServer/Msgs/Outpost/DoWipeout.cs new file mode 100644 index 0000000..2d7fe88 --- /dev/null +++ b/nksrv/LobbyServer/Msgs/Outpost/DoWipeout.cs @@ -0,0 +1,24 @@ +using nksrv.Net; +using nksrv.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace nksrv.LobbyServer.Msgs.Outpost +{ + [PacketPath("/outpost/obtainfastbattlereward")] + public class DoWipeout : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var response = new DoWipeOutResponse(); + + // TODO + + await WriteDataAsync(response); + } + } +} diff --git a/nksrv/LobbyServer/Msgs/Team/GetTeamData.cs b/nksrv/LobbyServer/Msgs/Team/GetTeamData.cs index f98098a..b981fc4 100644 --- a/nksrv/LobbyServer/Msgs/Team/GetTeamData.cs +++ b/nksrv/LobbyServer/Msgs/Team/GetTeamData.cs @@ -24,10 +24,9 @@ namespace nksrv.LobbyServer.Msgs.Team foreach (var item in user.UserTeams) { response.TypeTeams.Add(item.Value); - } } - await WriteDataAsync(response); + await WriteDataAsync(response); } } } diff --git a/nksrv/LobbyServer/Msgs/User/GetProfileDecoration.cs b/nksrv/LobbyServer/Msgs/User/GetProfileDecoration.cs index 8edfc79..49ff325 100644 --- a/nksrv/LobbyServer/Msgs/User/GetProfileDecoration.cs +++ b/nksrv/LobbyServer/Msgs/User/GetProfileDecoration.cs @@ -17,7 +17,7 @@ namespace nksrv.LobbyServer.Msgs.User var r = new ResProfileCardDecorationLayout(); r.Layout = new ProfileCardDecorationLayout(); r.Layout.BackgroundId = 101002; - await WriteDataAsync(r); + await WriteDataAsync(r); } } } diff --git a/nksrv/LobbyServer/Msgs/User/GetUserTitle.cs b/nksrv/LobbyServer/Msgs/User/GetUserTitle.cs index 4ff5a4e..5d92c20 100644 --- a/nksrv/LobbyServer/Msgs/User/GetUserTitle.cs +++ b/nksrv/LobbyServer/Msgs/User/GetUserTitle.cs @@ -15,8 +15,9 @@ namespace nksrv.LobbyServer.Msgs.User var req = await ReadData(); var r = new ResGetUserTitleList(); + r.UserTitleList.Add(new NetUserTitle() { UserTitleId = 1 }); - await WriteDataAsync(r); + await WriteDataAsync(r); } } } diff --git a/nksrv/Protos/allmsgs.proto b/nksrv/Protos/allmsgs.proto index fe0e70c..6f9fe77 100644 --- a/nksrv/Protos/allmsgs.proto +++ b/nksrv/Protos/allmsgs.proto @@ -1052,7 +1052,7 @@ message ResGetWeeklyRewardedData { message ReqGetDailyRewardedData {} message ResGetDailyRewardedData { - repeated NetEventWithJoinData eventWithJoinData = 3; + repeated int32 ids = 3; } message NetPassRankData { diff --git a/nksrv/Protos/outpost.proto b/nksrv/Protos/outpost.proto index 367ec7f..0fb214a 100644 --- a/nksrv/Protos/outpost.proto +++ b/nksrv/Protos/outpost.proto @@ -19,4 +19,14 @@ message TacticAcademyClearLessonRequest { message TacticAcademyClearLessonResponse { int32 LessonId = 2; repeated NetUserCurrencyData RemainingCurrency = 4; +} + +// Battle reward / wipeout +message DoWipeOutRequest { + +} +message DoWipeOutResponse { + int32 WipeoutCount = 2; + NetRewardData Reward = 3; + repeated NetUserCurrencyData Currency = 4; } \ No newline at end of file diff --git a/nksrv/StaticInfo/StaticDataParser.cs b/nksrv/StaticInfo/StaticDataParser.cs index 01c6aba..53829ac 100644 --- a/nksrv/StaticInfo/StaticDataParser.cs +++ b/nksrv/StaticInfo/StaticDataParser.cs @@ -56,6 +56,7 @@ namespace nksrv.StaticInfo private JArray characterTable; private JArray tutorialTable; private JArray itemEquipTable; + private Dictionary FieldMapData = []; private Dictionary LevelData = []; private Dictionary TacticAcademyLessons = []; @@ -281,6 +282,7 @@ namespace nksrv.StaticInfo var fullId = int.Parse(groupid.ToString() + id.ToString()); TacticAcademyLessons.Add(id, new TacticAcademyLessonRecord() { CurrencyId = (CurrencyType)currencyId, CurrencyValue = currencyValue, GroupId = groupid, Id = id }); } + } public MainQuestCompletionData? GetMainQuestForStageClearCondition(int stage)