1. 主页
  2. 文档
  3. GQ自定义命令
  4. 自定义功能
  5. 伤害与击杀检测

伤害与击杀检测

在0.6版本后加入了自定义选择器,支持精确检测伤害与击杀(在继续后面的内容之前,请先学习自定义选择器的使用方法)

首先来回顾几个gq属性

gquid该实体uid
gkatkt该实体最后一次对造成伤害实体的uid
gkonatk该实体最后一次受伤来源实体的uid
gkkillt该实体最后一次击杀实体的uid
gkonkill该实体最后一次被击杀者的uid

1.也就是说实体A攻击实体B后,实体A的gkatkt为实体B的uid,实体B的gkonatk为实体A的uid

2.当实体A击杀实体B后(实体B若不可复活已被移除则无属性),实体A的gkkillt为实体B的uid,实体B的gkonkill为实体A的uid

接下来我们假设一个情景,玩家A攻击了一下玩家B:

//首先我们设计选择器,通过玩家A选择到玩家B,也就是执行方是玩家A

@a[var.gquid=$self.var.gkatkt]

我们来一步步解析这个选择器:

1.首先选择器使用@a,将范围限制为玩家

2.参数使用了gquid,这样会精确选择到某一个玩家,根据自定义选择器语法,参数名为var.gquid

3.参数值使用了变量的取值运算,取了执行者的gkatkt属性,前面回顾过,这个属性记录上次攻击实体的uid

4.如此一来,就可以精确无误选择到受击的玩家了

//我们现在组合命令,假设执行者为玩家A

/gkrun "@a[var.gquid=$self.var.gkatkt]" "execute as @s run say 我被打了“

如此以来,玩家B会输出一句“我被打了”


击杀检测也是如此原理,替换下变量即可

/gkrun "@a[var.gquid=$self.var.gkkillt]" "execute as @s run say 我被杀了“

我们要如何帮助您?