饥荒Mod 开发(二四):制作一把万能工具
2023-12-26 21:53:27
饥荒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")
-- 设置最大使用次数为100
inst.components.finiteuses:SetMaxUses(100)
-- 设置当前使用次数为100
inst.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)
文章来源:https://blog.csdn.net/wanliaixie/article/details/135230754
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!