有同学要求发个原理,于是我第一次在技巧版块发一帖~
相关链接:【1.8原版小游戏地图】Hot potato-烫手的山芋
主要就讲解下如何实现攻击其他玩家后山芋的交换判定~
[TNT]前期准备
关闭血量自动恢复和自动生怪,两个队伍计分板【红-R,蓝-B】,一个生命值变量,一个自变量【倒计时系统】,和一些特定队伍玩家自带的buff
- /scoreboard teams add R Red
- /scoreboard teams add B Blue
- /scoreboard objectives add Health health HP
- /scoreboard objectives add time dummy <显示名字>
给于所有人抗性提升3,给红队力量5,给予所有人速度<这个不重要>。
这么设计的目的是让玩家减少摔落等外来伤害,被攻击时扣除的血量是我们想要的数值,假定玩家扣除2心整,也就是剩余16血,这时生命值判定计分板就会改变被攻击玩家数值为16。
[TNT] 系统讲解
这是帖子中的指令单独提取的形式,主要判定就是它,
用一个高频控制【大概样子,延迟没有做调整】,之前是先选取随机一名玩家作为红队【山芋持有者】 ,剩余加入蓝队【逃跑者】。在期间高频开启,探测生命值为16的队伍为蓝队的玩家,探测成功后,先将所有游戏中的玩家加入蓝队,紧接着把生命值为16的玩家加入红队,删除指定道具-烫手的山芋,在进行后续的给予道具,头戴TNT和提示 等一系列操作,在用高频不断往红队头上刷出小烟雾效果,插件效果就展现出来了~
[TNT] 系统指令
从高频开始,
白色指令部分:
- /testfor @a[team=B,score_health=16]
探测所有队伍为蓝队,生命值为16的玩家
橙色部分指令:
- /scoreboard teams join B @a
- /clear @a minecraft:baked_potato
同时清除所有玩家背包的烤地瓜
紫色部分指令:
- /scoreboard teams join R @a[score_health=16]
最后的蓝色部分指令:
- /effect @a minecraft:regeneration 1 25
- /replaceitem entity @p[team=R] slot.armor.head tnt
- /replaceitem entity @a[team=B] slot.armor.head air
- /give @a[team=R] minecraft:baked_potato {display:{Name:烫手的山芋},ench:[]}
- /say [Hot potato]: @p[team=R] 接到了山芋 !
结尾的系统提示
@Man_Tou_MAX @chenle @Rui_Rui @spore520
======================END==========================