变量是一个存储信息的系统。使用变量系统,您可以存储和操作稍后可以在占位符或条件中使用的值。这些值可以是永久的或临时的。
变量类型
变量可以是几种类型中的一种,它是在使用setVariable机制初始化变量时定义的。类型通常是可互换的,MythicMobs 会尽最大努力将某些变量应用于任何被询问的情况,但是如果您尝试将变量类型用于毫无意义的事情,它会出错。
当前类型:
INTEGER | 整数型 | 整数 |
FLOAT | 浮点型 | 带小数点的数 |
STRING | 字符型 | 文字数字和符号 |
变量范围:
变量的“范围”是其中变量存在。并非所有范围都适用于所有情况(例如,条件可能没有施法者,而施法者是条件的目标)。
SKILL | 保存在当前的技能树上。总是暂时的,当前的技能队列结束时会消失。 |
CASTER | 保存在怪物上。 |
TARGET | 保存在技能/条件的目标上。 |
TRIGGER | 保存在触发技能的实体或玩家。 |
PARENT | 保存在实体的父级。 |
WORLD | 保存在现在的世界。 |
GLOBAL | 保存在服务器。 |
变量可用的条件:
Condition | Description |
Variable Equals | 检查变量是否等于给定值。 |
Variable Is Set | 检查是否设置了变量。 |
Variable In Range | 检查数字变量是否在一个范围内。 |
变量可用的占位符:
可以在任何允许占位符的 MythicMobs 机制或值中引用变量。这通常使用格式<scope.var.[variable]> 完成。
使用占位符变量时,您还可以使用语法<scope.var.[variable]|[default]>指定一个“默认”值,如果变量未定义,则将使用该值。
message{m=“你好, <target.var.title|流浪者>”} @trigger ~onInteract
在这个例子中,如果某个没有设置“title”变量的人右键单击 NPC,它会回复“你好,流浪者”。但是,如果我们这样做:
setVariable{var=target.title;value=“先生”} @trigger ~onInteract
…沿线的某个地方,即使有不同的怪物,第一个怪物也会说“你好,先生”。
设置一个变量。变量可以是永久的或临时的,并且可以与条件或占位符结合使用来存储数据。
变量 | 缩写 | 解释 | 默认值 |
name | variable, n, var, key, k | 变量的名称。可以选择以范围为前缀。 | |
value | val | 要将变量设置为的值。必须适用于类型,否则技能将失败。如果使用空格,应该用双引号括起来。值还可以包括占位符,甚至来自 PlaceholderAPI。 | |
scope | s | 变量的范围,例如变量所在的位置。 | SKILL |
type | t | 变量的类型。 | INTEGER |
save | 变量是否应在重新加载、重新启动和断开连接之间保存。不适用于 SKILL 范围的变量。 | false | |
duration | d | 变量存在时间(刻)。不适用于 SKILL 范围的变量。 | Infinite |
例子
在这个例子中,目标玩家每 10 分钟只会听到一次附近任意数量的熊的咆哮。
熊: Skills: - skill{s=咆哮} @PlayersInRadius{r=40} ~onTimer:60 咆哮: TargetConditions: - variableEquals{var=target.heardbear;value="yes"} cancel #heardbear=yes不执行下面的技能 Skills: - message{m="&7You hear a growling noise..."} - setvariable{var=target.heardbear;value="yes";duration=6000} #heardbear设置为yes,持续6000刻
在这个例子中,一个来自 MMOItems (这是另外一个付费插件)的占位符被存储在一个 int/float 变量中。
PlaceholderDamage: Skills: - setvariable{var=caster.new_skill_damage;value="%mmoitems_stat_skill_damage%";type=INTEGER} @self - damage{a="100 * <caster.var.new_skill_damage>"} @PIR{r=5}
别名: varUnset、unsetVariable、unsetVar
属性 | 别名 | 描述 | 默认值 |
variable | var | 变量的名称。可以选择以范围为前缀。 | |
scope | s | 变量的范围,例如变量所在的位置。 | SKILL |
例子 这将从施法者取消设置测试施法者范围变量。
RemoveVariable: Skills: - variableUnset{var=caster.testing} @self
将设定的数字添加到指定范围内的变量。仅适用于数字变量类型。
属性 | 别名 | 描述 | 默认值 |
var | v | 变量的范围和名称 | none |
amount | a | 添加的数 | 1 |
例子
Skills: - variableadd{var=skill.testVar;amount=1} ~onInteract - ...
减去指定范围内的变量的数量。仅适用于数字变量类型。
属性 | 别名 | 描述 | 默认值 |
var | v | 变量的范围和名称 | none |
amount | a | 添加的数 | 1 |
例子
Skills: - variablesubtract{var=skill.testVar;amount=1} ~onInteract - ...
将变量设置为数学方程的结果,其中 'x' 是变量的当前值。
属性 | 别名 | 描述 | 默认值 |
var | 变量的名称和作用域 | ||
equation | eq, e | 要完成的操作,必须在引号内 |
例子 将占位符存储在变量中
MMOVar: Skills: - variableMath{var=target.exp;equation="%mmocore_level%"}
做数学运算
Math1: Skills: - variableMath{var=caster.damage;equation="<caster.hp>*5"} Math2: Skills: - variableMath{var=caster.speed;equation="(<caster.var.age>/5)+1"}