更多属性效果关键词
2020/11/07 日 1.1.0 版本内容更新
作者屁话
虽然现在关键词不多,但大部分效果都可以做出,当前提你要会~ 关键词后期也会慢慢更新增加,所以问题不大哈哈哈
下文所提到的 变量值 均为 value 关键词所计算后的变量名,例如 "value test [{attacker 生命力}]" 那么 test 就是变量值 以下关键词格式中出现的 "变量值" 为 value 关键词所设 变量名 格式可以是 {v:变量名} 或 变量名 (1.0.8)
条件关键词列表
关键词
格式
说明
chance
chance 变量值,是否继续执行(true/false) [跳转]
触发几率
cd
cd 秒 [跳转]
触发冷却时间
premise
premise 变量值 运算符 变量值 满足要求,未满足要求(true/false) [跳转]
条件
type (1.0.4)
type 对象 [类型,类型,...] [跳转]
对象类型判断
permission(1.0.7)
permission 对象 是否需要全部一样(true/false) [权限,权限2...] [跳转]
判断权限
#[跳转] 这个部分可有可无,格式为 "~[行数]" 可以跳转到 run 列表内的指定一行
#具体例子 [判断攻击者物理伤害最大值是否满足1000] 并执行对应关键词
run:
0 - "value maxDamage [{attacker 物理伤害[1]}]"
1 - "premise maxDamage >= 1000 true,false ~4"
2 - "message attacker [我满足 1000 点物理伤害要求,我当前最大物理伤害 {v:maxDamage}]"
3 - "end"
4 - "message attacker [不满足 1000 点物理伤害要求,我当前最大物理伤害 {v:maxDamage}]"
#以上例子使用了 premise 条件关键词
#如果满足 premise 的要求则返回 true 继续按顺序执行,但在第3行有这 "end" 关键词则停止了接下来的
#执行
#如果不满足 premise 的要求则返回 false 如果没有[跳转]则停止执行,如果有[跳转]则会跳转至设置的
#那行,例如我上面写了 ~4 那么就会跳到第4行开始执行,跳过2,3行的执行
特殊关键词列表
关键词
格式
说明
end
end
结束执行
message
message 对象 [内容]
发送消息
title
title 对象 [大标题,小标题,淡入,显示,淡出]
给指定对象发送TITLE消息 (支持value变量)
sound
sound 对象 [音效类型,音量,音调]
发送音效
lightning(1.0.3)
lightning 对象
触发一次雷击特效,无伤害
command(1.0.3)
command 对象 [指令,指令,...]
触发指令
random(1.0.4)
random [跳转行数,跳转行数,...]
随机跳转到指定行数
message / title / command 关键词都可以使用 {v:变量名} {e:对象} 等变量 {e:对象} 获取指定对象的名字 例如 "command entity [fly,say &f{e:attacker}说: &eAP牛逼]"
关键词列表
关键词
格式
说明
cancelled
cancelled 对象
取消指定对象本次属性
heal
heal 对象 变量值
为指定对象触发一次治疗
damage
damage <add/take/set> <变量值> <是否无视防御属性抵消 (true/false)>
本次攻击伤害变动
attribute
attribute 源 对象 [属性,属性,...] 持续时间["0"为永久,支持变量值]
增加属性,源可以为任意字符,别重 复就可以
update(1.0.3)
update 对象 attribute [属性 值,属性 值,...]
更新玩家指定属性的属性值
attribute-set
(1.0.6)
attribute-set 对象 [属性 值,属性 值,...]
设置此次事件指定对象的指定属性的属性值
关键词 attribute / update 与 message 的 [] 内的内容容支持使用 {v:变量名} {e:对象} 来获取变量值及对象名字
#具体例子
#生命吸取值=被攻击者最大生命力的百分之10%
#提高攻击者本次伤害,提高的伤害值来自 物理伤害最大值的百分之50%
#并提高攻击者100点生命力,同时降低被攻击者100点生命力,持续10秒,并发送对应消息
#该效果冷却 20 秒
run:
- "cd 20"
- "value vDamage [{attacker 物理伤害[1]}/2]"
- "value vHealth [{entity 生命力}*10/100]"
- "damage add vDamage"
- "attribute A生命提升 attacker [生命力: {v:vHealth}] 10"
- "attribute B生命降低 entity [生命力: -{v:vHealth}] 10"
- "message attacker [&6伤害提高了{v:maxDamage}点伤害,并吸取了对方10%生命力持续10秒]"
- "message attacker [&6对方吸取了你10%点生命力持续10秒,并额外承受了{v:maxDamage}点伤害]"
attribute 与 update 关键词的区别在哪?
相对于 attribute 关键词 update 关键词更适合 RUNTIME 类型,他不会出现属性无限循环叠加的问题,属性更新后就自动清除 update 此次所增加的属性,这个 update 关键词也只适用于 RUNTIME 类型 例如 "update entity attribute [生命力 100,物理伤害 -100]" 就可以增加 100 点生命力并扣除 100 点伤害。
#例如做一个 "生命力加成" 的属性
#假设自身体有 100 点生命力,然后 "生命力加成" 有 50% 所以最终额外加成 50 点生命力
AttributeExtension:
test1:
key: "生命力加成"
placeholder: "test4"
run:
- "value defaultHealth [{entity 生命力[1]}]"
- "value addtiton [{entity 生命力加成}]"
- "value value [{value defaultHealth}*{value addtiton}/100]"
# 额外加成 50 点生命力
- "update entity attribute [生命力 {v:value}]"
type: "RUNTIME"
#那如果把 update 改成 attribute 关键词会出现什么问题?
AttributeExtension:
test1:
key: "生命力加成"
placeholder: "test4"
run:
# 每次 attribute 加上的额外加成生命力,这里的 {entity 生命力[1]} 同样会读取到
- "value defaultHealth [{entity 生命力[1]}]"
- "value addtiton [{entity 生命力加成}]"
- "value value [{value defaultHealth}*{value addtiton}/100]"
# 第一次的计算值是 "100 * 50 = 50"
# 第二次的计算值是 "150 * 50 = 75"
# 以此类推,你会发现生命力一直循环则往上叠加,无限循环叠加就是这个
- "attribute 生命力加成 entity [生命力 {v:value}] 0"
type: "RUNTIME"
# update 关键词会在更新属性时自动释放(清除)上次所增加的值,所以不会出现疯狂叠加的问题
#
# attribute 是不是一定会出现这种问题?
# 不是,如果你设了 cd冷却 及 attribute持续时间(time) 那么只要 cd 跟 time 时间不同就不会有问题
# 例如 "冷却10秒 持续时间8秒" 是不会出现这种问题的,但 "冷却10秒 持续时间10秒" 这样是会出问题的
最后更新于
这有帮助吗?