变量是 v4.6 中新增的用于存储信息的系统。使用变量系统,您可以存储和操作稍后可以在占位符或条件中使用的值。这些值可以是永久的或临时的。
变量类型 变量可以是几种类型中的一种,它是在使用setVariable机制初始化变量时定义的。类型通常是可以互换的,MythicMobs 会尽最大努力将某些变量应用于任何被询问的情况,但是如果您尝试将变量类型用于毫无意义的事情,它会抛出错误。 当您使用setVariable将 “type” 设置为 Integer 或 Float 时,将 “value” 设置为其他变量(例如 <caster.var.MM> * 2),设置的变量的值将是一个值:“<caster.var .MM>'s value * 2“,如果将”type“设置为String,则设置变量的值将是一个字符串:”<caster.var.MM> * 2“。
当前类型:
类型 | 描述 |
INTEGER | 整数 |
FLOAT | 带小数位的数字。 |
STRING | 一个词或一句话。 |
变量的“范围”是其中变量存在。并非所有范围都适用于所有情况(例如,条件可能没有施法者,而施法者是条件的目标)。 当使用 Setvariable 在 target 上创建变量时,只需要将var的 vaule设置 为“target.variable-name”(因为var的前缀是scope)这意味着你可以将 caster 的变量值复制到其他生物
变量范围:
类型 | Where It Goes |
SKILL | 在当前的技能树上。是暂时的,当前的技能队列结束时会消失。 |
CASTER | On the casting mob. |
TARGET | 在技能/条件的目标上。 |
WORLD | 现在的世界。 |
GLOBAL | 服务器。 |
用法
所有变量机制和条件都接受var=和scope=属性来确定您要使用的变量和位置。您还可以使用var=scope.variable_name速记范围。 以下示例将返回相同的内容:
setvariable{var=target.somevariable; ...} setvariable{var=somevariable;scope=target; ...}
变量机制是利用变量的特殊机制。它们可以针对实体、位置或任何内容,但目标可能会影响结果,具体取决于您使用的范围。例如,如果您的目标不是实体,那么尝试获取目标范围的变量显然会失败。
Mechanic | Description |
VariableSet | 初始化并设置一个变量。 |
VariableAdd | 添加到数字变量。 |
VariableSubtract | 从数字变量中减去。 |
VariableMath | 允许您使用数值变量进行计算 |
条件 | 描述 |
Variable Equals | 检查变量是否等于给定值。 |
Variable Is Set | 检查是否设置了变量。 |
Variable In Range | 检查数字变量是否在一个范围内。 |
可以在任何允许占位符的 MythicMobs 机制或值中引用变量。这通常使用格式<scope.var.[variable]> 完成。 使用占位符变量时,您还可以使用语法<scope.var.[variable]|[default]>指定一个“默认”值,如果变量未定义,则将使用该值。
message{m="Hello there, <target.var.title|wanderer>"} @trigger ~onInteract
在这个例子中,如果某个没有设置“title”变量的人右键单击 NPC,它会回复“你好,流浪者”。但是,如果我们这样做:
setVariable{var=target.title;value="Sir"} @trigger ~onInteract
…沿线的某个地方,即使有不同的生物,第一个生物也会说“你好,先生”。