目前已收纳:
-
任意踹门100%成功
-
秒搜(及其他技能buff修改)
-
快捷使用安全箱、背包物品,可添加到快捷键栏位
-
无极变倍瞄准镜倍率急速滑动(不用磨叽等动画)
-
修改激光器的光点大小
-
降低地雷、阔剑伤害
-
手术可以修复胸、头
-
绊雷陷阱触发后快速爆炸(可以秒炸),不消耗拌线、放置的高低差增加
如果有其他自改dll比较有用的功能,欢迎补充分享!
一些现成的mod,3.11可用:
使用任意位置物品,作者已停更,不知道3.11这个能不能用
github:UseItemsAnywhere
dnSpy下载:
dnSpy下载可以直接使用2020年6.1.8版本,github-dnSpy。原项目已停档,24年还在更新的在这里,dnSpyEx
如果上不去github,我传的618版本蓝奏云:6.1.8版本dnSpy
要改的dll位置:
EscapeFromTarkov_Data\Managed\Assembly-CSharp.dll,每次修改之前,请提前备份这个文件。删除它旁边的同名备份文件(可能没有,是相同大小的.bak,不是同名-fill的)。
建议同时删除客户端校验它的文件,位于
SPT_Data\Launcher\Patches\SPT-core\EscapeFromTarkov_Data\Managed\同名.dll.delta
或在客户端的设置中,勾选develop mode。
如何使用dnSpy修改:
文件-打开,选择Assembly-CSharp.dll。
如果你想全局搜索一个函数名,是 ctrl+shift+K 可以搜所有程序集内容。用 ctrl+F 搜当前打开的代码框。
对于要修改的代码,请瞄准该内容右键-编辑方法。若修改后编译报错,有些好解决,有些无法解决,因为dnspy反编译并不完善。此时可以考虑右键-编辑IL指令,但这个门槛更高,需要如此的相应内容下文的具体方法内有提及。有其他问题欢迎交流。
如果编译时出问题:
修改dll前请先运行一次塔科夫客户端!进入主界面就行,不需要进图。
如果编辑代码段时,大量函数是红色,额外用dnSpy打开managed文件夹内所有的dll文件,加载到左侧列表以供调用。
若还提示报错,可能对应部分dnSpy无法处理,需要修改IL指令或稍微改动其他源码,本文内的已经在对应段落说明了。
编译无问题但保存出问题,请关闭塔科夫客户端。
1. 任意踹门修改
实现功能:对任意门都可以踹开。这个主要是对于没有钥匙的门也可以踹,例如本来不让进的房间。
搜索 BreachSuccessRoll 找到对应段落,右键-编辑方法(C#),将代码修改为这样,然后编译、保存。
(如果搜不到,就搜canBeBreached)
public bool BreachSuccessRoll(Vector3 yourPosition) { bool canBeBreached = this.CanBeBreached; if (this.Operatable) { Vector3 vector = base.transform.TransformPoint(this.viewTarget1) - yourPosition; Vector3 a = base.GetDoorRotation(this.GetAngle(EDoorState.Shut)) * WorldInteractiveObject.GetRotationAxis(this.DoorForward, base.transform); Vector3 b = base.GetDoorRotation(this.GetAngle(EDoorState.Open)) * WorldInteractiveObject.GetRotationAxis(this.DoorForward, base.transform); Vector3 vector2 = a + b; Vector2.Dot(new Vector2(vector.x, vector.z).normalized, new Vector2(vector2.x, vector2.z).normalized); return true; } return false; }
如果还想开保险箱、某些带锁内容,请使用万能钥匙mod,例如mega-mod或open sename。
2. 秒搜,及其他技能buff
Ctrl+Shift+K 搜索 IntellectLearningSpeed 选择EFT.SkillManager的一项
(或者手动从左侧列表找Assembly-CSharp.dll\EFT\SkillManager,点击SkillManager本体)
找到位置后,里面好几段的代码都是控制各种技能buff幅度的。
可以Ctrl+F搜 PerLevel 关键词,依次找到各种技能的等级成长控制数值。
可参考坛内帖子,技能buff参数列表翻译,然后想改什么就自己改什么。
对于秒搜:
搜索 AttentionEliteLuckySearch 找到 带.Elite(0.5f).PerLevel(0.0f)的一段,然后右键、编辑方法,把它改成你喜欢的。精英秒搜就是Elite(1.0f),你想慢慢升级就Elite(1f).PerLevel(0.02f)逐渐从0到100%秒搜,或者无条件秒搜PerLevel(1.0f)。
3.11版本的megamod有秒搜功能,也可以直接用。
某个技能.Elite(xx).PerLevel(yy).Max(zz)的含义:
精英时,优先使用Elite(xx)的指定数值。
非精英时,PerLevel(0.02f)是每级2%,或者Max(1.0f)是指定50级时100%,它会自动处理为每级2%。
不要同时使用Max和PerLevel。
3. 快捷使用背包、安全箱物品
搜索 FastAccessSlots 找到对应代码,然后给
BindAvailableSlotsExtended
FastAccessSlots
上述两项的列表中都添加下面的内容,就是允许直接使用XXX内物品,且可以用0~9快捷键使用。
EquipmentSlot.SecuredContainer 安全箱
EquipmentSlot.Backpack 背包
但如此修改,安全箱内的雷切出来可能会遇到卡手,需要手动切其他武器解决。
4. 瞄准镜倍率切换速度加快
搜索 ScopeZoomHandler 然后点击列表任意内容,此时会在这个名字的代码段里。
Ctrl+F 搜索 deltatime,找到这样一行
float maxDelta = this.Single_2 * Mathf.Abs(this.float_3) * Time.deltaTime * 10f;
如上在最后加上 * 10f,就是切换倍率动画速度10倍,基本无延迟了。改成你喜欢的速度就行。
5. 修改镭射激光瞄准点的大小
搜索LaserBeam.LateUpdate,找到LateUpdate()段落的这两行
float num = Mathf.Lerp(this.PointSizeClose, this.PointSizeFar, raycastHit.distance / this.MaxDistance);
float num2 = (1f – raycastHit.distance / this.MaxDistance) * this.IntensityFactor;
第一个num是光点大小,第二个num是射线光亮强度,都是一个与距离有关的函数。
可以改为
float num = 2.0f * Mathf.Lerp……就是2倍光点大小,我只改了这个,基本50米激光红点很明显,再远了也没人想腰射吧……
float num2 = (2f – ray……激光线的可视距离x2,不过这个我感觉不太出来……
如果感觉有些绿色、蓝色、紫色的激光太不显眼,可以用这个mod改变为更亮的颜色,更亮的激光
6. 降低普通地雷、阔剑地雷伤害
——普通地雷
搜索 collateralDamageRange 找到MineField部分,然后文中搜索 DamageInfoStruct 找到 Damage、Armordamage、StaminaBurnRate、PenetrationPower,分别是伤害、甲伤、减耐力、穿甲度,可以在每一项后面加上 * 0.2f 就是0.2倍。
——阔剑地雷
搜索 Minedirectional 找到这个部分,然后文中搜索 DamageInfoStruct 也是这几项。如果修改时报错,提示readonly什么的,就双击对应报错,去代码里把readonly变量的readonly这个词去掉。阔剑的伤害改0.02f之后,炸得近了依然有几率被秒,小心。
7. 手术可以修复流血黑掉的头、胸
参考这篇教程,https://sns.oddba.cn/33776.html,如果改不明白可以这里评论区问我……
NOP掉是什么:右键对应的代码位置,然后选择编辑IL指令,然后跳出的窗口里自动高亮的几行,右键它并选择第一项NOP,就让对应段落无效了。
8. 绊雷陷阱不消耗绊线(需要带1根,然后可以无限放)
打开dll,ctrl+shift+K搜索SimulatePlantTripwire,在这个函数段落中,if (plantingKit != null)后面的大括号段落就是处理绊线消耗品的。对这段内的每一行都NOP掉(参考第7条中的含义),最终变成下图这样,就跳过消耗拌线了。
绊雷放置的高低差条件
搜索 ValidateTripwirePositionAI
找到该代码段落最后一行 Math.Abs(secondPosition.y – firstPosition.y) <= 0.2f;
把 0.2f 改成你喜欢的,比如2.2f。
然后去server\database\globals.json里搜索tripwire,找到MaxHeightDifference也改成同样的数字,这样就能地上连到桌子上了。
绊雷陷阱触发后快速爆炸
搜索 ValidateTripwirePositionAI
找到 该代码所属页面,然后搜索 grenadeSettings 找到method_6()函数段落,其中第三行
Grenade grenade = Singleton<GInterface142>……PlacerPlayerId, 0f, true, true);
右键-编辑方法,修改绿色的0f,它的意义是绊雷触发后,手雷预热的秒数(也就是引爆延时缩短的秒数,我自用是改成2f了,不想直接瞬炸)
暂时自用的内容就这些。欢迎分享其他的。
数值改完点编译会报错,不能退出保存,3.11开始就不行了,3.10还是可以改的
你不会出这个问题?
左侧列表全部加载后确实可以编译了,编译完了点保存又跳红了,怎么操作?
任意踹门
是修改哪个文件?没看明白,在哪里搜“BreachSuccessRoll”?