本帖最后由 MsYqgzt 于 2016-4-16 18:23 编辑

     有同学要求发个原理,于是我第一次在技巧版块发一帖~
相关链接:【1.8原版小游戏地图】Hot potato-烫手的山芋

     主要就讲解下如何实现攻击其他玩家后山芋的交换判定~
[TNT]前期准备
    关闭血量自动恢复和自动生怪,两个队伍计分板【红-R,蓝-B】,一个生命值变量,一个自变量【倒计时系统】,和一些特定队伍玩家自带的buff
  1. /scoreboard teams add R Red
复制代码
  1. /scoreboard teams add B Blue
复制代码
  1. /scoreboard objectives add Health health HP
复制代码
  1. /scoreboard objectives add time dummy <显示名字>
复制代码

  给于所有人抗性提升3,给红队力量5,给予所有人速度<这个不重要>。

  这么设计的目的是让玩家减少摔落等外来伤害,被攻击时扣除的血量是我们想要的数值,假定玩家扣除2心整,也就是剩余16血,这时生命值判定计分板就会改变被攻击玩家数值为16。
[TNT] 系统讲解
      这是帖子中的指令单独提取的形式,主要判定就是它,




用一个高频控制【大概样子,延迟没有做调整】,之前是先选取随机一名玩家作为红队【山芋持有者】 ,剩余加入蓝队【逃跑者】。在期间高频开启,探测生命值为16的队伍为蓝队的玩家,探测成功后,先将所有游戏中的玩家加入蓝队,紧接着把生命值为16的玩家加入红队,删除指定道具-烫手的山芋,在进行后续的给予道具,头戴TNT和提示 等一系列操作,在用高频不断往红队头上刷出小烟雾效果,插件效果就展现出来了~


[TNT] 系统指令



从高频开始,
白色指令部分:
  1. /testfor @a[team=B,score_health=16]
复制代码

探测所有队伍为蓝队,生命值为16的玩家

橙色部分指令:

  1. /scoreboard teams join B @a
复制代码
探测成功后,将所有玩家加入蓝队
  1. /clear @a minecraft:baked_potato
复制代码

同时清除所有玩家背包的烤地瓜


紫色部分指令:
  1. /scoreboard teams join R @a[score_health=16]
复制代码
将生命值为16的玩家加入
红队

最后的蓝色部分指令

  1. /effect @a minecraft:regeneration 1 25
复制代码
给予所有玩家生命恢复效果

  1. /replaceitem entity @p[team=R] slot.armor.head tnt
复制代码
红队玩家头上方块替换为TNT
  1. /replaceitem entity @a[team=B] slot.armor.head air
复制代码
将所有蓝队玩家头上方块替换为空气


  1. /give @a[team=R] minecraft:baked_potato {display:{Name:烫手的山芋},ench:[]}
复制代码
给予红队玩家一个烤地瓜

  1. /say [Hot potato]: @p[team=R] 接到了山芋 !
复制代码

结尾的系统提示


@Man_Tou_MAX @chenle @Rui_Rui @spore520

======================END==========================