Don't Starve Together

Don't Starve Together

Not enough ratings
如何添加mod专属制作栏
   
Award
Favorite
Favorited
Unfavorite
File Size
Posted
Updated
2.298 KB
26 Apr, 2022 @ 6:58pm
27 Apr, 2022 @ 1:52am
5 Change Notes ( view )

Subscribe to download
如何添加mod专属制作栏

Description
这只是一个教程

看到有人发了一个三行制作栏https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=2799973572

最后提到可以用API来做,但是没有给出,那我就帮忙补充一下吧,贴一下代码


GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})

STRINGS.UI.CRAFTING_FILTERS.LYKZ="龙蝇客栈"--制作栏的名字,鼠标放上去会显示,不写也没关系

AddRecipeFilter({name="LYKZ",atlas = "images/inventoryimages/lykz.xml", image = "lykz.tex"})--API,添加制作栏,就这么简单,一行代码就够了,参数是名字(可以大写小写或者中文,但小写最后还是会变成大写)和图片,自己加上就好,除此之外还能加入其他参数比如index来改变制作栏的序号,不过一般只要这三个就行

local lykzrecipe={
"lykz",
"xdhat",
"longying",
"lykzfubag",
"longwhip",
"zxtw",
"deng",
"lykzshideng",
"lykzcloudskill",
"xtw",
"lykzlzhxb",
}

for k,v in pairs(lykzrecipe) do
AddRecipeToFilter(v,"LYKZ")--API,把配方添加到制作栏,这里用了遍历
end


AddRecipeToFilter("lykz","LYKZ")--也可以直接这么写


--这个API没什么好说的就是把配方插入制作栏(补充一点,插入制作栏的名称要大写,因为添加制作栏的API会自动帮你大写

或者你能直接改配方,不用API更好,直接在你原来的配方配方的filters参数,加入自定义的制作栏就好

今晚早点睡提供的思路
local params={}
params[1] = {
name = name,
ingredients = ingredients,
tech = tech or TECH.NONE,
config = config or {},
filters = {"制作栏1","制作栏2"} 可以有很多个制作栏
}
AddRecipe2(params[1].name, params[1].ingredients, params[1].tech, params[1].config, params[1].filters)



除此之外官方在4月9日的补丁中提到
Filters added by mods will now resize the crafting menu to make room.
现在过滤器添加到插件将调整制作菜单腾出空间。
mod添加的制作栏会自动适应,也就是位置不够就会往下新增一行
所以不需要其他游戏文件的修改

补充内容,STRINGS.UI.CRAFTING_STATION_FILTERS[string.upper("lykz")]=STRINGS.NAMES.LYKZ

AddPrototyperDef("lykz",{icon_atlas = "images/inventoryimages/lykz.xml", icon_image = "lykz.tex",is_crafting_station = true,})
添加mod科技站,针对的是那种必须在科技站(例如远古科技)旁边才能造的配方
AddRecipeToFilter(v,"CRAFTING_STATION")--"CRAFTING_STATION"就是科技站的栏位,靠近科技站时配方会显示在这一栏位
不需要任何新东西,用mod原有的即可
可以自行找想要的mod作者兼容
如果你想的话,甚至可以在 取得授权 之后自己动手,帮助一些退坑或者没时间的作者兼容一下
6 Comments
奇怪的萌新  [author] 31 May, 2022 @ 6:30pm 
GLOBAL.setmetatable(env,{__index=function(t,k) return GLOBAL.rawget(GLOBAL,k) end})加了吗?不加就要在AddRecipeToFilter前面加GLOBAL.
am 31 May, 2022 @ 8:46am 
請問 AddRecipeToFilter 直接使用會報錯:the variable 'AddRecipeToFilter' is not declared LUA ERROR

要怎麼處理
奇怪的萌新  [author] 7 May, 2022 @ 11:56pm 
补充内容,STRINGS.UI.CRAFTING_STATION_FILTERS[string.upper("lykz")]=STRINGS.NAMES.LYKZ

AddPrototyperDef("lykz",{icon_atlas = "images/inventoryimages/lykz.xml", icon_image = "lykz.tex",is_crafting_station = true,})
添加mod科技站,针对的是那种必须在科技站(例如远古科技)旁边才能造的配方
AddRecipeToFilter(v,"CRAFTING_STATION")--"CRAFTING_STATION"就是科技站的栏位,靠近科技站时配方会显示在这一栏位
奇怪的萌新  [author] 28 Apr, 2022 @ 6:55pm 
@今晚早都睡 这样也不错,不过里面有一处params[1] = {
name = name,
ingredients = ingredients,
tech = tech or TECH.NONE,
config = config,
filters = nil 这里也能直接写filters = {"制作栏"}
}
后面就没必要了再加了,AddRecipeToFilter可以用在一些还是AddRecipe的老mod上
奇怪的萌新  [author] 27 Apr, 2022 @ 1:43am 
嗯,是我疏忽了,一开写的中文,后来改的时候没注意
The Onion 26 Apr, 2022 @ 10:57pm 
尝试了一下,发现似乎在一开始创建制作栏的位置那里的名称需要大写才能正确的把配方添加进原创的制作栏去?