tempa 发表于 2018-9-6 01:27

《双点医院》★★★★★★★★★★内置Debug控制台开启方法★★★★★★★★★★

本帖最后由 tempa 于 2018-9-6 19:30 编辑

不算原创,但是好像看某个贴子,有个哥们贴了张控制台的图,google了一下找到了CE版本。


http://fearlessrevolution.com/viewtopic.php?t=7780



但是我比较喜欢直接用C#高级语言处理,所以直接改了个dnSpy版,无需CE。

简单说下方法,理论上此修改方法应该全版本通用,但是我只下载了最初的版本,因为第1版我玩着没什么问题,现在二周目,所以就没更新。


另外也不知道这哥们发的是哪个版本的Assembly-CSharp-firstpass.dll文件,版本不同,直接覆盖肯定会出问题。还是按自己当前的版本,自己改最靠谱。


首先备份2个文件


TwoPointHospital\TPH_Data\Managed\Assembly-CSharp.dll



TwoPointHospital\TPH_Data\Managed\Assembly-CSharp-firstpass.dll


这次要多备份1个Assembly-CSharp-firstpass.dll,因为我们要修改这个文件。


Assembly-CSharp.dll改多了,没想到这次会在Assembly-CSharp-firstpass.dll里。


1.首先选中Assembly-CSharp-firstpass.dll依次展开

UnityConsole >> ConsoleCommandsDatabase >> RegisterCommand 函数,如图







你看到的这个函数应该是空的,而我这里是改好的,编辑函数,加入下面这句话,重新编译即可。



ConsoleCommandsDatabase.Database = new ConsoleCommand(command, description, usage, callback);






新手可以参考我之前的dnSpy入门贴子。


http://bbs.3dmgame.com/thread-5782890-1-1.html


如果编译没出任何错误,那么保存他就可以了。



2.接下来Assembly-CSharp.dll依此展开


TH20 >> App >> .ctor


如图,点击编辑方法








去掉图中所示的这行代码

base..ctor();




并且在函数参数末尾加入

: base()





如图





这句函数参数尾加: base似乎不写也行,但是按照C#的写法应该是写上的。


如果你的版本没有base..ctor();这句代码就不用管,继续看下面。


接下来按Ctrl + F搜索字符串

consoleController.ToggleKey


来到如图





把这句的KeyCode.None改为


KeyCode.BackQuote




如图








这是1前面的那个~那个键,是许多自带控制台调式游戏的默认键,当然你也可以改成其他任何你喜欢的快捷键。



全部搞定后点右下角的编译按钮,如果没有任何错误,保存,再进游戏,按~键即可调出控制台。

最后附上控制台命令。






可以测试一下命令,我只试了一个命令


SpawnGhost


生成鬼魂


为了不破坏游戏进度,新开一个存档,第1关先生成一屋子鬼玩玩,看起来可以正常使用。





很好,有了控制台,可以彻底消除角色了,对于编辑建筑都复原不了而卡死的员工和病人有奇效,真是好消息。


DebugDestroyCharacter

删除选中角色




ClearQualifications

选中角色属性槽设为白板,洗属性神技,保留槽位,只去掉属性




SpawnRequiredStaff

补全当前状态下AI认为所缺少的员工,还有这种操作......我感觉不是我玩游戏,而是游戏玩我......{:2_29:}



版主不要加隐藏了,加了隐藏我自己都编辑不了贴子了{:3_124:}























zz3713 发表于 2021-6-2 18:05

感谢分享

zhuosheng 发表于 2021-6-14 13:54

开启命令控制台 应该都是按照 tempa的方法改2个文件。
newman55的mod采用另一个办法,改一个文件也是2处。
Assembly-CSharp-firstpass.dll
UnityConsole.ConsoleController.Update最后追加面加
// UnityConsole.ConsoleController
// Token: 0x060000DA RID: 218
private void Update()
if (Input.GetKeyDown(KeyCode.BackQuote))
            {
                this.UI.ToggleConsole();
            }

UnityConsole.ConsoleCommandsDatabase.RegisterCommand里面加命令,这个和以前一样
// UnityConsole.ConsoleCommandsDatabase
// Token: 0x060000CA RID: 202
public static void RegisterCommand(string command, string description, string usage, ConsoleCommandCallback callback)
{
    ConsoleCommandsDatabase.Database = new ConsoleCommand(command, description, usage, callback);
}


//可选 也许应该加个判断!
// UnityConsole.ConsoleCommandsDatabase
// Token: 0x060000E9 RID: 233 RVA: 0x00006DBA File Offset: 0x00004FBA
public static void RegisterCommand(string command, string description, string usage, ConsoleCommandCallback callback)
{
    if (!ConsoleCommandsDatabase.Database.ContainsKey(command))
    {
      ConsoleCommandsDatabase.Database.Add(command, new ConsoleCommand(command, description, usage, callback));
    }
}


出处:https://bbs.3dmgame.com/thread-5988702-1-1.html

1.25.69431测试可用

tom1126kimo 发表于 2021-6-29 11:17

新版的,搜尋 consoleController.ToggleKey
要改成搜尋 UnityEngine.Object.FindObjectOfType<ConsoleController>().ToggleKey

受受肉肉 发表于 2021-9-10 15:15

奇了怪了 我的.cctor打开是空的~

zwj_325200 发表于 2021-10-3 10:32

受受肉肉 发表于 2021-9-10 15:15
奇了怪了 我的.cctor打开是空的~

选下面的那个.app
然后查找ConsoleController,修改None为BackQuote.
但是我编译的时候会报错。。。(1.25版)

Lay-Zyx 发表于 2022-3-27 10:42

删除技能怎么删?一直说没有员工被选中,怎么才算被选中?

linmantoman 发表于 2022-6-27 23:49

老哥有些控制台命令失效了麻烦有空重新弄一下~~

nudest 发表于 2025-2-10 19:38

1.29版本的dll文件模块改了   不知道怎么修改了.

nudest 发表于 2025-2-10 19:47

zwj_325200 发表于 2021-10-3 10:32
选下面的那个.app
然后查找ConsoleController,修改None为BackQuote.
但是我编译的时候会报错。。。(1.2 ...

我是1.29.52版本的照你说的和对照教程没有出现编译错误提示.
页: [1]
查看完整版本: 《双点医院》★★★★★★★★★★内置Debug控制台开启方法★★★★★★★★★★