七日杀A16.4DLL源码分享——基于饥荒MOD
本帖最后由 飞沙流年 于 2020-2-9 17:14 编辑最近因为疫情的原因,闲来没事就开始看七日杀的源码(这里的源码说的是七日杀的源码,是反编译dll文件,而不是单纯修改xml文件),路径: \7DaysToDie_Data\Managed\ 下的dll文件。因为时间的关系,本人也没有把所有的类都看完,这里跟大家分享下查看的方式以及我目前所了解到的内容,以方便大家可以更好的自定义mod。 可修改内容: 1) 自定义版本如把alpha 16.4改为自己的mod名称 2) 玩家最大饱食度和口渴度 3) 饥荒mod自带的食物变质 (可自定义变质方式,变质时间,变质成的物品) 4) 自定义天气(可设置一年四季,风、雨、雪、雾,每种天气的作用时间和大小,温度湿度的变化) 5) 设置每种物品的左键和右键(可自定义生成的物品,各种玩家生命属性的加减程度) 1、反编译工具dnSpy提供一个下载地址:https://www.jb51.net/softs/556366.html,大家也可以自行百度下载2、反编译dll文件这里主要用到的dll文件为:Assembly-CSharp.dll和 Mods.dll,如图 用dnspy打开后,会自动加载当前目录相关的其他dll文件 1> Assembly-CSharp.dll文件该文件为七日杀默认的文件,所有的七日杀预设信息均在该dll文件里面,打开目录下的{},下面是所有的内置函数 该文件可以编辑常见的属性,如自定义版本、玩家最大饱食度和口渴度等Constants类下面为定义的常量,如:版本号,默认为Alph 16.4 这种 items.xml里面食物的获取食物和水分的值经常跟界面上的加值不一致,原因也是dll里面玩家饱食度和口渴度的默认值不是100,如下图,在constants类里面,可以把玩家饱食度和口渴度都改成100,默认是72 其他属性的修改,可以自行看其他的类。2> Mods.dll文件 该文件为mod修改文件。需依赖SDX.Core.dll和SDX.Payload.dll文件 饥荒mod自定义类的全局设置类:MorteHelpers 食物变质 MorteFoodSpoilage饥荒mod中食物变质的原理:增加foodSpoilImmune 食物变质免疫时间属性,在食物变质类的食物变质函数中读取该属性,并根据设置的时间获取对应的物品,从容器中(玩家背包或其他储物箱)移除到达设定时间的物品,然后再在容器中增加相应的替换物品 读取容器所有物品中属性里包含自定义的过期属性的物品,放入集合中 具体的物品变质逻辑:这里可以自定义,另外可以增加容器的判断,如容器是冰箱的话,就不变质或者重新定义属性中的变质时间 自定义item行为item的行为全部为itemAction开头的类 这里可以自定义item行为类,然后加入自己想要的逻辑 修改后的item行为需要在items.xml中专门配置才可生效——Class属性值改为自定义的mod行为类 天气系统MorteWeather饥荒默认提供了7种不同的天气,可以自行根据游戏天数,游戏时间,白天黑夜等设置具体天气。如:可以根据时间设置一年四季,每个时间段执行固定的天气,或者白天晴天或者下雨,晚上大雾或者下雪。 7种默认天气:饥荒自带四季:一年365天
60-90天 小雨
90-120天 大雨
120-150天 小雪
150-180天大雪
180-210天暴雪
210-225天小雪
225-250天小雪 其他天数,执行biomes.xml中配置的天气系统,即根据不同地形执行天气。可自定义天气规则 目前本人知道的大概就这些,且是基于七日杀16.4饥荒mod,希望对想要自己定义mod的朋友有所帮助,如有疑问或其他建议,大家一起回帖交流。 好无语啊,不能上传图片 很神奇的不能发图片,如果有同学有兴趣一起研究就发信息给我吧,能看懂的就自己看吧,唉~ 自定义天气
DLL类路径,dnspy反编译工具打开相应的dll文件,一次打开到{}目录,下面的所有类如下
Assembly-CSharp.dll 包含所有七日杀初始的信息
版主能否不限制我每天上传图片的大小?不然我要分好几天才能传完 constants类为全局常量类,里面包含了很多预定义属性,包括:版本信息,xml文件读取目录,玩家饱食度等
dll编辑方法:打开的类右键->编辑类,在打开的窗口修改内容,修改后,点击下方的编辑,没有错误的话,点击dnspy左上角文件->全部保存,重启游戏生效。
备注:游戏运行状态下,保存会报错,需关闭游戏才能保存修改。
自定义天气系统:
饥荒默认设置了7种天气,每种天气都可以自行修改,或直接自定义自己想要的天气效果。
饥荒默认一年时间为365天,每种天气默认执行时间,在帖子一楼已经有了。
下面是我自己测试的天气规则:随机获取一种天气,然后执行。
备注:天气规则函数大概是游戏时间每隔1小时执行一次,具体时间没做测试。 可以根据游戏时间等自定义季节以及想要的天气变化,如:增加每日天气预报功能等。
666666,厉害厉害! 大佬有群吗,可以一起讨论讨论学习学习吗? 玩家名字属性在哪里,我想改个中文的,和颜色。
看看看
大佬,你知道xml解密的api在哪吗
页:
[1]