本文解释皆是自己在制作模组过程中对于文件、代码的理解,如果解释有误还请自行查询判断。
以亡灵遗产为例,我所用到的工具如下:
vscode:用于修改查询代码的工具
everything:用于搜索七日杀物品图片信息的工具
Photoshop:简称PS,用于裁剪修改图片
Honeyview:用于压缩图片大小和固定图片尺寸
百度翻译:用于翻译不认识的英文
Chatgpt:用于翻译解释不认识的代码
搜图神器:用于搜索全网图片
以上文件链接在此:链接:https://pan.baidu.com/s/1QccHrjeUJ20fwdrlwEknOg 提取码:p29y
下面开始模组制作:
1.搜集图片。
去搜图神器上面搜索图片,然后用截图工具截取一个差不多是正方形的图片,我用的QQ截图
2.用PS调整图片亮度,大小,消除不需要的地方等等,网上有很多教程,很简单,可以自行查看
3.用Honeyview打开图片,然后按快捷键:Ctrl+T
设置图片大小为200*200像素,然后设置品质为90,品质就是压缩图片大小的意思,90已经能很大程度的压缩图片体积了,然后点击开始,图片就修改好了。
4.将修改好的图片放入文件夹内,以海绵宝宝模组为例,模组文件分为3个
Config文件放模组代码,UIAtlases文件放图片,ModInfo.xml放读取模组的信息
先解释UIAtlases文件夹,这个文件夹包括两个文件夹,ItemIconAtlas存放模组图片,UIAtlas存放技能,buff图片,文件夹名字不能修改,启动游戏时会直接读取文件夹内的图片信息,对于是png还是jpg都无所谓,只要名字对应就能去读到。
然后将刚刚的图片放到ItemIconAtlas文件夹内即可
5.然后就开始代码部分
代码用vscode打开,点击文件,打开Config文件夹
这种装备的模组主要的文件是item_modifiers.xml文件,打开文件
现在拿一个简单的作为示例
<append xpath=”/item_modifiers”> 表示将新加模组内容到游戏里面的item_modifiers
<!– 无BUFF 只有被动 –> <!– –>这种形式表示代码注释,不会读取到游戏里面,可以随便写
然后从<item_modifier name=”海绵宝宝” installable_tags=”melee,bow,crossbow,gun” modifier_tags=”hmbb” blocked_tags=”noMods” type=”attachment”>
开始到</item_modifier>结束,
算是一个模组内容,buff和效果都在这里面写。
name=”海绵宝宝” 这个name可以随便写的,就是你想添加什么名字作为新模组的名称,这个name是和ItemIconAtlas文件夹里面的图片名字是对应的,这里写海绵宝宝,图片名字也得是海绵宝宝。
installable_tags=”melee,bow,crossbow,gun” 表示安装在哪个装备上,这里写的表示可以在近战,箭,弩箭,枪上面安装,还有一些其他的表示我总结在下面,这是我目前已知且使用过的,还有很多很多
modifier_tags=”hmbb” 表示这个模组的标签是什么,这个可以随便写的,但是如果两个模组的标签一样的话,是不能同时装备的,比如海绵宝宝和正义海绵宝宝都是 hmbb 这个标签,所以不能同时安装
blocked_tags=”noMods” 表示该物品不能被添加模组
type=”attachment” 表示该物品的类型是一个附件
<property name=”Extends” value=”modGeneralMaster”/> 表示继承与基础模组的信息
<property name=”DescriptionKey” value=”海绵宝宝Desc” /> 这里是和游戏内的描述相对于的,和localization.txt里的 海绵宝宝Desc 对应
<property name=”DisplayType” value=”海绵宝宝type”/> 这里是亡灵遗产内部的描述,就是这一块
它和ui_display.xml里面的display_type=”海绵宝宝type”是对应的
<!– 材料 –>
<property name=”Material” value=”matLeather”/>
<!– 重量 –>
<property name=”Weight” value=”20″/>
<!– 经济 –>
<property name=”EconomicValue” value=”2000″/>
<!– 携带重量 –>
<property name=”CarryWeight” value=”.5″/> 这几个就是注释所示
<property name=”MaintenanceGroup” value=”HMBBMOD”/> 这个组的value可以随便写,具体是和recipes.xml里面的modify对应的,如图
这个modify简单说一下,就是升级,只要带有HMBBMOD这个组名字的都可以进行升级,quality是质量,就是从H->SSS级,area表示制作的地方,分别是1,2,3,4级维修站,prob表示升级概率,1就是100%升级成功
下面的ingredient表示升级所需材料为代币 后面count是数量
<property name=”dEntityDamage” value=”5,20″/>
<property name=”dTargetArmor” value=”-.1,-.2″/>
<property name=”dStaminaLoss” value=”-.02,-.1″/>
这三个是和下面这三个是对应的
<!– 20固定伤害–>
<passive_effect name=”EntityDamage” operation=”base_add” value=”5,20″ tier=”1,90″/>
<!– 目标破甲 –>
<passive_effect name=”TargetArmor” operation=”perc_add” value=”-.1,-.2″ tier=”1,90″/>
<!– 体力消耗-10% –>
<passive_effect name=”StaminaLoss” operation=”perc_add” value=”-.02,-.1″ tags=”primary,secondary” tier=”1,90″/>
只需在name前加上d即可,这里的dEntityDamage,dTargetArmor,dStaminaLoss是和ui_display.xml对应的
name=”#dEntityDamage” #d是不能动的 后面这个EntityDamage就是passive_effect被动效果的名字,max表示最大值,icon是图标,图标的查看地址是7Days To Die-A20.6(b9)\Mods\UndeadLegacy\UIAtlases\UIAtlas,当然也可以直接在everything上面搜索对应的icon名称如symbol_sword来查看是什么样子的
title_key是可以自己随便写的,不过写完需要再localization.txt文件里面加入类似下图即可
display_type=”Decimal1″ 表示直接显示你的数值
display_type=”Percent” 表示显示当前数值的百分比
继续讲解这个item_modifiers.xml的效果组
passive_effect表示固有能力,被动效果,name=“EntityDamage”这里的EntityDamage是不能随意更改的,需要游戏原代码里面有才可以用,可以按照以下方法进行查找
用VSCODE打开7Days To Die-A20.6(b9)\Data\Config这个文件夹,然后再vscode里面
找到buff.xml的最底部,点击就能跳转到对应的代码块,这里面的代码就是官方游戏代码,只要官方使用过就可以使用
operation=”base_add” 表示操作,为基础添加,就是直接添加具体数值,后面的value=”5,20″就是数值,这个可以直接写一个value=”20″即可,如果想我一样想要加入等级,就写成逗号的形式,表示按照等级从5到20,后面的tier=”1,90″就是等级,如果你设置1,60,就表示1到60级的效果是5-20攻击力
operation=”perc_add” 表示按照百分比添加
在后面还有一个tags=”primary,secondary” 这个可加可不加,不加就表示所有动作,加了就是限制这个效果生效在哪个动作上面
还有,如果effect_group 后面有个tiered=”false”就表示没有等级制度,想要等级就得删掉这个
name只是一个标签,可以不用管
下面来看一个复杂一点的
上面的代码基本上都一样,已经解释过了,泡芙老师 安装在胸部 标签是pfls
看第三个
<triggered_effect trigger=”onOtherAttackedSelf” action=”AddBuff” target=”other” buff=”泡芙保护” />
这个表示根据条件触发, trigger=”onOtherAttackedSelf”触发条件是当别人(丧尸,动物等)攻击自己时,触发行为
action=”AddBuff” 添加buff, target=”other”目标是为别人(丧尸,动物等)添加一个buff,buff名字叫泡芙保护,这时候,就转跳到buffs.xml文件里面的name为泡芙保护的效果中了。
以下为buffs.xml里面的效果
<buff name=”泡芙保护” name_key=”[FF0000]【莫挨老子】” description_key=”[FF0000]-30生命值” remove_on_death=”false” hidden=”false” icon=”泡芙老师” icon_color=”eacd76″>
name和上面的buff=”泡芙保护”对应,name_key表示你点击查看时的名字 比如丧尸身上的
description_key 是详细说明
remove_on_death=”false” 表示是否死亡时移除 false 否
hidden=”false” 是否隐藏 false 否 表示能看见
icon=”泡芙老师” 表示图标 图标是在UIAtlases\UIAtlas这个文件夹内的,名字得对应
icon_color=”eacd76″ 表示图标颜色
Stack_type:表示该 BUFF 如何叠加。这里设置为 “ignore”,表示该 BUFF 不会叠加。
Duration:表示该 BUFF 的持续时间。这里设置为 “1”,表示该 BUFF 只能持续一秒钟。
Effect_group:这里包含了只有一个效果,即在 BUFF 持续期间,玩家每秒会失去 30 的生命值。这个效果通过 “HealthChangeOT” 来实现,操作类型为 “base_subtract”,表示在基础生命值上减去一个固定的值。
这些可以使用chatgpt帮你解释,例如上面那几个就是,你只要说明是七日杀代码然后直接发代码,他就能解释,下面给大家一个网站:https://chat.fed.qiweioa.cn/zh 这些随时可能失效,最好多储备几个
好了,下面说一个比较复杂的buff 宇智波鼬海绵宝宝 天照
这个trigger=”onSelfEquipStart”表示装备上会触发的效果 添加buff 没有指定target 默认表示自己 buff为天照冷却1秒
这个是我自己想出来的,原版的直接是使用onSelfEquipStart在装备模组时生效天照,但是因为各种原因,例如添加第二个模组时会同时触发第一个的onSelfEquipStart,所以就会自动触发技能,还有上下载具也会触发,这就导致技能不能随自己的想法触发,所以我在所有主动技能前都添加1秒冷却。这样,无论怎样都会触发冷却1秒,而现在看第二行代码,onSelfItemActivate表示自己主动按F使用技能, active=”true”表示技能为开启状态,添加天照buff效果,而他下面有几个requirement就是限制他的触发,因为每次装备都会率先触发1秒冷却,所以不会触发onSelfItemActivate,因为不满足<requirement name=”NotHasBuff” buff=”天照冷却1秒” /> 需要同时满足所有requirement才可以触发技能
<triggered_effect trigger=”onSelfItemDeactivate” action=”RemoveBuff” active=”false” buff=”天照”/> 这个表示关闭技能会移除buff 天照 状态设置为false关闭状态
<triggered_effect trigger=”onSelfItemDeactivate” action=”RemoveBuff” active=”false” buff=”天照效果”/>
<triggered_effect trigger=”onSelfItemDeactivate” action=”RemoveBuff” active=”false” buff=”天照效果2″/>
这些是同时移除天照效果,因为大火熄灭需要10秒,所以不能达到那种关闭技能大火就会熄灭的效果,所以我添加了以上这两行代码,直接移除周围丧尸 的燃烧效果
<triggered_effect trigger=”onSelfEquipStop” action=”RemoveBuff” active=”false” buff=”天照”/>这个表示卸下装备时会触发移除buff效果,这个会被其他第二个模组安装上时触发,
<triggered_effect trigger=”onSelfEquipStop” action=”AddBuff” buff=”天照冷却1秒” />
最后一定要是添加一个冷却,不然会有其他bug
自己身上的效果 天照 buff
Duration:表示该 BUFF 的持续时间。这里设置为 “0”,表示该 BUFF 没有持续时间限制。需要其他地方removebuff才可以使这个效果消失
Update_rate:表示该 BUFF 的更新速率,即多长时间更新一次。这里设置为 “1”,表示每秒钟更新一次。
Effect_group:这里包含了三个地方的效果,其中两个效果是 “triggered_effect”,表示它们会在指定的条件下自动触发(即
“onSelfBuffUpdate”表示其他地方调用该buff时会触发 例如addbuff )。第一个效果会添加 “天照效果” 的 BUFF,第二个效果会添加 “天照效果2” 的
BUFF。第三个效果是 “requirement”,表示该效果只会在满足指定的要求时才会触发。这里的要求是玩家没有 “天照冷却” 的 BUFF。
注意这个requirement,因为是和triggered_effect是同一级,所以需要满足requirement才能触发这个effect_group。
天照冷却是10分钟,因为原版的buff效果都是多几秒,所以我也多了几秒,因为原版的获得这个buff后会只显示分钟,所以多加几秒让他刚开始看起来是10分钟的效果,如果设置600秒,获得这个buff时候就是9分钟,不好看,亡灵遗产版的就不需要这个,因为他是直接显示秒数的
第一个 天照效果 持续时间无限 一定要注意
<effect_group>
<passive_effect name=”HealthChangeOT” operation=”base_add” value=”-2″/>
</effect_group>
passive_effect一定要放在effect_group里面,不然不会生效
HealthChangeOT表示每秒改变血量 这里是添加数值 数值为-2 即每秒-2滴血
第二个 天照效果2
<triggered_effect trigger=”onSelfBuffUpdate” action=”AddBuff” target=”selfAOE” target_tags=”zombie,animal” range=”30″ buff=”buffBurningElement2″ /> 在调用天照效果2时启动,以自身为中心,范围为30m的范围内的所有丧尸和动物 添加buff名字为buffBurningElement2的buff效果
这个buffBurningElement2是我抄官方燃烧buff的,因为官方的燃烧减血太少,所以我就复制过来了,加强了一下威力,就是减血更多 了,以下是代码,这代码就不用看了,燃烧代码,直接复制就行,很难看懂而且无用
好吧我没改,我记得我想要改来着 ,,,算了有火就行。。。
下面来看一下角都的地怨虞效果
和上面一样,就是给自己添加了一个buff效果,直接看buff代码即可
其他不重要,主要是这个
<triggered_effect trigger=”onSelfBuffUpdate” action=”CallGameEvent” event=”action_fenghe” />
表示触发调用这个代码时 执行调用GameEvent 里面的事件,名字叫action_fenghe
就是表面意思,调用了gameevents.xml文件里面的action_fenghe,如图
这个我也不太懂,我是抄的官方的代码,因为好多代码都和twitch有关,比较繁琐,让chatgpt读吧。
-
Name: 动作序列的名称为 “action_fenghe”。
-
Category: 动作序列(action_sequence)的类别,该值被设置为 “twitch_actions”,可能表示该序列与 Twitch 配置有关。
-
Action 1: AddPartyToGroup(将玩家添加到组中)
-
Class: 动作类型为 “AddPartyToGroup”。
-
Phase: 执行此动作的阶段,该值被设置为 “0”。
-
Group_name: 表示将玩家添加到的组名称为 “party”。
-
Twitch_negative: 这个通道操作是否是负面的,默认为 “false”。
-
Action 2: PlaySound(播放声音)
-
Class:动作类型为 “PlaySound”。
-
Sound:声音的名称,这里是 “player_firstAidKit”,可能表示玩家正在使用一个医疗包。
-
Phase: 执行此动作的阶段,该值被设置为 “1”。
-
Action 3: AddItemDurability(增加物品耐久度)
-
Class: 动作类型为 “AddItemDurability”。
-
Phase: 执行此动作的阶段,该值被设置为 “1”。
-
Items_location: 该属性表示将向其中添加耐久度的物品位置。这里设置为 “All”,表示向所有物品添加耐久度。
-
Amount: 表示将物品的耐久度增加多少,这里设置为 “999”。
-
Is_percent: 该属性表示增加的耐久度是否为物品当前耐久度的百分比。这里设置为 “true”,表示增加的耐久度为百分比。
-
Target_group: 表示将物品耐久度增加的物品组,这里设置为 “party”,表示玩家组中的所有物品都可以从增加中受益。
这个效果就是修复所有物品的耐久度,听说空汽油也能修复,这个要改的话我觉得应该是该Items_location,这个是ALL,应该是有其他的选项的,我找找,这个是gameevent.xml文件,所以要去官方的源代码的gameevent.xml找他的注释,找到了
翻译一下,更改一下,应该就可以了,如果查询官方代码也没有或者没有相关介绍,或者官方游戏里面没有使用过的,一遍不管用。
还有一个,击杀丧尸获得代币的,自动获得代币,都是通过gameevent里面的事件来获得的
这表示给你的物品栏添加物品,名称和数量
这个action_sequence name是可以随便写的,但是下面的action 里面的class必须是官方有的
还有一个buff,如图
就表示进入游戏就会触发这个buff
各个文件个人见解解释
blocks.xml没用过,不知道
buffs.xml buff效果
entityclasses.xml应该是丧尸,动物,玩家角色,商人这些
entitygroups.xml 应该是丧尸,动物,玩家角色,商人所属的组
gameevents.xml游戏事件
item_modifiers.xml 模组
items.xml 吃的喝的玩的 代币和食物就是在这里面
localization.txt 这个是和游戏里面文字联系的,很重要
loot.xml 是掉落 比如空投掉落,boss掉落,掉包掉落,搜刮掉落等等
quests.xml 是跟任务有关的代码 任务奖励一类的
recipes.xml 合成一类的 某个物品可以通过某个东西合成,升级,回收等
traders.xml 表示商人出售
twitch 很烦,不知道
ui_display.xml 数值显示在游戏里面
还有什么不懂的可以私信我,我看到了会尽可能的回答。
欢迎对海绵宝宝模组进行二创,修改等,因为我可能没什么时间再去完善了,感谢大家的支持!
最后希望七日杀越做越好,代码能有更多的优化!
我要做头霸王龙 骑着走
感谢分享
建议加精
群:1050040662 定制/开服/地图制作/价格公道
感谢大佬分享
感谢分享
感谢大佬
谢分享