欢迎光临散文网 会员登陆 & 注册

MINECRAFT数据包-计分板[计时]

2022-07-26 17:34 作者:wijfjka  | 我要投稿

注:本章学习需要一定命令基础及对数据包结构有一定了解!!!

上一章我们讨论了战利品表与随机数相关内容。本章我们来讨论计分板相关的内容。

在上一章中,我们完成了一个实例 [雷神之怒] 技能:

[+]使用钻石斧攻击有30%概率召唤闪电

本章我们将为其添加一个5秒的技能触发冷却。

首先,我们需要新建一个记分板用于存储时间值。


并且,我们为技能的触发添加了timer值为0的限制条件,在data/test/functions/lightning/summon.function中写入以下内容:

当然,你也可以将timer分数限制写在进度中(不是重点)

接下来,我们就需要解决计时问题。

这时,我们发现有两种解决的方法。

[1]技能执行后将实体timer值设为1,再使用schedule指令延时5秒设置timer分数为0

[2]技能执行后将实体timer值设为1000,再在无条件循环(tick函数)或者条件循环函数(根据需求确定)中每tick将timer分数大于等于1的玩家的timer值减1,5秒过后正好为0

显然,在整个处理的流程中,方法1更为简单。

这时我们需要注意schedule指令的一个特性:

在schedule指令中延时执行的函数不会在原执行实体身上执行

这样说可能不够明白,接下来我们看一个例子:

新建一个schedule.mcfunction函数文件,写入

在游戏内执行

在1秒后你会发现,你并没有获得10秒速度2效果。

所以,方法1是不能行的(不考虑穷举的情况下)

接下来我们主要实现方法2

在data/test/functions/lightning/summon_1.function中写入以下内容

在#minecraft:tick(无条件循环函数)中写入以下内容

这样,我们便完成了技能冷却的制作。

最后,觉得有用就点个赞吧QwQ


MINECRAFT数据包-计分板[计时]的评论 (共 条)

分享到微博请遵守国家法律