对于一个正常的程序语言,变量是一个必不可少的概念,Macro Mod的变量系统比较类似于php的变量,无需声明就可以直接赋值,变量将会在第一次赋值时被创建。不过变量名不能随便取,因为Macro Mod的变量会根据名字决定变量的数据类型,数据类型一共有三种: counter:其实就是整数,取值范围是-2147483647~-2147483647,所有以“#”开头的变量都是counter类型,例如:#some_thing string:喜闻乐见的字符串类型,其对应的变量以“&”开头,并且常量是用""标记的,例如:&a_string="Hello"; flag:其实就是布尔类型,值只能为“True”或“False”,不加前缀(以字母开头)的变量就是flag类型,例如:triggerflag 值得注意的是这里的变量类型里没有小数的处理办法,事实上Macro Mod不支持小数的处理,并且一切用到小数的运算都只会返回0(但是你可以拿一个字符串存小数)。如果遇到一定要用小数计算的情况只能办法操作字符串,拆分以后成为整数再运算,然后再拼装回去。
变量名的规则: 除了用来表示类别用的前缀以外,变量名只能包含小写字母,数字,和下划线。大写字母是不允许的,而且变量必须以一个小写字母开头,下划线和数字都是不合法的。
全局变量: 通常的变量在退出这个宏的时候就会被销毁,如果想要把一个变量保存起来供别的宏或是下次运行时启动,就需要用到全局变量。以“@”开头的变量都是全局变量,不过“&”和“#”前缀同样不可省略,他们需要跟在“@”后面,例如:@#global_number, @&a_string, @flag_global。 全局变量将会保存在硬盘上的一个文件里面,所以即使是关闭游戏再开其内容还是会保存下来。
给变量赋值: 变量的赋值方法有两种,第一种是使用“=”赋值,第二种是使用SET语句进行赋值,语法是SET(变量,[值]); SET如果只填一个参数的话对于不同的类型就会有不同的效果,counter会被设置为0,flag的会被设置为True,string会被设置为空字符串。 同时,和SET相对的还有一个UNSET,UNSET只接受一个参数,对于counter和string,UNSET和SET只带一个参数的效果一样,但是对于flag,UNSET会把它设置为False而不是True。同时,如果UNSET的参数是一个全局变量,这个全局变量将会被删除掉,这也是正常的删除全局变量的办法。
数据类型转换: Macro Mod的类型转换都是自动的,也就是说你只需要直接赋值就行,Mod会知道该变成什么,不过需要注意的是有些特殊的类别转换。 字符串转数字的时候字符串必须完全是数字,而且不能超过数字的取值范围,否则的话那个数字的值会被设置为0。 数字转flag的时候,0或者超出范围都会被认定为False,而其它所有情况都为True。(想想道理也很简单,超出范围的整数都会被认为是0) 而flag转回数字则会变成1和0。 比较有趣的是flag和字符串的互转,flag转字符串会直接变成True和False。而对于字符串,除了"True"或者"1"以外所有情况都会转成False
(未证实)对于类型转换的个人理解:其实所有变量都是当作字符串处理的,不过也许是出于优化原因而分出了两种被限制的字符串应对特别的用途。
|