mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 07:24:52 +01:00
update to game version 131.10.2
This commit is contained in:
@@ -22,7 +22,9 @@ namespace EpinelPS.LobbyServer.Archive
|
||||
// Get entries with record_type "EventQuest"
|
||||
var eventQuestRecords = GameData.Instance.archiveRecordManagerTable.Values.Where(record => record.record_type == "EventQuest").ToList();
|
||||
|
||||
response.UnlockedArchiveEventQuestList.AddRange(eventQuestRecords.Select(record => record.id));
|
||||
response.ArchiveEventQuest = new();
|
||||
response.ArchiveEventQuest.UnlockedArchiveRecordManagerEventQuestIdList.AddRange(eventQuestRecords.Select(record => record.id));
|
||||
// TODO more fields
|
||||
|
||||
|
||||
// TODO: allow unlocking
|
||||
|
||||
@@ -9,9 +9,11 @@ namespace EpinelPS.LobbyServer.Intercept
|
||||
{
|
||||
var req = await ReadData<ReqInterceptAnomalousData>();
|
||||
|
||||
// TODO
|
||||
|
||||
var response = new ResInterceptAnomalousData
|
||||
{
|
||||
LastEnteredInterceptAnomalousId = 1,
|
||||
InterceptAnomalousManagerId = 1,
|
||||
RemainingTickets = 5
|
||||
};
|
||||
response.ClearedInterceptAnomalousIds.Add(new[] { 1, 2, 3, 4, 5 });
|
||||
|
||||
@@ -20,8 +20,7 @@ namespace EpinelPS.LobbyServer.Outpost
|
||||
var response = new ResGetOutpostData
|
||||
{
|
||||
OutpostBattleLevel = user.OutpostBattleLevel,
|
||||
JukeboxV2 = new NetUserJukeboxDataV2() { CommandBgm = new() { Type = NetJukeboxBgmType.NetJukeboxBgmTypeJukeboxTableId, JukeboxTableId = user.CommanderMusic.TableId } },
|
||||
SkinGroupId = 1000,
|
||||
JukeboxV2 = new NetUserJukeboxDataV2() { CommandBgm = new() { Type = NetJukeboxBgmType.NetJukeboxBgmTypeJukeboxTableId, JukeboxTableId = user.CommanderMusic.TableId } }
|
||||
};
|
||||
|
||||
// TODO: do not hard code this!
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,17 +1,17 @@
|
||||
{
|
||||
// Asset Urls for game version 130.8.13
|
||||
// Asset Urls for game version 131.10.2
|
||||
// Extracted from POST https://global-lobby.nikke-kr.com/v1/staticdatapack
|
||||
"StaticData": {
|
||||
"Url": "https://cloud.nikke-kr.com/prdenv/130-cbc9c4dbef/staticdata/data/qa-250220-02b/377239/StaticData.pack",
|
||||
"Version": "data/qa-250220-02b/377239",
|
||||
"Salt1": "unAxbbovjkWyPVwkpT9+EqCT4lYyNk2A0p2HY8S8Yvs=",
|
||||
"Salt2": "WRXNjLzPx6cbaR01pg7u0hT1ODIFxki9U1e+Um64jXI="
|
||||
"Url": "https://cloud.nikke-kr.com/prdenv/131-c60e0497e5/staticdata/data/qa-250327-03b/386618/StaticData.pack",
|
||||
"Version": "data/qa-250327-03b/386618",
|
||||
"Salt1": "zgnwS/ZrGQdzgm8SHLKRJ7JPr3zwxoAWQXNGLzZaQLA=",
|
||||
"Salt2": "wWKFI3Cl6LXOJRrkbN++t5N89VUw9B0yfGMiQ3n+OrE="
|
||||
},
|
||||
|
||||
// Extracted from POST https://global-lobby.nikke-kr.com/v1/resourcehosts2
|
||||
"ResourceBaseURL": "https://cloud.nikke-kr.com/prdenv/130-b1a6546083/{Platform}",
|
||||
"ResourceBaseURL": "https://cloud.nikke-kr.com/prdenv/131-b2562bc684/{Platform}",
|
||||
|
||||
// Extracted from route config
|
||||
"GameMinVer": "130.8.12",
|
||||
"GameMaxVer": "130.8.13"
|
||||
"GameMinVer": "131.10.1",
|
||||
"GameMaxVer": "131.10.2"
|
||||
}
|
||||
@@ -6,18 +6,18 @@
|
||||
"version_info": {
|
||||
"game_id": "16601",
|
||||
"branch_id": "1",
|
||||
"version_id": "0.0.0.47",
|
||||
"version_name": "NIKKE.PC_Offcial_GL_130.8.13",
|
||||
"version_id": "0.0.0.48",
|
||||
"version_name": "NIKKE.PC_Offcial_GL_131.10.2",
|
||||
"version_status": 7,
|
||||
"service_status": 0,
|
||||
"build_id": "2979",
|
||||
"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\":\"e87dda54cde9b233d4287c04444adcb5\",\"chunk_size\":112048,\"chunk_uncompress_md5\":\"e87dda54cde9b233d4287c04444adcb5\",\"chunk_uncompress_size\":112048}],\"file_url\":\"/manifestv2/48_5937488248518548732_0.manifest\",\"manifest_md5\":\"e87dda54cde9b233d4287c04444adcb5\",\"manifest_size\":112048}],\"manifest_flag\":13,\"manifest_id\":5937488248518548000,\"manifest_version\":2,\"patch_size\":97363078,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":48,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":350451607,\"repository_type\":\"Game\",\"repository_uncompress_size\":830542676}]",
|
||||
"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\":5937488248518548736}]",
|
||||
"key_file_info": "[{\"crc\":3525221399,\"path\":\"NIKKE\\\\game\\\\nikke.exe\"}]",
|
||||
"build_id": "2988",
|
||||
"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\":\"7d23c335f505f853147d51f1734a4304\",\"chunk_size\":112096,\"chunk_uncompress_md5\":\"7d23c335f505f853147d51f1734a4304\",\"chunk_uncompress_size\":112096}],\"file_url\":\"/manifestv2/48_5937488248518554894_0.manifest\",\"manifest_md5\":\"7d23c335f505f853147d51f1734a4304\",\"manifest_size\":112096}],\"manifest_flag\":13,\"manifest_id\":5937488248518555000,\"manifest_version\":2,\"patch_size\":113181731,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":48,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":352732338,\"repository_type\":\"Game\",\"repository_uncompress_size\":834493367}]",
|
||||
"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\":5937488248518555506}]",
|
||||
"key_file_info": "[{\"crc\":1906233735,\"path\":\"NIKKE\\\\game\\\\nikke.exe\"}]",
|
||||
"install_script": "{\"script_content\":{\"executable\":[]}}",
|
||||
"installer_size": "350451607",
|
||||
"installed_size": "830542676",
|
||||
"publish_time_in_unix": "1739984354",
|
||||
"installer_size": "352732338",
|
||||
"installed_size": "834493367",
|
||||
"publish_time_in_unix": "1743043298",
|
||||
"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.417",
|
||||
"version_name": "nikke_launcher_0.0.6.417",
|
||||
"version_id": "0.0.6.423",
|
||||
"version_name": "nikke_launcher_0.0.6.423",
|
||||
"version_status": 7,
|
||||
"service_status": 0,
|
||||
"build_id": "2931",
|
||||
"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\":\"c694e5ad69053582684dc104265121cb\",\"chunk_size\":51816,\"chunk_uncompress_md5\":\"c694e5ad69053582684dc104265121cb\",\"chunk_uncompress_size\":51816}],\"file_url\":\"/manifestv2/50_5937488248518539245_0.manifest\",\"manifest_md5\":\"c694e5ad69053582684dc104265121cb\",\"manifest_size\":51816}],\"manifest_flag\":13,\"manifest_id\":5937488248518539000,\"manifest_version\":2,\"patch_size\":15659527,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":50,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":149482017,\"repository_type\":\"Game\",\"repository_uncompress_size\":389997017}]",
|
||||
"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\":5937488248518539459}]",
|
||||
"key_file_info": "[{\"crc\":1428240213,\"path\":\"nikke_launcher.exe\"}]",
|
||||
"build_id": "2984",
|
||||
"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\":\"4dbb2ac02c6362bbdbae55f9b9111bd9\",\"chunk_size\":51808,\"chunk_uncompress_md5\":\"4dbb2ac02c6362bbdbae55f9b9111bd9\",\"chunk_uncompress_size\":51808}],\"file_url\":\"/manifestv2/50_5937488248518551348_0.manifest\",\"manifest_md5\":\"4dbb2ac02c6362bbdbae55f9b9111bd9\",\"manifest_size\":51808}],\"manifest_flag\":13,\"manifest_id\":5937488248518552000,\"manifest_version\":2,\"patch_size\":12970500,\"repository_desc\":{\"zh_CN\":\"game repo\"},\"repository_id\":50,\"repository_name\":{\"en_US\":\"Game\",\"zh_CN\":\"Game\"},\"repository_size\":149486766,\"repository_type\":\"Game\",\"repository_uncompress_size\":389999891}]",
|
||||
"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\":5937488248518551350}]",
|
||||
"key_file_info": "[{\"crc\":931011831,\"path\":\"nikke_launcher.exe\"}]",
|
||||
"install_script": "{\"script_content\":{\"executable\":[]}}",
|
||||
"installer_size": "149482017",
|
||||
"installed_size": "389997017",
|
||||
"publish_time_in_unix": "1733365591",
|
||||
"installer_size": "149486766",
|
||||
"installed_size": "389999891",
|
||||
"publish_time_in_unix": "1741833229",
|
||||
"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
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace ServerSelector
|
||||
{
|
||||
public class ServerSwitcher
|
||||
{
|
||||
private static int GameAssemblySodiumIntegrityFuncHint = 0x5F17AF0;
|
||||
public static string PatchGameVersion = "130.8.13";
|
||||
private static int GameAssemblySodiumIntegrityFuncHint = 0x6014080;
|
||||
public static string PatchGameVersion = "131.10.2";
|
||||
|
||||
private static byte[] GameAssemblySodiumIntegrityFuncOrg = [0x40, 0x53, 0x56, 0x57, 0x41];
|
||||
private static byte[] GameAssemblySodiumIntegrityFuncPatch = [0xb0, 0x01, 0xc3, 0x90, 0x90];
|
||||
@@ -60,26 +60,30 @@ namespace ServerSelector
|
||||
hostsFilePath = gamePath + "/../../../windows/system32/drivers/etc/hosts";
|
||||
}
|
||||
|
||||
var CAcert = await File.ReadAllTextAsync(AppDomain.CurrentDomain.BaseDirectory + "myCA.pem");
|
||||
|
||||
string launcherCertList = launcherPath + "/intl_service/cacert.pem";
|
||||
string gameCertList = gamePath + "/nikke_Data/Plugins/x86_64/cacert.pem";
|
||||
|
||||
var certList1 = await File.ReadAllTextAsync(launcherCertList);
|
||||
if (File.Exists(launcherCertList))
|
||||
{
|
||||
var certList1 = await File.ReadAllTextAsync(launcherCertList);
|
||||
|
||||
int goodSslIndex1 = certList1.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex1 == -1)
|
||||
return "Patch missing";
|
||||
int goodSslIndex1 = certList1.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex1 == -1)
|
||||
return "Patch missing";
|
||||
}
|
||||
|
||||
var certList2 = await File.ReadAllTextAsync(gameCertList);
|
||||
|
||||
int goodSslIndex2 = certList2.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex2 == -1)
|
||||
return "Patch missing";
|
||||
if (File.Exists(gameCertList))
|
||||
{
|
||||
var certList2 = await File.ReadAllTextAsync(gameCertList);
|
||||
|
||||
int goodSslIndex2 = certList2.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex2 == -1)
|
||||
return "Patch missing";
|
||||
}
|
||||
|
||||
// TODO: Check sodium lib
|
||||
// TODO: Check if gameassembly was patched
|
||||
// TODO: check hosts file
|
||||
|
||||
return "OK";
|
||||
}
|
||||
@@ -210,17 +214,23 @@ namespace ServerSelector
|
||||
supported = false;
|
||||
}
|
||||
|
||||
var certList1 = await File.ReadAllTextAsync(launcherCertList);
|
||||
if (File.Exists(launcherCertList))
|
||||
{
|
||||
var certList1 = await File.ReadAllTextAsync(launcherCertList);
|
||||
|
||||
int goodSslIndex1 = certList1.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex1 != -1)
|
||||
await File.WriteAllTextAsync(launcherCertList, certList1.Substring(0, goodSslIndex1));
|
||||
int goodSslIndex1 = certList1.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex1 != -1)
|
||||
await File.WriteAllTextAsync(launcherCertList, certList1.Substring(0, goodSslIndex1));
|
||||
}
|
||||
|
||||
var certList2 = await File.ReadAllTextAsync(gameCertList);
|
||||
if (File.Exists(gameCertList))
|
||||
{
|
||||
var certList2 = await File.ReadAllTextAsync(gameCertList);
|
||||
|
||||
int goodSslIndex2 = certList2.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex2 != -1)
|
||||
await File.WriteAllTextAsync(gameCertList, certList2.Substring(0, goodSslIndex2));
|
||||
int goodSslIndex2 = certList2.IndexOf("Good SSL Ca");
|
||||
if (goodSslIndex2 != -1)
|
||||
await File.WriteAllTextAsync(gameCertList, certList2.Substring(0, goodSslIndex2));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -274,7 +284,7 @@ namespace ServerSelector
|
||||
// trust CA
|
||||
if (OperatingSystem.IsWindows())
|
||||
{
|
||||
X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
|
||||
X509Store store = new(StoreName.Root, StoreLocation.LocalMachine);
|
||||
store.Open(OpenFlags.ReadWrite);
|
||||
store.Add(new X509Certificate2(X509Certificate2.CreateFromCertFile(AppDomain.CurrentDomain.BaseDirectory + "myCA.pfx")));
|
||||
store.Close();
|
||||
|
||||
Reference in New Issue
Block a user