diff --git a/EpinelPS/Controllers/LauncherController.cs b/EpinelPS/Controllers/LauncherController.cs index 068eeae..23993ee 100644 --- a/EpinelPS/Controllers/LauncherController.cs +++ b/EpinelPS/Controllers/LauncherController.cs @@ -89,9 +89,15 @@ namespace EpinelPS.Controllers [HttpPost] [Route("fleet.repo.game.RepoSVC/GetVersion")] - public string LauncherGetVersion() + public string LauncherGetVersion([FromBody] LauncherVersionRequest? body) { + Console.WriteLine("Requesting gameId: " + body.game_id); return System.IO.File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "gameversion.json")); } + + public class LauncherVersionRequest + { + public int game_id {get;set;} + } } } diff --git a/EpinelPS/LobbyServer/Msgs/Shop/GetProductOffers.cs b/EpinelPS/LobbyServer/Msgs/Shop/GetProductOffers.cs new file mode 100644 index 0000000..7d98ea6 --- /dev/null +++ b/EpinelPS/LobbyServer/Msgs/Shop/GetProductOffers.cs @@ -0,0 +1,17 @@ +using EpinelPS.Utils; + +namespace EpinelPS.LobbyServer.Msgs.Shop +{ + [PacketPath("/productoffer/list")] + public class GetProductOffers : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + // TODO use proper type: ResListSeenProductOffer + var x = await ReadData(); + + var response = new ResGetJupiterProductList(); + await WriteDataAsync(response); + } + } +} diff --git a/EpinelPS/gameconfig.json b/EpinelPS/gameconfig.json index a0f6563..8ebba5b 100644 --- a/EpinelPS/gameconfig.json +++ b/EpinelPS/gameconfig.json @@ -2,16 +2,16 @@ // Asset Urls for game version 125.8.15 // Extracted from POST https://global-lobby.nikke-kr.com/v1/staticdatapack "StaticData": { - "Url": "https://cloud.nikke-kr.com/prdenv/125-c197de50e6/staticdata/data/qa-241017-09b-p1/339796/StaticData.pack", - "Version": "data/qa-241017-09b-p1/339796", - "Salt1": "rwwJcI8ooMnm5MHimmoC7b63uMkIVCL+WzIOgWw7Y2o=", - "Salt2": "Zx+C3jgcVImM4m5JawE/i8cq8uPE2z9v1DjT6oiQBIY=" + "Url": "https://cloud.nikke-kr.com/prdenv/126-c2e562bd11/staticdata/data/qa-241031-10b/345904/StaticData.pack", + "Version": "data/qa-241031-10b/345904", + "Salt1": "Vsm2cdvBtmQJtLny5Lk55XbXhTfwp/IMSbrzROfjNxQ=", + "Salt2": "swx3L8RVipiqwQ8Cq1y7n6BqFp49d9M6yh/dFuhKef0=" }, - + // Extracted from POST https://global-lobby.nikke-kr.com/v1/resourcehosts2 - "ResourceBaseURL": "https://cloud.nikke-kr.com/prdenv/125-b23c7d22ef/{Platform}", + "ResourceBaseURL": "https://cloud.nikke-kr.com/prdenv/126-b1838ddd88/{Platform}", // Extracted from route config - "GameMinVer": "125.8.14", - "GameMaxVer": "125.8.15" + "GameMinVer": "126.10.3", + "GameMaxVer": "126.10.4" } \ No newline at end of file diff --git a/EpinelPS/gameversion.json b/EpinelPS/gameversion.json index a2feba4..60b13e3 100644 --- a/EpinelPS/gameversion.json +++ b/EpinelPS/gameversion.json @@ -6,18 +6,18 @@ "version_info": { "game_id": "16601", "branch_id": "1", - "version_id": "0.0.0.40", - "version_name": "NIKKE.PC_Official_GL_125.8.15", + "version_id": "0.0.0.41", + "version_name": "NIKKE.PC_Official_GL_126.10.4", "version_status": 7, "service_status": 0, - "build_id": "2866", - "cos_repo_files": "[{\"cdn_root\":\"https://cloud.nikke-kr.com/PC/prod/rid.48-r.02587\",\"chunk_encrypt_flag\":0,\"manifest_files\":[{\"chunks\":[{\"chunk_index\":0,\"chunk_md5\":\"130cd2aea7d80e3f9ed36e5cca80c700\",\"chunk_size\":111144,\"chunk_uncompress_md5\":\"130cd2aea7d80e3f9ed36e5cca80c700\",\"chunk_uncompress_size\":111144}],\"file_url\":\"/manifestv2/48_5937488248518515297_0.manifest\",\"manifest_md5\":\"130cd2aea7d80e3f9ed36e5cca80c700\",\"manifest_size\":111144}],\"manifest_flag\":13,\"manifest_id\":5937488248518516000,\"manifest_version\":2,\"patch_size\":111256683,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":48,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":342132216,\"repository_type\":\"Game\",\"repository_uncompress_size\":808878590}]", - "cos_access_info": "[{\"repository_id\":48,\"repository_type\":\"Game\",\"repository_name\":\"Game\",\"repository_name_en\":\"Game\",\"description\":\"game repo\",\"cos_list\":[{\"public_cdn_domain\":\"https://cloud.nikke-kr.com\"}],\"encrytion_key\":\"158f36bf7e611c945320c399294c4a6d\",\"encrytion_algorithm_id\":6,\"manifest_encrytion_key\":\"0f448b096bb4dc5b339debdce77c4572\",\"manifest_encrytion_algorithm_id\":6,\"game_id\":16601,\"manifest_id\":5937488248518516966}]", - "key_file_info": "[{\"crc\":969016164,\"path\":\"NIKKE\\\\game\\\\nikke.exe\"}]", + "build_id": "2901", + "cos_repo_files": "[{\"cdn_root\":\"https://cloud.nikke-kr.com/PC/prod/rid.48-r.02587\",\"chunk_encrypt_flag\":0,\"manifest_files\":[{\"chunks\":[{\"chunk_index\":0,\"chunk_md5\":\"dc6c0c5e50ece585750e1ac3e6e11786\",\"chunk_size\":111648,\"chunk_uncompress_md5\":\"dc6c0c5e50ece585750e1ac3e6e11786\",\"chunk_uncompress_size\":111648}],\"file_url\":\"/manifestv2/48_5937488248518528634_0.manifest\",\"manifest_md5\":\"dc6c0c5e50ece585750e1ac3e6e11786\",\"manifest_size\":111648}],\"manifest_flag\":13,\"manifest_id\":5937488248518529000,\"manifest_version\":2,\"patch_size\":93786550,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":48,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":346004059,\"repository_type\":\"Game\",\"repository_uncompress_size\":819132426}]", + "cos_access_info": "[{\"repository_id\":48,\"repository_type\":\"Game\",\"repository_name\":\"Game\",\"repository_name_en\":\"Game\",\"description\":\"game repo\",\"cos_list\":[{\"public_cdn_domain\":\"https://cloud.nikke-kr.com\"}],\"encrytion_key\":\"158f36bf7e611c945320c399294c4a6d\",\"encrytion_algorithm_id\":6,\"manifest_encrytion_key\":\"0f448b096bb4dc5b339debdce77c4572\",\"manifest_encrytion_algorithm_id\":6,\"game_id\":16601,\"manifest_id\":5937488248518529105}]", + "key_file_info": "[{\"crc\":3446478198,\"path\":\"NIKKE\\\\game\\\\nikke.exe\"}]", "install_script": "{\"script_content\":{\"executable\":[]}}", - "installer_size": "342132216", - "installed_size": "808878590", - "publish_time_in_unix": "1726715953", + "installer_size": "346004059", + "installed_size": "819132426", + "publish_time_in_unix": "1730304271", "is_first_version_in_branch": "1", "version_description": "[{\"lang_code\":\"en\",\"text\":\"\"},{\"lang_code\":\"ja\",\"text\":\"\"},{\"lang_code\":\"ko\",\"text\":\"\"}]", "update_type": 0 @@ -26,18 +26,18 @@ "launcher_version_info": { "game_id": "16701", "branch_id": "1", - "version_id": "0.0.6.379", - "version_name": "nikke_launcher_0.0.6.379", + "version_id": "0.0.6.383", + "version_name": "nikke_launcher_0.0.6.383", "version_status": 7, "service_status": 0, - "build_id": "2813", - "cos_repo_files": "[{\"cdn_root\":\"https://cloud.nikke-kr.com/PC/prod/rid.50-r.971a3\",\"chunk_encrypt_flag\":0,\"manifest_files\":[{\"chunks\":[{\"chunk_index\":0,\"chunk_md5\":\"c470c01b495b3f24f671ecbb00504c2b\",\"chunk_size\":51800,\"chunk_uncompress_md5\":\"c470c01b495b3f24f671ecbb00504c2b\",\"chunk_uncompress_size\":51800}],\"file_url\":\"/manifestv2/50_5937488248518493869_0.manifest\",\"manifest_md5\":\"c470c01b495b3f24f671ecbb00504c2b\",\"manifest_size\":51800}],\"manifest_flag\":13,\"manifest_id\":5937488248518494000,\"manifest_version\":2,\"patch_size\":16110968,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":50,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":150773851,\"repository_type\":\"Game\",\"repository_uncompress_size\":391274755}]", - "cos_access_info": "[{\"repository_id\":50,\"repository_type\":\"Game\",\"repository_name\":\"Game\",\"repository_name_en\":\"Game\",\"description\":\"game repo\",\"cos_list\":[{\"public_cdn_domain\":\"https://cloud.nikke-kr.com\"}],\"encrytion_key\":\"ab00cbd5b9e6f7c4759c12d489b34b61\",\"encrytion_algorithm_id\":10,\"manifest_encrytion_key\":\"f8c65f692a6a021a688507a6e441786a\",\"manifest_encrytion_algorithm_id\":6,\"game_id\":16701,\"manifest_id\":5937488248518494306}]", - "key_file_info": "[{\"crc\":2930257430,\"path\":\"nikke_launcher.exe\"}]", + "build_id": "2904", + "cos_repo_files": "[{\"cdn_root\":\"https://cloud.nikke-kr.com/PC/prod/rid.50-r.971a3\",\"chunk_encrypt_flag\":0,\"manifest_files\":[{\"chunks\":[{\"chunk_index\":0,\"chunk_md5\":\"f0d0b21b02a62be350b7a32137623df0\",\"chunk_size\":51712,\"chunk_uncompress_md5\":\"f0d0b21b02a62be350b7a32137623df0\",\"chunk_uncompress_size\":51712}],\"file_url\":\"/manifestv2/50_5937488248518529015_0.manifest\",\"manifest_md5\":\"f0d0b21b02a62be350b7a32137623df0\",\"manifest_size\":51712}],\"manifest_flag\":13,\"manifest_id\":5937488248518529000,\"manifest_version\":2,\"patch_size\":33424650,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":50,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":147961138,\"repository_type\":\"Game\",\"repository_uncompress_size\":388493649}]", + "cos_access_info": "[{\"repository_id\":50,\"repository_type\":\"Game\",\"repository_name\":\"Game\",\"repository_name_en\":\"Game\",\"description\":\"game repo\",\"cos_list\":[{\"public_cdn_domain\":\"https://cloud.nikke-kr.com\"}],\"encrytion_key\":\"ab00cbd5b9e6f7c4759c12d489b34b61\",\"encrytion_algorithm_id\":10,\"manifest_encrytion_key\":\"f8c65f692a6a021a688507a6e441786a\",\"manifest_encrytion_algorithm_id\":6,\"game_id\":16701,\"manifest_id\":5937488248518529095}]", + "key_file_info": "[{\"crc\":2832332300,\"path\":\"nikke_launcher.exe\"}]", "install_script": "{\"script_content\":{\"executable\":[]}}", - "installer_size": "150773851", - "installed_size": "391274755", - "publish_time_in_unix": "1720020044", + "installer_size": "147961138", + "installed_size": "388493649", + "publish_time_in_unix": "1730302401", "is_first_version_in_branch": "1", "version_description": "[{\"lang_code\":\"en\",\"text\":\"\"},{\"lang_code\":\"ja\",\"text\":\"\"},{\"lang_code\":\"id\",\"text\":\"\"},{\"lang_code\":\"th\",\"text\":\"\"},{\"lang_code\":\"pt\",\"text\":\"\"},{\"lang_code\":\"es\",\"text\":\"\"},{\"lang_code\":\"de\",\"text\":\"\"},{\"lang_code\":\"fr\",\"text\":\"\"},{\"lang_code\":\"zh-Hans\",\"text\":\"\"},{\"lang_code\":\"zh-Hant\",\"text\":\"\"}]", "update_type": 2 diff --git a/ServerSelector/ServerSwitcher.cs b/ServerSelector/ServerSwitcher.cs index a741082..ec7052b 100644 --- a/ServerSelector/ServerSwitcher.cs +++ b/ServerSelector/ServerSwitcher.cs @@ -7,7 +7,7 @@ namespace ServerSelector { public class ServerSwitcher { - private static int GameAssemblySodiumIntegrityFuncHint = 0x57295B0; + private static int GameAssemblySodiumIntegrityFuncHint = 0x5B74E00; private static byte[] GameAssemblySodiumIntegrityFuncOrg = [0x40, 0x53, 0x56, 0x57, 0x41]; private static byte[] GameAssemblySodiumIntegrityFuncPatch = [0xb0, 0x01, 0xc3, 0x90, 0x90]; private const string HostsStartMarker = "# begin ServerSelector entries";