====== 变量 variable ====== 变量是一个存储信息的系统。使用变量系统,您可以存储和操作稍后可以在占位符或条件中使用的值。这些值可以是永久的或临时的。 **变量类型** 变量可以是几种类型中的一种,它是在使用setVariable机制初始化变量时定义的。类型通常是可互换的,MythicMobs 会尽最大努力将某些变量应用于任何被询问的情况,但是如果您尝试将变量类型用于毫无意义的事情,它会出错。 **当前类型:** |INTEGER|整数型|整数| |FLOAT|浮点型|带小数点的数| |STRING|字符型|文字数字和符号| **变量范围:** 变量的“范围”是其中变量存在。并非所有范围都适用于所有情况(例如,条件可能没有施法者,而施法者是条件的目标)。 |SKILL|保存在当前的技能树上。总是暂时的,当前的技能队列结束时会消失。| |CASTER|保存在怪物上。| |TARGET|保存在技能/条件的目标上。| |TRIGGER|保存在触发技能的实体或玩家。| |PARENT|保存在实体的父级。| |WORLD|保存在现在的世界。| |GLOBAL|保存在服务器。| **变量可用的条件:** |Condition|Description| |Variable Equals|检查变量是否等于给定值。| |Variable Is Set|检查是否设置了变量。| |Variable In Range|检查数字变量是否在一个范围内。| **变量可用的占位符:** 可以在任何允许占位符的 MythicMobs 机制或值中引用变量。这通常使用格式 完成。 使用占位符变量时,您还可以使用语法指定一个“默认”值,如果变量未定义,则将使用该值。 ''message{m="你好, "} @trigger ~onInteract'' 在这个例子中,如果某个没有设置“title”变量的人右键单击 NPC,它会回复“你好,流浪者”。但是,如果我们这样做: ''setVariable{var=target.title;value="先生"} @trigger ~onInteract'' ...沿线的某个地方,即使有不同的怪物,第一个怪物也会说“你好,先生”。 ---- ===== 技能:设置变量SetVariable ===== 设置一个变量。变量可以是永久的或临时的,并且可以与条件或占位符结合使用来存储数据。 |变量|缩写|解释|默认值| |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 * "} @PIR{r=5} ---- ===== 技能:取消设置变量variableunset ===== 别名: varUnset、unsetVariable、unsetVar |属性|别名|描述|默认值| |variable|var|变量的名称。可以选择以范围为前缀。|| |scope|s|变量的范围,例如变量所在的位置。|SKILL| **例子** 这将从施法者取消设置测试施法者范围变量。 RemoveVariable: Skills: - variableUnset{var=caster.testing} @self ---- ===== 技能:变量加 VariableAdd ===== 将设定的数字添加到指定范围内的变量。仅适用于数字变量类型。 |属性|别名|描述|默认值| |var|v|变量的范围和名称|none| |amount|a|添加的数|1| **例子** Skills: - variableadd{var=skill.testVar;amount=1} ~onInteract - ... ---- ===== 技能:变量减 VariableSubtract ===== 减去指定范围内的变量的数量。仅适用于数字变量类型。 |属性|别名|描述|默认值| |var|v|变量的范围和名称|none| |amount|a|添加的数|1| **例子** Skills: - variablesubtract{var=skill.testVar;amount=1} ~onInteract - ... ---- ===== 技能:变量数学运算 VariableMath ===== 将变量设置为数学方程的结果,其中 'x' 是变量的当前值。 |属性|别名|描述|默认值| |var||变量的名称和作用域|| |equation|eq, e|要完成的操作,必须在引号内|| **例子** 将占位符存储在变量中 MMOVar: Skills: - variableMath{var=target.exp;equation="%mmocore_level%"} 做数学运算 Math1: Skills: - variableMath{var=caster.damage;equation="*5"} Math2: Skills: - variableMath{var=caster.speed;equation="(/5)+1"}