本帖最后由 飞沙流年 于 2020-2-9 17:14 编辑
最近因为疫情的原因,闲来没事就开始看七日杀的源码(这里的源码说的是七日杀的源码,是反编译dll文件,而不是单纯修改xml文件),路径: \7DaysToDie_Data\Managed\ 下的dll文件。 因为时间的关系,本人也没有把所有的类都看完,这里跟大家分享下查看的方式以及我目前所了解到的内容,以方便大家可以更好的自定义mod。 可修改内容: 1) 自定义版本 如把alpha 16.4改为自己的mod名称 2) 玩家最大饱食度和口渴度 3) 饥荒mod自带的食物变质 (可自定义变质方式,变质时间,变质成的物品) 4) 自定义天气(可设置一年四季,风、雨、雪、雾,每种天气的作用时间和大小,温度湿度的变化) 5) 设置每种物品的左键和右键(可自定义生成的物品,各种玩家生命属性的加减程度) 1、反编译工具dnSpy 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的朋友有所帮助,如有疑问或其他建议,大家一起回帖交流。 |