一、前言
上一篇文章讲到,七日杀对于能否打开创意菜单和上帝模式只是一个简单的本地判断函数。同样,对于能否使用某些指令也只是简单的本地判断,比如,cm,dm,give~,kill等。
创意菜单作弊可以通过删除创意菜单的方式来简单的杜绝玩家刷东西,但是却无法阻挡玩家使用上帝模式,以及控制台指令刷东西。
很简单的道理,七日杀很多东西都是放到本地上来完成的,并不需要服务器计算和许可。在禁用EAC的情况下,直接修改游戏数据就可以在游戏中作弊。
还是那句话,这对需要关闭EAC的大型模组(比如亡灵遗产)来说非常不友好。即使服务器插件能检测玩家是否正在使用上帝模式的一些功能,但依然有很多东西是服务器无法检测的。
二、原理介绍
七日杀服务器里能使用管理员指令的前提是向服务器发送的判断请求的回馈为允许,而我们只需要删除发送请求,直接允许即可。
三、实操环节
事先准备:dnSpy反编译软件(推荐github上下载)
1.定位dll文件,定位 "游戏根目录/7DaysToDie_Data/Managed/Assembly-CSharp.dll",将其拖入dnSpy中。记得先备份,先备份,备份。
2.定位权限判断代码"Assembly-CSharp/-/GUIWindowsConsole/EnterCommand()"(如图,不同版本可能会有区别,但是原理基本一致,图中为A20.7)
3.定位
"if?(!SingletonMonoBehaviour.Instance.IsClient)",大致意思是向判断函数询问是否可以使用控制台指令,我们将其修改为直接允许。即
"if (true)"或"if (!false)"。步骤如图。
七日杀控制台
定位代码行末尾,右键编辑IL指令
最后全部保存
四、后记
这一修改能使用大多数本地指令,比如cm,dm,giveself等。一部分如生成怪物的指令则不行,因为这些指令非本地执行,所以会被服务器拒绝。
其中giveself就是用来刷物品的,要善用第四个选项
如giveself itemname 2 100 true;表示给予品级为2的物品itemname100个 ,且直接进入背包。第四个选项默认为false,即刷出的物品掉在地上,当为true时,则直接进入背包。实测当物品数量太多,且是刷在地上时,会出现类似卡E的情况,需要重新进入服务器。(话说当物品名称有空格,有人知道该怎么办吗?)
最后,注:以上内容同样来自MGPH大佬。