C://
其实吧,做个PvP手雷做法有很多,但这个问题的确困扰到我了。
服务器资源不足,希望尽量减少高频检测,所以在做手雷的时候曾经希望能用在实体nbt中motion里面写极坐标之类的方法,做出投掷creeper避免高频(最后发现不大可能)。
现在我认怂搞滞留药水高频判断手雷了,但我还是想问问有没有可能在尽量减少高频和function嵌套、保持流畅(不做连续tp)的前提下:
1.读取一个实体的motion等nbt值进入记分板,或者用记分板数据修改nbt?
2.让生存玩家如同投掷物品一样抛物线投掷生物,且可以设定投掷的力量?(能在预设档位间切换就可以)


⊙v⊙
本帖最后由 ⊙v⊙ 于 2018-12-7 10:34 编辑

是不是结合一下就好了?...

丢药水,创一个丢药水的记分板判据
创一个mcfunction当药水丢出时执行,
/execute as @e[...] store result entity @s Motion[0] double 0.00001 run data get entity @s Motion[0] 150000
(获取这个丢出物当前x轴Motion的数值,放大1.5倍后,丢回原位)

力度控制的话用档位设置感觉不方便,可以改为shift(潜行)键,创建判断潜行的记分板判据。
根据不同的潜行分数执行不同的Motion倍数修改...

/execute as @a[scores={shift=1..50,throw=1..}] at @s positioned ~ ~1.319999992847443 ~ as @e[type=<药水...>,limit=1,distance=..0.5] store result entity @s Motion[0] double 0.00001 run data get entity @s Motion[0] 150000
/execute....scores={shift=51..100.....run data get entity @s Motion[0] 175000
/execute....scores={shift=101..150.....run data get entity @s Motion[0] 200000
...
记得也要修改Motion[1]和Motion[2]


另外,~ ~1.319999992847443 ~是玩家Q键丢出时物品所在的坐标,扔药水的话不知道是不是也是从这个坐标出发,可能有误
另外...如果还要作到能反弹的话...参考这个http://www.mcbbs.net/thread-776362-1-1.html




另外这是什么版本?(要凉...)

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

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

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

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

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