饥荒Mod 开发(二四):制作一把万能工具

饥荒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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581178.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2013年第二届数学建模国际赛小美赛A题数学与经济灾难解题全过程文档及程序

2013年第二届数学建模国际赛小美赛 A题 数学与经济灾难 原题再现: 2008年的市场崩盘使世界陷入经济衰退,目前世界经济仍处于低迷状态,其原因是多方面的。其中之一是数学。   当然,并非只有金融界依赖于并非总是可靠的数学模型…

编程艺术C代码学习注释

一、左旋转字符串 详情见文章参考&#xff1a; github:程序员编程艺术csdn:程序员编程艺术第一章 1.暴力移位 void leftShift1(char * arr, int n) //n位移动的位数 {size_t tmpLen strlen(arr);char tmpChar;int i, j;if (n > 0){for (i 0; i < n; i){tmpChar …

postman使用-03发送请求

文章目录 请求1.新建请求2.选择请求方式3.填写请求URL4.填写请求参数get请求参数在params中填写&#xff08;填完后在url中会自动显示&#xff09;post请求参数在body中填写&#xff0c;根据接口文档请求头里面的content-type选择body中的数据类型post请求参数为json-选择raw-选…

Flask 与微信小程序对接

Flask 与微信小程序的对接 在 web/controllers/api中增建py文件&#xff0c;主要是给微信小程序使用的。 web/controllers/init.py # -*- coding: utf-8 -*- from flask import Blueprint route_api Blueprint( api_page,__name__ )route_api.route("/") def ind…

软件测试/测试开发丨Pytest测试用例生命周期管理-Fixture

1、Fixture 用法 Fixture 特点及优势 1&#xff64;命令灵活&#xff1a;对于 setup,teardown,可以不起这两个名字2&#xff64;数据共享&#xff1a;在 conftest.py 配置⾥写⽅法可以实现数据共享&#xff0c;不需要 import 导⼊。可以跨⽂件共享3&#xff64;scope 的层次及…

Linux内核中断

Linux内核中断 ARM里当按下按键的时候&#xff0c;他首先会执行汇编文件start.s里面的异常向量表里面的irq,在irq里面进行一些操作。 再跳转到C的do_irq(); 进行操作&#xff1a;1&#xff09;判断中断的序号&#xff1b;2&#xff09;处理中断&#xff1b;3&#xff09;清除中…

2024美赛数学建模思路A题B题C题D题E题F题思路汇总 选题分析

文章目录 1 赛题思路2 美赛比赛日期和时间3 赛题类型4 美赛常见数模问题5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 美赛比赛日期和时间 比赛开始时间&#xff1a;北京时间2024年2月2日&#xff08;周五&#xff…

模型部署之——ONNX模型转RKNN

提示&#xff1a;这里可以添加学习目标 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、加载Docker镜像二、转换脚本 一、加载Docker镜像 加载rknn官方提供的基于x86架构下模型转换的镜像文件&#xff0c;生成…

【JavaScript】new原理解析

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

视频人脸识别马赛克处理

文章目录 前言一、实现思路&#xff1f;二、Coding三、实现效果 前言 前面几篇文章我们尝试了使用opencv完成图像人脸识别以及识别后贴图或者打马赛克的方法。 偶尔我们也会有需求在视频中将人脸马赛克化&#xff0c;opencv也提供了相应的方法来实现这个功能。 一、实现思路&a…

贪心算法的运用

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种常用的算法思想&#xff0c;通常用来解决最优化问题。可以使用贪心算法来解决一些问题&#xff0c;例如找零钱、任务调度等。 以找零钱为例&#xff0c;简单介绍一下贪心算法的应用 假设有一堆不同面额的硬币&#xff…

netty源码:(40)ReplayingDecoder

ReplayingDecoder是ByteToMessageDecoder的子类&#xff0c;我们继承这个类时&#xff0c;也要实现decode方法&#xff0c;示例如下&#xff1a; package cn.edu.tju;import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handle…

Ubuntu20.04服务器使用教程(安装教程、常用命令、故障排查)持续更新中.....

安装教程&#xff08;系统、驱动、CUDA、CUDNN、Pytorch、Timeshift、ToDesk&#xff09; 制作U盘启动盘&#xff0c;并安装系统 在MSDN i tell you下载Ubuntu20.04 Desktop 版本&#xff0c;并使用Rufus制作UEFI启动盘&#xff0c;参考UEFI安装Ubuntu使用GPTUEFI模式安装&am…

【IoT网络层】STM32 + ESP8266 +MQTT + 阿里云物联网平台 |开源,附资料|

目标&#xff1a;实现STM32连接阿里云物联网平台发送数据同时接收数据&#xff0c;IOT studio界面显示数据。具体来说&#xff1a;使用ESP8266 ESP-01来连接网络&#xff0c;获取设备数据发送到阿里云物联网平台并显示且oled显示屏当前的设备数据&#xff0c;通过IOT studio界面…

centos 安装 配置 zsh

centos 编译安装 zsh 和 配置 oh-my-zsh 下载 wget https://jaist.dl.sourceforge.net/project/zsh/zsh/5.9/zsh-5.9.tar.xz依赖 yum install ncurses-devel安装zsh 执行&#xff1a; tar -xvf zsh-5.9.tar.xz cd zsh-5.9 ./configure --prefix/usr/local/zsh5.9 make &am…

Golang学习之路一三基本数据类型

Golang学习之路一三基本数据类型 基本数据类型 int8 是有符号类型&#xff0c;uint8 是无符号类型 go 语言中不同类型的数据不能相加&#xff0c;会编译错误 类型名称长度零值说明bool布尔类型1false值为 true 或 false, 不可以用数字代表byte字节型10uint8rune字符类型40专…

Linux文件和目录管理命令---- less 命令

less 是一个强大的命令行工具&#xff0c;用于在 Unix 和 Unix-like 系统中查看&#xff08;不编辑&#xff09;大文件的内容。与 more 命令类似&#xff0c;但提供更多的功能和灵活性。在本博客中&#xff0c;本文将深入探讨 less 的各种用法&#xff0c;并展示相应的控制台命…

OpenHarmony城市技术论坛武汉站:探索大模型时代的终端操作系统创新

2023年12月23日下午,OpenHarmony城市技术论坛(以下简称“技术论坛”)——第6期(武汉站)于华中科技大学梧桐语问学中心明德报告厅圆满举办。本次技术论坛聚焦“大模型时代的系统软件”,旨在探索AI大模型在终端操作系统领域的创新趋势和挑战。论坛从“终端操作系统十大技术挑战”…

Ndk编译hevc静态库

源码下载: https://hg.videolan.org/x265 然后执行以下脚本: #!/bin/bash# 设置NDK路径&#xff0c;根据你的实际安装路径修改 NDK_PATH/mnt/c/Users/Administrator/ubuntu_dev/ndk/android-ndk-r21e# 设置目标平台和ABI版本&#xff0c;可以根据实际情况修改 aarch64-linux-…

最适合学生用的台灯有哪些?分享高口碑的学生护眼台灯

台灯是我们日常比较实用的一盏桌面照明灯具&#xff0c;不管是休闲看书、学习、办公都会用得上。如果使用了一款光源不好的台灯&#xff0c;时间长了可能就会影响我们的眼睛健康&#xff0c;特别是孩子的眼睛&#xff0c;还没有发育完全&#xff0c;影响更大。因此孩子学习的台…