[饑荒聯(lián)機版模組]修改制作欄中的合成物品時的需要資源和其它相關(guān)技巧
此文章只是記錄編寫聯(lián)機版mod時做的記錄,不是一篇很正式的文檔
想要入門饑荒mod制作,可以看CSDN的夏灣作者文章,很詳細(xì)~
直接給代碼和結(jié)論,目前在饑荒是可用的
修改制作欄中的合成物品時的需要資源
在制作欄中添加一個prefab的多個合成方式
放個效果圖把

這里如果你想說我自己創(chuàng)建一個新的prefab然后配置同樣的參數(shù),添加到物品欄中不是也可以實現(xiàn)這個需要
答案是可以這樣做,我也這樣做了,我發(fā)現(xiàn)這個有幾個不好的地方,一個是貼圖要配置(物品欄的和背包里面的都需要),另一個是然后你這個預(yù)制體其實是一個新的prefab和之前的都不一樣,所以和之前的或者新的不能疊加在一起,如果還得非有說一點的話就是為了更好管理mod,你可能需要新起大目錄(或者叫模塊?)專門放置你新建的預(yù)制體,然后在添加進入modmain中去
進階(如果你還想更深入的了解的話,繼續(xù)看吧,不保證完全對)
上述的AddRecipe2方法,其實在/scirpts/modutil.lua里面有具體實現(xiàn)
其實到目前為止還沒有做什么很明顯的動作,重點主要是在Recipe2中
我們看到Recipe2的代碼
可以看到最終是調(diào)用了Recipe,那繼續(xù)來看看Recipe,下面代碼有點長
看了這么多要我總結(jié)的話就是注意Recipe中name和product可以不一樣,
第二點就是ingredients sortkey numtogive實際上作用比較大,
還有一個AllRecipes全局變量很關(guān)鍵存儲了所有制作的Recipe
其實這里你還會發(fā)現(xiàn)和我們第二個方法的代碼還是有點不一樣,在我們第二個方法里面用的是IsRecipeValid(self.name) GetValidRecipe(self.name)
這個其實在這個文件里有定義的啦
其實就是從AllRecipes全局變量根據(jù)name取到對應(yīng)的Recipe就是中間幫我們做了一些有效性的判斷,這個當(dāng)然很重要,所以我就直接用它里面的函數(shù)了
好了講了這么大一塊,應(yīng)該快累了,沒事加加油,我們還有最后一塊內(nèi)容
就是上面的AddRecipeToFilter函數(shù),這又是另外一個故事了,從這個名字來說就是把Recipe加入到Filter中去可能會覺得奇怪,Filter難道是一個實際的數(shù)據(jù)結(jié)構(gòu)么,我告訴你還真是,可能和平常用的Filter不一樣,這里按照德語?來說的話應(yīng)該是一個名詞,而不是一個形容詞或者動詞的用法,說了一些沒用的話,那看代碼把
最后我們就來講講CRAFTING_FILTERS是一個什么東西
這個在scripts\recipes_filter.lua文件中
下面就是很多插入某個過濾器的Recipe名字的表
最后設(shè)置CRAFTING_FILTERS每個recipe對應(yīng)的default_sort_values 排序值 table.invert這個沒查到啊,只能猜,有沒有大佬告知一下是什么意思