我的世界里面玩家可以通过命令方块实现各种游戏功能,最近有玩家放出了CS的爆破系统和手雷系统实现方法,而枪械系统也给玩家带来了不少惊喜,下面是关于枪械系统的实现方法详解。
枪械系统实现方法
空白菌原本得作品
/scoreboard objectives add explode dummy 创建一个名为explode的变量
高频
/scoreboard players set @e[type=Arrow] explode 1 {inGround:1b} 给所有落在地上的箭的explode分数设置为1
/execute @e[type=Snowball] ~ ~ ~ kill @e[type=Arrow,r=3] 以雪球杀死周围半径3内的所有箭
/execute @e[type=Snowball] ~ ~1 ~ summon Arrow ~ ~ ~ 在雪球上方召唤一只箭
超高频
/execute @e[type=Snowball] ~ ~ ~ execute @e[type=Arrow,r=3] ~ ~ ~ tp @e[type=Arrow,r=0] @e[type=Snowball,r=3] 把离雪球最近的弓箭传送到雪球的位置
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ summon Creeper ~ ~ ~ {ignited:1,Fuse:3} 在explode分数为1的箭召唤一只待爆的苦力怕
/kill @e[type=Arrow,score_explode_min=1] 杀死所有explode分数为1的弓箭
如上,顺序必须十分严谨
而改进是基于上文之上,先是
/scoreboard objectives add quantity dummy 创造一个名为quantity的变量
然后将
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ summon Creeper ~ ~ ~ {ignited:1,Fuse:3} 指令的位置改为
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ effect @p[team=blue,r=1] 7 1 1 在explode分数为1的箭给半径为1内的蓝队玩家一个1秒的瞬间伤害效果
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ tp @p[team=red] ~ ~ ~ ~ ~-5 在explode分数为1的箭给最近的红队玩家角度上调5度(后座力)
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ clear @p[team=red] snowball 1 1 在explode分数为1的箭清除最近红队玩家的一个雪球
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ scoreboard players remove @p[team=red] quantity 1 在explode分数为1的箭给最近红队玩家的quantity分数减一
然后放一个中继器(档数就是换弹速度)
与/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ testfor @p[score_quantity_min=1,team=red](在explode分数为1的箭检测最近的红队玩家是否quantity分数不小于1)构成与门
/execute @e[type=Arrow,score_explode_min=1] ~ ~ ~ give @p[team=red] snowball 1 1 在explode分数为1的箭给予最近红队玩家一个雪球
而弹夹更是简单
/scoreboard objectives add 20 dummy 创造一个20的变量
/scoreboard objectives add number dummy 创造一个名为number的变量
/scoreboard objectives add quantity2 dummy 创造一个名为quantity2的变量
然后设置进入服务器就触发:/scoreboard players add @a number 1 给所有玩家的number分数加1
然后/scoreboard players set @a 20 20 给所有玩家的20变量设置为20
高频
/testfor @p[score_number_min=x,ccore_number=x] {SelectedItemSlot:5} 检测number分数为x的玩家是否选中6号物品栏(x为任意数字,或者用tellraw,不过我不会用这个指令)
-true
/clear @p[score_number_min=x,ccore_number=x] redstone 1 1 给number分数为x的玩家清除1格红石(这里的redstone只是代表弹夹,任何物品不限)
/scoreboard players operation @p[score_number_min=x,ccore_number=x] 20 -= @p quantity 将玩家的20变量减去quantity变量
/scoreboard players operation @p[score_number_min=x,ccore_number=x] quantity2 -= @p 20 将玩家的quantity2变量减去20变量
/testfor @p[score_number_min=x,ccore_number=x,score_quantity2_min=1] 检测玩家的quantity2变量是否不小于1
-true
/give @p[score_number_min=x,ccore_number=x] snowball 给玩家一个雪球
/scoreboard players set @p[score_number_min=x,ccore_number=x] quantity 20 将玩家的quantity分数设置为20
/scoreboard players set @a 20 20 给所有玩家的20变量设置为20