[饥荒联机版模组]修改制作栏中的合成物品时的需要资源和其它相关技巧
此文章只是记录编写联机版mod时做的记录,不是一篇很正式的文档
想要入门饥荒mod制作,可以看CSDN的夏湾作者文章,很详细~
直接给代码和结论,目前在饥荒是可用的
修改制作栏中的合成物品时的需要资源
在制作栏中添加一个prefab的多个合成方式
放个效果图把

这里如果你想说我自己创建一个新的prefab然后配置同样的参数,添加到物品栏中不是也可以实现这个需要
答案是可以这样做,我也这样做了,我发现这个有几个不好的地方,一个是贴图要配置(物品栏的和背包里面的都需要),另一个是然后你这个预制体其实是一个新的prefab和之前的都不一样,所以和之前的或者新的不能叠加在一起,如果还得非有说一点的话就是为了更好管理mod,你可能需要新起大目录(或者叫模块?)专门放置你新建的预制体,然后在添加进入modmain中去
进阶(如果你还想更深入的了解的话,继续看吧,不保证完全对)
上述的AddRecipe2方法,其实在/scirpts/modutil.lua里面有具体实现
其实到目前为止还没有做什么很明显的动作,重点主要是在Recipe2中
我们看到Recipe2的代码
可以看到最终是调用了Recipe,那继续来看看Recipe,下面代码有点长
看了这么多要我总结的话就是注意Recipe中name和product可以不一样,
第二点就是ingredients sortkey numtogive实际上作用比较大,
还有一个AllRecipes全局变量很关键存储了所有制作的Recipe
其实这里你还会发现和我们第二个方法的代码还是有点不一样,在我们第二个方法里面用的是IsRecipeValid(self.name) GetValidRecipe(self.name)
这个其实在这个文件里有定义的啦
其实就是从AllRecipes全局变量根据name取到对应的Recipe就是中间帮我们做了一些有效性的判断,这个当然很重要,所以我就直接用它里面的函数了
好了讲了这么大一块,应该快累了,没事加加油,我们还有最后一块内容
就是上面的AddRecipeToFilter函数,这又是另外一个故事了,从这个名字来说就是把Recipe加入到Filter中去可能会觉得奇怪,Filter难道是一个实际的数据结构么,我告诉你还真是,可能和平常用的Filter不一样,这里按照德语?来说的话应该是一个名词,而不是一个形容词或者动词的用法,说了一些没用的话,那看代码把
最后我们就来讲讲CRAFTING_FILTERS是一个什么东西
这个在scripts\recipes_filter.lua文件中
下面就是很多插入某个过滤器的Recipe名字的表
最后设置CRAFTING_FILTERS每个recipe对应的default_sort_values 排序值 table.invert这个没查到啊,只能猜,有没有大佬告知一下是什么意思