From b099cf493e5e7c9dfa0300528261bae272bc8c7e Mon Sep 17 00:00:00 2001 From: Soar Qin Date: Sun, 17 Dec 2023 17:14:46 +0800 Subject: [PATCH] new MOD: UserCloak --- DSP_Mods.sln | 6 ++ README.md | 5 ++ UserCloak/README.md | 40 +++++++++ UserCloak/UserCloak.cs | 148 ++++++++++++++++++++++++++++++++ UserCloak/UserCloak.csproj | 29 +++++++ UserCloak/package/icon.png | Bin 0 -> 7759 bytes UserCloak/package/manifest.json | 9 ++ 7 files changed, 237 insertions(+) create mode 100644 UserCloak/README.md create mode 100644 UserCloak/UserCloak.cs create mode 100644 UserCloak/UserCloak.csproj create mode 100644 UserCloak/package/icon.png create mode 100644 UserCloak/package/manifest.json diff --git a/DSP_Mods.sln b/DSP_Mods.sln index 7379bb3..ce746d6 100644 --- a/DSP_Mods.sln +++ b/DSP_Mods.sln @@ -31,6 +31,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoolOpt", "PoolOpt\PoolOpt. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UXAssist", "UXAssist\UXAssist.csproj", "{9C048229-6A50-4642-BC5E-02CD39D3869A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UserCloak", "UserCloak\UserCloak.csproj", "{096D2E4B-D1CE-424D-9954-C36A23E9E279}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,5 +95,9 @@ Global {9C048229-6A50-4642-BC5E-02CD39D3869A}.Debug|Any CPU.Build.0 = Debug|Any CPU {9C048229-6A50-4642-BC5E-02CD39D3869A}.Release|Any CPU.ActiveCfg = Release|Any CPU {9C048229-6A50-4642-BC5E-02CD39D3869A}.Release|Any CPU.Build.0 = Release|Any CPU + {096D2E4B-D1CE-424D-9954-C36A23E9E279}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {096D2E4B-D1CE-424D-9954-C36A23E9E279}.Debug|Any CPU.Build.0 = Debug|Any CPU + {096D2E4B-D1CE-424D-9954-C36A23E9E279}.Release|Any CPU.ActiveCfg = Release|Any CPU + {096D2E4B-D1CE-424D-9954-C36A23E9E279}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/README.md b/README.md index 235773c..5375461 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,11 @@ Performance optimizations for Matrix Labs Optimize memory pools on loading gamesaves 加载游戏存档时优化内存池的使用 +# [UserCloak](UserCloak) + +Cloak(Fake) user account info +隐匿(伪装)用户账号信息 + # [UXAssist](UXAssist) Some functions and patches for better user experience diff --git a/UserCloak/README.md b/UserCloak/README.md new file mode 100644 index 0000000..2717281 --- /dev/null +++ b/UserCloak/README.md @@ -0,0 +1,40 @@ +# UserCloak + +#### Cloak(Fake) user account info +#### 隐匿(伪装)用户账号信息 + +## Changlog +* 1.0.0 + + Initial release + +## Usage +* Works only for Steam version. +* Config entries: + +`[Cloak]` + - `Mode` [Default Value: false]: + - `0`: Disable cloaking. + - `1`: Fake user account info. + - `2`: Completely hide user account info. This also disables Milkyway completely. + - `FakeUserID` [Default Value: random on first launch]: Fake Steam user ID. Works when `Mode` is set to 1. This number is part Z of SteamID as described [here](https://developer.valvesoftware.com/wiki/SteamID). + - `FakeUsername` [Default Value: anonymous]: Fake Steam user name. Works when `Mode` is set to 1. + +## CREDITS +* [Dyson Sphere Program](https://store.steampowered.com/app/1366540): The great game + +## 更新日志 +* 1.0.0 + + 初始版本 + +## 使用说明 +* 仅支持Steam版 +* 设置选项: + +`[Cloak]` + - `Mode` [默认值: false]: + - `0`: 关闭隐匿 + - `1`: 伪装用户账号信息 + - `2`: 完全隐藏用户账号信息,同时完全禁用银河系 + - `FakeUserID` [默认值: 首次启动时随机生成]: 伪装的Steam用户ID,仅在`Mode`设置为1时生效。这个数字是SteamID中的Z部分,详见[这里](https://developer.valvesoftware.com/wiki/SteamID) + - `FakeUsername` [默认值: anonymous]: 伪装的Steam用户名,仅在`Mode`设置为1时生效 + +## 鸣谢 +* [戴森球计划](https://store.steampowered.com/app/1366540): 伟大的游戏 diff --git a/UserCloak/UserCloak.cs b/UserCloak/UserCloak.cs new file mode 100644 index 0000000..004e267 --- /dev/null +++ b/UserCloak/UserCloak.cs @@ -0,0 +1,148 @@ +using System; +using BepInEx; +using BepInEx.Configuration; +using HarmonyLib; +using Steamworks; +using Random = UnityEngine.Random; + +namespace UserCloak; + +[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)] +public class UserCloak: BaseUnityPlugin +{ + private static Harmony _patch; + private static ConfigEntry _mode; + private static ConfigEntry _fakeUserId; + private static ConfigEntry _fakeUsername; + + private void Awake() + { + _mode = Config.Bind("General", "Mode", 0, "Cloak Mode:\n" + + " 0: Disable cloaking.\n" + + " 1: Fake user account info.\n" + + " 2: Completely hide user account info. This also disables Milkyway completely.\n"); + _fakeUserId = Config.Bind("General", "FakeUserId", 0, "Fake Steam user ID"); + _fakeUsername = Config.Bind("General", "FakeUsername", "anonymous", "Fake Steam username"); + + if (_mode.Value == 1 && _fakeUserId.Value == 0) + { + _fakeUserId.Value = Random.Range(10000, 2000000000); + } + + if (_mode.Value != 0) + { + _patch ??= Harmony.CreateAndPatchAll(typeof(UserCloak)); + } + } + + private void OnDestroy() + { + _patch?.UnpatchSelf(); + _patch = null; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(SteamManager), nameof(SteamManager.Awake))] + private static bool SteamManager_Awake_Prefix(SteamManager __instance) + { + if (_mode.Value == 0) + return true; + if (SteamManager.s_instance != null) + { + UnityEngine.Object.Destroy(__instance.gameObject); + return false; + } + SteamManager.s_instance = __instance; + if (SteamManager.s_EverInitialized) + { + throw new Exception("Tried to Initialize the SteamAPI twice in one session!"); + } + __instance.m_bInitialized = true; + return false; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(STEAMX), nameof(STEAMX.Awake))] + private static bool STEAMX_Awake_Prefix(STEAMX __instance) + { + switch (_mode.Value) + { + case 1: + STEAMX.instance = __instance; + STEAMX.userId = new CSteamID(0x0110000100000001UL | (uint)_fakeUserId.Value); + return false; + case 2: + return false; + } + return true; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(SteamManager), nameof(SteamManager.OnEnable))] + private static bool SteamManager_OnEnable_Prefix(SteamManager __instance) + { + if (_mode.Value == 0) + return true; + if (SteamManager.s_instance == null) + { + SteamManager.s_instance = __instance; + } + return false; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(SteamManager), nameof(SteamManager.Update))] + private static bool SteamManager_Update_Prefix() + { + return _mode.Value == 0; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(PARTNER), nameof(PARTNER.STEAMWORKS), MethodType.Getter)] + private static bool PARTNER_STEAMWORKS_Prefix(ref bool __result) + { + if (_mode.Value != 2) + return true; + __result = false; + return false; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(PARTNER), nameof(PARTNER.UserLogin))] + private static bool PARTNER_UserLogin_Prefix() + { + switch (_mode.Value) + { + case 1: + AccountData.me.platform = ESalePlatform.Steam; + AccountData.me.userId = 0x0110000100000001UL | (uint)_fakeUserId.Value; + AccountData.me.detail.userName = _fakeUsername.Value; + PARTNER.logined = true; + return false; + case 2: + return false; + } + return true; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(SteamLeaderboardManager_ClusterGeneration), nameof(SteamLeaderboardManager_ClusterGeneration.Start))] + [HarmonyPatch(typeof(SteamLeaderboardManager_ClusterGeneration), nameof(SteamLeaderboardManager_ClusterGeneration.Update))] + [HarmonyPatch(typeof(SteamLeaderboardManager_ClusterGeneration), nameof(SteamLeaderboardManager_ClusterGeneration.UploadScore))] + [HarmonyPatch(typeof(SteamLeaderboardManager_PowerConsumption), nameof(SteamLeaderboardManager_PowerConsumption.Start))] + [HarmonyPatch(typeof(SteamLeaderboardManager_PowerConsumption), nameof(SteamLeaderboardManager_PowerConsumption.Update))] + [HarmonyPatch(typeof(SteamLeaderboardManager_PowerConsumption), nameof(SteamLeaderboardManager_PowerConsumption.UploadScore))] + [HarmonyPatch(typeof(SteamLeaderboardManager_SolarSail), nameof(SteamLeaderboardManager_SolarSail.Start))] + [HarmonyPatch(typeof(SteamLeaderboardManager_SolarSail), nameof(SteamLeaderboardManager_SolarSail.Update))] + [HarmonyPatch(typeof(SteamLeaderboardManager_SolarSail), nameof(SteamLeaderboardManager_SolarSail.UploadScore))] + [HarmonyPatch(typeof(SteamLeaderboardManager_UniverseMatrix), nameof(SteamLeaderboardManager_UniverseMatrix.Start))] + [HarmonyPatch(typeof(SteamLeaderboardManager_UniverseMatrix), nameof(SteamLeaderboardManager_UniverseMatrix.Update))] + [HarmonyPatch(typeof(SteamLeaderboardManager_UniverseMatrix), nameof(SteamLeaderboardManager_UniverseMatrix.UploadScore))] + [HarmonyPatch(typeof(SteamAchievementManager), nameof(SteamAchievementManager.Start))] + [HarmonyPatch(typeof(SteamAchievementManager), nameof(SteamAchievementManager.Update))] + [HarmonyPatch(typeof(SteamAchievementManager), nameof(SteamAchievementManager.UnlockAchievement))] + private static bool SteamLeaderBoard_functions_Prefix() + { + return _mode.Value == 0; + } +} diff --git a/UserCloak/UserCloak.csproj b/UserCloak/UserCloak.csproj new file mode 100644 index 0000000..6b4bb4b --- /dev/null +++ b/UserCloak/UserCloak.csproj @@ -0,0 +1,29 @@ + + + + net472 + org.soardev.usercloak + DSP MOD - UserCloak + 1.0.0 + true + latest + UserCloak + UserCloak + https://nuget.bepinex.dev/v3/index.json + + + + + + + + + + + + + + + + + diff --git a/UserCloak/package/icon.png b/UserCloak/package/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e8e842c56e7b5ec613607077333d56c93f65cf GIT binary patch literal 7759 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 literal 0 HcmV?d00001 diff --git a/UserCloak/package/manifest.json b/UserCloak/package/manifest.json new file mode 100644 index 0000000..12fbfa3 --- /dev/null +++ b/UserCloak/package/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "UserCloak", + "version_number": "1.0.0", + "website_url": "https://github.com/soarqin/DSP_Mods/tree/master/UserCloak", + "description": "Cloak(Fake) user account info / 隐匿(伪装)用户账号信息", + "dependencies": [ + "xiaoye97-BepInEx-5.4.17" + ] +}