From 18102b99224d31d4c59bb2100cf0f8a4a73a173e Mon Sep 17 00:00:00 2001 From: Mikhail Date: Fri, 5 Jul 2024 09:04:56 -0400 Subject: [PATCH] Outpost is now working --- DataFixupUtil/Program.cs | 2 +- ProtobufViewUtil/Program.cs | 7 ++---- .../Msgs/Inventory/WearEquipment.cs | 24 +++++++++++++++++++ .../Msgs/Outpost/GetOutpostData.cs | 16 ++++++++++--- .../LobbyServer/Msgs/User/EnterLobbyServer.cs | 2 +- .../Msgs/Wallet/WalletRefreshCharge.cs | 18 +++++++++++++- nksrv/Program.cs | 3 --- nksrv/Protos/allmsgs.proto | 8 ++++++- nksrv/StaticInfo/StaticDataParser.cs | 1 - 9 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs diff --git a/DataFixupUtil/Program.cs b/DataFixupUtil/Program.cs index 8881d7e..64b3803 100644 --- a/DataFixupUtil/Program.cs +++ b/DataFixupUtil/Program.cs @@ -36,7 +36,7 @@ namespace DataFixupUtil var startPos = (int)ms.Position; var contents = FileContents.Skip(startPos).ToArray(); - if (contents.Length != 0 && contents[0] == 31) + if (contents.Length > 2 && contents[0] == 0x1f && contents[1] == 0x8b) { // gzip compression is used using Stream csStream = new GZipStream(new MemoryStream(contents), CompressionMode.Decompress); diff --git a/ProtobufViewUtil/Program.cs b/ProtobufViewUtil/Program.cs index 69e8870..28692fe 100644 --- a/ProtobufViewUtil/Program.cs +++ b/ProtobufViewUtil/Program.cs @@ -10,12 +10,9 @@ namespace ProtobufViewUtil { Console.WriteLine("Hello, World!"); - StaticDataPackResponse s = new StaticDataPackResponse(); - var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\staticdatanew"); + ResGetOutpostData s = new ResGetOutpostData(); + var inn = File.ReadAllBytes(@"C:\Users\Misha\Downloads\getoutpostdatach2done"); s.MergeFrom(inn); - Console.WriteLine("salt1: " + Convert.ToBase64String(s.Salt1.ToArray())); - Console.WriteLine("salt2: " + Convert.ToBase64String(s.Salt2.ToArray())); - Console.WriteLine("sha: " + Convert.ToBase64String(s.Sha256Sum.ToArray())); Console.WriteLine(s.ToString()); var outt = s.ToByteArray(); diff --git a/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs b/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs new file mode 100644 index 0000000..28108ae --- /dev/null +++ b/nksrv/LobbyServer/Msgs/Inventory/WearEquipment.cs @@ -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.Inventory +{ + [PacketPath("/inventory/wearequipment")] + public class WearEquipment : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var user = GetUser(); + + var response = new ResWearEquipment(); + // TODO implement + + WriteData(response); + } + } +} diff --git a/nksrv/LobbyServer/Msgs/Outpost/GetOutpostData.cs b/nksrv/LobbyServer/Msgs/Outpost/GetOutpostData.cs index b94160d..fd694e8 100644 --- a/nksrv/LobbyServer/Msgs/Outpost/GetOutpostData.cs +++ b/nksrv/LobbyServer/Msgs/Outpost/GetOutpostData.cs @@ -22,14 +22,24 @@ namespace nksrv.LobbyServer.Msgs.Outpost var response = new ResGetOutpostData { OutpostBattleLevel = new NetOutpostBattleLevel() { Level = 1 }, - CommanderBgm = new NetUserJukeboxDataV2() { CommandBgm = new() { Type = NetJukeboxBgmType.JukeboxTableId, JukeboxTableId = 3012 } }, - BattleTime = 864000000000, Jukebox = new(), MaxBattleTime = 864000000000 + CommanderBgm = new NetUserJukeboxDataV2() { CommandBgm = new() { Type = NetJukeboxBgmType.JukeboxTableId, JukeboxTableId = 5 } }, + BattleTime = 864000000000, Jukebox = new(), MaxBattleTime = 864000000000, SkinGroupId = 1000 }; response.OutpostBattleLevel = user.OutpostBattleLevel; response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000, BattleTime = battleTimeMs }; + response.Data.Add(new NetUserOutpostData() { SlotId = 1, BuildingId = 22401, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 4, BuildingId = 22701, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 5, BuildingId = 22801, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 6, BuildingId = 22901, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 7, BuildingId = 23001, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 3, BuildingId = 23101, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 2, BuildingId = 23201, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 9, BuildingId = 23301, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 8, BuildingId = 23401, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 10, BuildingId = 23501, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); + response.Data.Add(new NetUserOutpostData() { SlotId = 38, BuildingId = 33601, IsDone = true, StartAt = 638549982076760660, CompleteAt = 638549982076760660 }); - // TODO WriteData(response); } diff --git a/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs b/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs index deab9e6..35bbabb 100644 --- a/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs +++ b/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs @@ -27,7 +27,7 @@ namespace nksrv.LobbyServer.Msgs.User response.SynchroLv = 1; response.OutpostBattleLevel = user.OutpostBattleLevel; response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000, BattleTime = battleTimeMs }; - response.CommanderRoomJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 2, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom }; + response.CommanderRoomJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 5, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom }; response.LobbyJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 2, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.Lobby }; // Add default slot data diff --git a/nksrv/LobbyServer/Msgs/Wallet/WalletRefreshCharge.cs b/nksrv/LobbyServer/Msgs/Wallet/WalletRefreshCharge.cs index 336066a..5acd351 100644 --- a/nksrv/LobbyServer/Msgs/Wallet/WalletRefreshCharge.cs +++ b/nksrv/LobbyServer/Msgs/Wallet/WalletRefreshCharge.cs @@ -8,9 +8,25 @@ namespace nksrv.LobbyServer.Msgs.Wallet protected override async Task HandleAsync() { var req = await ReadData(); - + var user = GetUser(); var response = new ResRefreshChargeCurrencyData(); + response.FreeCash = new(); + response.ChargeCash = new(); + + foreach (var item in user.Currency) + { + if (item.Key == CurrencyType.FreeCash) + { + response.FreeCash.Type = (int)item.Key; + response.FreeCash.Value = item.Value; + } + else if (item.Key == CurrencyType.ChargeCash) + { + response.ChargeCash.Type = (int)item.Key; + response.ChargeCash.Value = item.Value; + } + } WriteData(response); } } diff --git a/nksrv/Program.cs b/nksrv/Program.cs index 1f31044..b3457ef 100644 --- a/nksrv/Program.cs +++ b/nksrv/Program.cs @@ -156,7 +156,6 @@ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } var responseBytes = response.ToArray(); - File.WriteAllBytes("batch-response", responseBytes); ctx.Response.ContentType = "multipart/mixed; boundary=\"f5d5cf4d-5627-422f-b3c6-532f1a0cbc0a\""; ctx.Response.OutputStream.Write(responseBytes); } @@ -373,8 +372,6 @@ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } else { - // not empty body, TODO - File.WriteAllBytes("notemptybody", bytes); body = bytes.Skip(currentByte).ToArray(); } diff --git a/nksrv/Protos/allmsgs.proto b/nksrv/Protos/allmsgs.proto index 15129b8..b3fb94b 100644 --- a/nksrv/Protos/allmsgs.proto +++ b/nksrv/Protos/allmsgs.proto @@ -1866,4 +1866,10 @@ message NetInAppShopReceivableProductData { message ReqGetInAppShopReceivableProductList {} message ResGetInAppShopReceivableProductList { repeated NetInAppShopReceivableProductData Data = 1; -} \ No newline at end of file +} + +message ReqWearEquipment { + int64 Isn = 2; + int64 Csn = 3; +} +message ResWearEquipment {} \ No newline at end of file diff --git a/nksrv/StaticInfo/StaticDataParser.cs b/nksrv/StaticInfo/StaticDataParser.cs index 4f8771b..b289d85 100644 --- a/nksrv/StaticInfo/StaticDataParser.cs +++ b/nksrv/StaticInfo/StaticDataParser.cs @@ -114,7 +114,6 @@ namespace nksrv.StaticInfo ZipStream = new MemoryStream(); AesCtrTransform(decryptionKey2, iv2, dataMs, ZipStream); - File.WriteAllBytes("decryptednew.zip", ZipStream.ToArray()); ZipStream.Position = 0; MainZip = new ZipFile(ZipStream, false);