C://
⊙v⊙ 发表于 2018-12-8 04:28
是不是结合一下就好了?...

丢药水,创一个丢药水的记分板判据

第一个问题算是回答的很好了,多谢老哥。原来NBT是可以读写的!这下子以后做东西就开窍了。
不过这个原理我似乎不敢妄言懂了。

档位是通过一个超精确的浮点数高度检测配合type检测判断玩家扔药水了(要是我想当然的推测对的话,这个指令能检测发出位置半格子内的),然后读取这个药水的motion再根据当前潜行分修改,做到换挡效果?
我想如果这样的话,把这个motion记录下来,再生成一个生物(在这个手雷情景下就是creeper)并赋予motion给它就得了。档位也可以做成跟潜行分做成一个函数关系,做出更好的蓄力投掷效果。
但是这里面的基本机制我不是很懂。第一段的那个function部分,它可以监听诸如药水扔出这类的事件时启动吗?如果不是的话,要怎么触发呢?旧思路可以通过高频检测药水实体有无某个tag——》有则不管没有就进行motion运算并加tag做到,但要是能不用高频就太好了。
望能赐教万分感谢。

C://
⊙v⊙ 发表于 2018-12-8 04:28
是不是结合一下就好了?...

丢药水,创一个丢药水的记分板判据

版本自然是1.13.啊呀缓降药水配鞘翅烟花爽的爆炸,沉迷和小伙伴们玩自制pvp中,才想弄一个爆破职业的。

⊙v⊙
本帖最后由 ⊙v⊙ 于 2018-12-8 12:07 编辑
C:// 发表于 2018-12-8 05:45
第一个问题算是回答的很好了,多谢老哥。原来NBT是可以读写的!这下子以后做东西就开窍了。
不过这个原理 ...

scoreboard的判据,有些是自动帮你计算的。物品的使用就是如此。

我又想了一下,不是太讲究的话还是利用原版已有的功能更好,也能让操作更简便。按蹲下时间控制力度太蠢了...
  1. #设立判据
  2. #可以使用/scoreboard objectives setdisplay sidebar helloworld 查看此分数
  3. #但是后面弄了分数reset,游戏里可能并不会看到...(因为不会显示没有的分数)
  4. scoreboard objectives add helloworld minecraft.used:minecraft.bow
复制代码
  1. #持续执行这条,可放在紫色命令块里
  2. #能放在mcfunction里的话就在好不过了
  3. #~ ~1.52 ~是弓发出的起始位置
  4. execute as @a[scores={helloworld=1..}] at @s positioned ~ ~1.52 ~ as @e[type=arrow,distance=..0.5,limit=1] at @s run function world:foo
复制代码
  1. #生成丢出物
  2. summon minecraft:creeper ~ ~ ~ {Tags:["boom","bar"],DeathLootTable:"empty",Invulnerable:1b}

  3. #获取Motion
  4. execute store result entity @e[tag=bar,distance=..0.5,limit=1] Motion[0] double 0.000006 run data get entity @s Motion[0] 100000
  5. execute store result entity @e[tag=bar,distance=..0.5,limit=1] Motion[1] double 0.000006 run data get entity @s Motion[1] 100000
  6. execute store result entity @e[tag=bar,distance=..0.5,limit=1] Motion[2] double 0.000006 run data get entity @s Motion[2] 100000

  7. #结束处理
  8. tag @e[tag=bar] remove bar
  9. kill @s
  10. scoreboard players reset @a[scores={helloworld=1..}] helloworld
复制代码
最后就是按个人喜好进行调整,做爆破处理了...
比如
execute as @e[tag=boom,nbt={OnGround:1b}] run data merge entity @s {NoAI:1b}
execute as @e[tag=boom,nbt={OnGround:1b}] run data merge entity @s {NoAI:1b,ignited:1b,ExplosionRadius:1b,Fuse:5s}
execute as @e[tag=boom,nbt={OnGround:1b}] run data merge entity @s {ignited:1b,Fuse:20s,ExplosionRadius:3b}
execute as @e[tag=boom] run data merge entity @s {ignited:1b,Fuse:100s,ExplosionRadius:1b,powered:1b}
execute as @e[tag=boom,nbt={OnGround:1b}] run data merge entity @s {NoAI:1b,Fuse:5s,powered:1b,ignited:1b}
...


也可以制作根据持有的手切换模式。比如,左手发出着陆后数秒爆炸的creeper,
右手则是发出后立刻爆炸的强大威力creeper...
另外,还要做一个手持物的检测,比如只当玩家手持的弓有特殊tag时才执行function...



C://
⊙v⊙ 发表于 2018-12-9 05:51
scoreboard的判据,有些是自动帮你计算的。物品的使用就是如此。

我又想了一下,不是太讲究的话还是利用 ...

非常感谢。不过我还是想问,触发只能依靠高频命令方块或者function内置的高频检测了吗?我去自学了一下发现MC似乎现在还没有直接检测当什么事情发生的功能。

⊙v⊙
本帖最后由 ⊙v⊙ 于 2018-12-8 18:25 编辑
C:// 发表于 2018-12-8 18:05
非常感谢。不过我还是想问,触发只能依靠高频命令方块或者function内置的高频检测了吗?我去自学了一下发 ...

把高频的命令数量和所需要的检测尽可能限制到最少吧...
execute if entity @a[scores={helloworld=1..}] run function world:main


对进度并不是很了解,甚至不知道这样做是否和在minecraft:tick内tag mcfunction一样,所以...
进度里面有个minecraft:tick的trigger。这个tick等同于高频,然后reward run function...
@SPGoding  快来救我!


第一页 上一页 下一页 最后一页