获得的影响力点数太少了?不想使用作弊手段破坏游戏平衡?这有个解决办法。 前言

以下行为会被视为作弊,你的存档可能会被禁止向排行榜提交分数。不过这不会影响你解锁成就,所以如果你也想通过正当方式解锁成就,请务必谨慎。 我会用简单的分步方式,向你展示如何“实时”修改游戏元素,而无需更改任何游戏文件。我们将通过这种方式提高从任何影响力点(IP)获得的收益,只需将所有收益翻倍即可。这样游戏的肝度会降低,但仍然需要你去获取影响力点。 如果你只想单次修改某个内容,可以跳过代码和钩子部分,因为它们对你来说不太相关。 未来我可能会制作一个常规的影响力点模组,但目前只能先这样了。关于操作流程 以下内容适用于大多数(如果不是全部)Unity引擎游戏,只需确保在尝试其他游戏时选择正确的BepInEx/MelonLoader和UnityExplorer版本即可。 准备游戏 开始前: 下载最新的BepInEx 5版本,例如BepInEx_win_x64_5.4.23.4 将文件内容解压/复制到游戏文件夹,例如C: SteamLibrary steamapps common News Tower 启动游戏一次。 加载/继续游戏,并新建一个存档 - 以防万一。 下载最新的UnityExplorer BIE 5.X - Mono版本。如果不确定选择哪个,可以使用此直接链接。 将插件文件夹解压/复制到...News Tower BepInEx plugins 如果最终游戏文件夹是这样的,说明你已正确完成所有操作:

䝣ç

在开始游戏之前,我会向你解释其中的逻辑,这样你就不必运行那些“从网上某个人那里得到”的随机代码了。放心,一切都非常简单。 核心思路是:游戏将IP数量存储在一个名为【TowerStats】的对象中,每当你获得IP时,游戏会直接告诉【TowerStats】对象:“嘿,添加这2点影响力点数”。它通过调用一个名为【AddInfluence】的函数来实现,并传入要添加的IP数量,例如【AddInfluence(2)】。 我们将拦截这个函数调用,在数值实际传递给【AddInfluence】之前,将其乘以2。以下是代码,所有以“//”开头的行都是注释和解释,可以安全忽略并删除——程序不会理会这些内容。//“前缀”意味着我们会在原始方法运行前执行某些操作 //TowerStats __instance是持有我们感兴趣数值的游戏对象 //ref float __0是应添加的影响力点数数量。“__0”只是该变量的(非常糟糕的)名称,在正常代码中它被称为“amount” //注意“ref”标记;它告诉程序给我们该值的实际“位置”(=引用),而不是简单告知我们它的数值。这很重要,因为我们不仅想读取,还想实际更改它 //__1在此处无关紧要 static void Prefix(TowerStats __instance, ref float __0, bool __1) { //StringBuilder和sb.Append只是格式化内容,以便我们在日志中看到一些信息 try { StringBuilder sb = new StringBuilder(); sb.Append("影响力倍增。之前:").Append(__0.ToString());; // 这是“加成”的实际位置,__0(=我们获得的影响力点数)会乘以2。 // 之所以这样写是因为浮点运算的问题,但归根结底就是:数量=数量*2 __0 = (float)((int)__0 * 2); // 你可以改成任何你想要的数值,比如更高的倍数,或者直接增加固定值: // __0 = (float)((int)__0 * 5); // __0 = (float)((int)__0 + 2); sb.Append(" 之后:").AppendLine(__0.ToString()); UnityExplorer.ExplorerCore.Log(sb.ToString()); } catch (System.Exception ex) { UnityExplorer.ExplorerCore日志警告($"乘数模组中出现异常;无效的塔楼属性::添加影响力(浮点型数值,布尔型静默):n{ex}"); } } 以下是无冗余代码: 静态无效前缀(塔楼属性 __实例,引用浮点型 __0,布尔型 __1) { 尝试 { 字符串构建器 字符串构建 = 新建 字符串构建器(); 字符串构建.添加("正在乘以影响力。之前:").添加(__0.转换为字符串());; __0 = (浮点型)((整数型)__0 * 2); 字符串构建.添加(" 之后:").添加行(__0.转换为字符串()); Unity资源管理器.资源管理器核心.日志(字符串构建.转换为字符串()); } 捕获(系统.异常 ex) { Unity资源管理器.资源管理器核心 .日志警告($"乘数模组中出现异常;无效的塔楼属性::添加影响力(浮点型数值,布尔型静默):n{ex}"); } } 应用钩子

钩子本质上只是另一段“附加”到游戏中已有内容的代码。在我们的情况中,我们希望在影响力点数被添加时执行某些操作,因此我们需要挂钩到相应的类和方法。

再次启动游戏后,你会看到类似这样的界面——不用害怕!你可以自由移动、调整大小或关闭任何不需要的窗口,也可以按F7键将其完全隐藏;这样操作后,你就能继续游戏或开始新游戏了。

游戏完全加载后,为我们的钩子找到合适的类别:

查找我们可以接入的具体方法。你可以通过输入“add”来缩减列表,这样就只会显示那些包含“add”的方法。

឵
现在你可以从上方复制代码,并将其粘贴到里面。

就是这样!现在你从任何来源获得的影响力点数都将翻倍!测试

如果你想测试这项更改,只需搜索【TowerStats】对象并调用我们的【AddInflunce】方法。
要做到这一点,你必须先找到该物品。

完成上述操作后 向下滚动找到AddInfluence方法 点击“Evaluate” 在第一个输入框中输入你想要测试的数值 再次点击“Evaluate”

之后 检查你的影响力点数 查看日志窗口
这也是你用来修改其他属性的方法,例如金钱、资源等——你只需找到存储它们的相应游戏对象。这并非总是一件容易的事(或难以解释),但如果你想了解事物的运作方式,只需使用【对象浏览器】->【场景浏览器】来了解游戏的结构。如果对象是嵌套的,在这种情况下,你可以通过点击【检查】来“深入挖掘”。 注意

你的游戏文件不会有任何改动,游戏仍保持原始状态——这意味着所做的更改并非永久性的,重启游戏后你需要重新应用钩子。 卸载UnityExplorer只需从BepInEx/plugins文件夹中删除相关文件夹,或者直接删除所有BepInEx文件即可。 如果遇到问题欢迎提问——但对于那些通过10秒钟谷歌搜索就能解决的问题,我不会回应。




换一换 





















