变量 - woshiermuqwq/mythic-chinese GitHub Wiki
变量于 MM 4.6 加入, 于 MM 4.10 成熟
同时属于付费版内容
变量与占位符是俩种不同事物
变量被设置后, 通过占位符的形式读取
变量格式: 变量类型.变量名
, 占位符格式: 变量类型.var.变量名
诸如 <caster.name>/<trigger.name> 的占位符 请见-> 点我
变量是此插件有关机制的最难的内容,您可以设置变量以存储数值或字符
也可以设置变量以存储其它变量的值,所设置的变量可以是暂时的.
调用不存在的变量, 该占位符会返还"Null"
在 MM 4.14.2, 返还的是"Undefined", 而不是"Null"
变量有3种类型.
类型 | 描述 |
---|---|
INTEGER | 整数. |
FLOAT | 浮点数 |
STRING | 字符串 |
Float为浮点数类型,通俗来讲就是小数.
当类型为 Integer 或 Float 时,变量值只能是数值.
但在Set Variable时
变量值可为 变量值为纯数字(可包含运算符号)的占位符.
当类型为String时,变量值没有任何限制.
但使用Set Variable时, 若变量值填写 其它类型为 Integer或Float 的变量
所设置变量的值将会是 其它类型为Integer或Float 的 变量的变量名 , 而不是变量值
若变量值填写 其它类型为String的变量,所设置变量的值将包含 其它类型为String的变量的变量值, 而不是变量名
Skills:
- setvariable{var=caster.变量A;type=float;value="1"} @self
- setvariable{var=caster.变量B;type=string;value="<caster.var.变量A>"} @self
激活上述技能组之后,变量B的值将为"<caster.var.变量A>",而不是"1",因为在设置变量B时
变量值为 类型为Float的变量A的变量名 而不是 类型为Float的变量A的变量值.
若这么写,变量B的变量值将会变为"1",而不是上述的"<caster.var.变量A>":
Skills:
- setvariable{var=caster.变量A;type=string;value="1"} @self
- setvariable{var=caster.变量B;type=string;value="<caster.var.变量A>"} @self
相同,Integer与Float类型的变量无法读取与 <target.name> 一样,变量值为非纯数字的变量.
变量有4种种类:
种类 | 描述 |
---|---|
SKILL | 作用于技能组 |
CASTER | 作用于施法者 |
TARGET | 作用于技能目标 |
WORLD | 作用于世界 |
GLOBAL | 作用于服务器 |
且在使用Set Variable时就确立了
变量种类,变量种类的作用有俩种:
- 配合占位符: <变量种类.var.变量名> 时,变量应该读取谁身上的变量
- 配合技能: setVariable时,变量应该存储在谁身上.
某技能组:
Skills:
- setvariable{var=caster.变量A;type=float;value="1"} @self
- setvariable{var=target.变量B;type=float;value=<caster.var.变量A>} @target
施法者A将自身当前目标身上的 变量B 的值设为"1"
为何变量B在自身当前目标身上?
因为设置变量B时scope(变量名的前缀)为target,target作用于技能目标,而技能目标就是@target,也就是自身当前目标.
为何变量B的值为"1"?
因为设置变量B时value填写了 <caster.var.变量A>,也就是所设置变量的值为 施法者身上的变量A的值.
当激活此技能组后,当前目标作为另一个施法者时,当前目标身上被设置的变量如何调用?
使用占位符: <caster.var.变量B>是因为之前施法者A将变量设置到了"target"身上
(为何在target身上请看第一个解答) 而现在,"target"作为一个施法者,应该在调用
变量B时将scope(变量名前缀)设为caster,以确认要调用的变量是自己身上的.
技能名 | 描述 |
---|---|
Variable Set | 创建指定数值变量(存在则替换) |
Variable Add | 增加指定数值变量的变量值 |
Variable Subtract | 减少指定数值变量的变量值 |
Variable Math | 计算指定数值变量的变量值 |
条件名 | 描述 |
---|---|
Variable Equals | 若指定变量的值为 |
Variable Is Set | 若拥有指定变量 |
Variable In Range | 若指定变量的值在范围内 |
出生后32格内的每个玩家都会为施法者提供10%的额外最大生命(4.12)
测试:
Type: husk
Skills:
- skill{s=[
- setvariable{var=caster.amount;value=<skill.targets>} @playersinradius{radius=32}
- delay 1
- setmaxhealth{amount=<caster.mhp>*(1+0.1*<caster.var.amount>)} @self
- heal{amount=9999} @self
]} @self ~onspawn
4.12以下
测试:
Type: husk
Skills:
- skill{s=[
- sudoskill{cat=true;s=[ - modifytargetscore{o=amount;v=1;a=add} @trigger ]} @playersinradius{radius=32}
- delay 1
- setmaxhealth{amount=<caster.mhp>*(1+0.1*<caster.score.amount>)} @self
- heal{amount=9999} @self
]} @self ~onspawn
Skills:
- damage{a=占位符名} @target
这里用读取原版等级做示范
Skills:
- setvar{var=caster.somevar;v="%player_level%"} @trigger ~onDeath
死亡后读取击杀者的原版等级