游民星空 > 攻略秘籍 > 攻略 > 正文

《双点医院》修改员工XP经验详细教程

2018-09-12 16:56:48 来源:3DM论坛 作者:qweytr_1 我要投稿

第1页:

展开

  《双点医院》中的员工经验一般情况下增长的比较缓慢,往往想培养员工还需要等经验才可以培训,那么小编下面为大家分享《双点医院》修改员工XP经验详细教程,希望对大家有用。

前期准备

  首先,打开dnSpy,选中dnSpy左边窗口的全部文件按下Del键(这只会关闭文件而非删除,这样做可以防止一些诡异的编译失败的问题,特别是在你希望修改不止一个游戏的时候)

  dnSpy下载地址:点击进入

  之后用dnSpy打开游戏目录\TPH_Data\Managed\Assembly-CSharp.dll

修改教程

  最开始,让我们介绍一种常规(但不适合修改员工XP)的修改方法

  首先根据英语,员工是staff,经验是experience,多半会简写成xp,exp之类的东西

  依此搜索,搜索可能是改游戏时候最耗时的一步,毕竟知道从哪里下手之后,做什么都会很方便。

  当我们输入exp staff的时候,我们看到

游民星空

  请注意我是故意用exp的,因为游戏里面用的名称是XP,我们本应搜不到任何有用的信息

  然而谁让Initialise这个可以被理解成“初始化”的单词以e结尾呢

  点开InitialiseXP

游民星空

  这里我们看到,这个函数主要操纵了变量this.XP,这说明this.XP就是我们要修改的目标(或者,查文件的开头可以看到,这里的this指的应该是staff,也就是说我们的目标是staff里面一个叫做XP的变量)

游民星空

  看到this.XP之后,我们其实就找到了我们要修改的目标,理论上我们就可以不要客气了,右键怼它:)

游民星空

  我们得到了有个菜单,里面有一个“分析”,这是dnSpy里面最好用的一个功能

  我们看到了两个下拉菜单,一个叫get,一个叫set,字面意义上,set是“设置”,是赋值的意思,而get是获取,是读的意思,也就是,如果我们要改这个数据,我们应该找set,看看到底是哪个函数set了它,

  然而我们想多了

游民星空

  只有一个函数使用了set,而这个函数正是我们打开的这个初始化的函数

  会有程序用初始化这种方法对变量进行更新吗?

  或者说,会有人用格式化这种方法往硬盘里面存数据吗?

  显然不对,然鹅,对一般数据,或者说我从Reus一路改过来改了那么多游戏,从未见过哪个函数不是直接用set进行赋值的,也就是说,一般情况下,只要找到set顺蔓摸瓜就可以了。

错误原因

  原因很简单,因为这个作死的程序是用get进行赋值,甚至越过了get使用了他们自己定义的AttributeFloat进行赋值的。

  先说get,这个时候,在常规方法失效的时候,其实就是大家发挥自己想象力的时候了。

  点开get,如果有足够耐心,可以一个个看下去,然鹅大家都没有耐心,于是,一个好方法是通过名字以及对游戏的了解进行修改

  首先,游戏里面只有医生看病人的时候才会进行经验上的修改,所以我们要看update,而非其他的东西

  在get方法里面带update的只有两个,都是带patient的,把这两个都改掉,我们会发现,助理的等级哗哗哗往上涨拦都拦不住

  然而大夫还是一脸萌萌哒,这时候,我们不得不去仔细检查那个modify到底是怎么完成的,

  搜索相关代码(右键怼modify选择分析,强行阅读相关代码),在AttributeFloat attribute = attributes.GetAttribute(enumValue);一句里面,出现了一个可以绕过this.XP来强行读取并修改XP的

  这句话最终在attribute.Modify(this._amount, attributesInterface.GetAttributeMultiplier(enumValue));一句完成了修改

  既然知道了这一点,我们只需要修改相关代码拦截住这一段内容,就可以让员工XP(或许要除去那群可怜的助理)蹭蹭蹭网上涨了

  这里选择修改更为保险的GetAttributeMultiplier

  反正我们可以查到XP的enumValue是9(善用鼠标左键双击以及右键硬怼即可)

  最后找到public float GetAttributeMultiplier(CharacterAttributes.Type type)

  在这里进行修改,反正只要随手一改就好,我改了return:return Mathf.Max(this._getAttributeMultiplierParam.Multiplier, (type == CharacterAttributes.Type.XP) * 100f);

  之后,终于不用为了升个级等一个小时了

更多相关内容请关注:双点医院专区

责任编辑:某青

本文是否解决了您的问题

游民星空APP
随手浏览游戏攻略
code
单机游戏下载
休闲娱乐
综合热点资讯
游民星空联运游戏