饥荒Mod 开发(二三):显示物品栏详细信息
饥荒Mod 开发(二五):常用组件 总结
源码
饥荒中的每种工具都有独特的功能,比如 斧头用来砍树, 铲子用来 挖东西,鹤嘴锄用来挖矿, 锤子可以敲碎东西,所以我们随身备着4种工具,不仅需要多占用背包还要时不时的切换,那怎么制作一把万能的工具,可以用来砍树,打怪,挖矿,敲东西等。
原理
每个物品都会对应一个或者多个动作,这个动作决定了如何操作这个物品,每个预制物会添加一个"workable"组件,然后设置action,这样这个物品就可以被 Action处理。
--下面是 evergreens.lua 中预制物的代码inst:AddComponent("workable")inst.components.workable:SetWorkAction(ACTIONS.CHOP)
--浆果inst:AddComponent("workable")inst.components.workable:SetWorkAction(ACTIONS.DIG)
上两篇有介绍如何显示物品的详情,也可以将鼠标放到物品上,就能显示物品的动作。
比如萤火虫的动作是NET, 需要用捕虫网捕捉
浆果可以挖
树木可以砍
实现万能工具
2.1 添加tool组件
之前有一篇是实现了一把AOE 的武器,饥荒Mod 开发(十):制作一把AOE武器, 我们在这个基础上再增加一些功能, 让这把武器能砍树,能捕虫,能挖矿等等。只需要给这把武器添加相应的动作就可以了,代码很简单。在lightsword.lua 文件中添加tool组件
-- 添加工具组件inst:AddComponent("tool")-- 设置工具动作为砍砍inst.components.tool:SetAction(ACTIONS.CHOP)-- 设置工具动作为锤子inst.components.tool:SetAction(ACTIONS.HAMMER)-- 设置工具动作为挖掘inst.components.tool:SetAction(ACTIONS.DIG)-- 设置工具动作为网inst.components.tool:SetAction(ACTIONS.NET)-- 设置工具动作为挖矿inst.components.tool:SetAction(ACTIONS.MINE)
进入游戏测试
进入游戏打开调试控制台,输入 c_give(“lightsword”) 可以获取一把武器, 装备之后就可以看到效果了
设置耐久度
工具有耐久度的设定,使用的时候会消耗耐久度,可以根据不同的动作设置不同的耐久度消耗,比如砍一下 消耗2%, 挖一下矿消耗2%, 捕虫 消耗1%等,可以自由设定。当然也可以不设置耐久,这样就可以一直用
-- 添加有限使用组件inst:AddComponent("finiteuses")-- 设置最大使用次数为100inst.components.finiteuses:SetMaxUses(100)-- 设置当前使用次数为100inst.components.finiteuses:SetUses(100)-- 设置当使用完毕时的回调函数,移除实体inst.components.finiteuses:SetOnFinished(function (inst)inst:Remove()end)-- 设置各种动作的消耗-- 砍动作消耗3次使用inst.components.finiteuses:SetConsumption(ACTIONS.CHOP, 3)-- 锤子动作消耗2次使用inst.components.finiteuses:SetConsumption(ACTIONS.HAMMER, 2)-- 挖掘动作消耗2次使用inst.components.finiteuses:SetConsumption(ACTIONS.DIG, 2)-- 网动作消耗1次使用inst.components.finiteuses:SetConsumption(ACTIONS.NET, 1)