
一直看各种宏的教学,没有一片足够清晰严格的。
在这些教学里,函数的变量和作用都没有说明,宏的语法也没有说明,这样对玩家自己改进宏十分不利。那些写宏教程的也很奇怪,难道都不屑于说明语法么?或者就是直接从国外网站照样copy过来的?恩,对大多数人可能不管黑猫白猫复制下来能用的宏就万事ok了...但我个人不喜欢不求甚解的态度,而且看见过的多数拿出来分享给别人用的宏,用计算机专业的标准衡量,代码往往冗余,这就意味着效率的损失,也就意味着片刻的延时,或许片刻就是生死的分界线....
这篇宏的经验文章写给那些想多了解一些宏的知识的玩家,如果不想自己动手写宏的玩家不用往下看。
1,宏的基本常识
宏是一个脚本,发送到服务器端执行。这个脚本由一组命令序列构成,长度不超过255个字符。序列中的每一个命令,由一个/ 开头,例如/say /script 等等。
/script 后面跟随脚本特有的语句和函数。
你可以罗列多个/script命令在一个脚本里,也可以在一个/script命令中写多个函数,这都可以。因为宏就是依次执行所有的命令,所以不需要在宏的最后添加end 标记,或在命令之间加; 事实上,end标记 是if语句的组成部分,你在写if语句时才用到end关键字。命令和命令之间用换行或; 隔开都可以,我喜欢用换行..呵呵,省掉不必要的; 代码也清楚些。
常用的if语句语法如下:
/script if [条件表达式] then [命令序列] end
or
/script if [条件表达式] then [命令序列1] else [命令序列2] end
这里条件表达式不需要在外面套括号,和C,java的习惯不同,应该是为了减少不必要的字符数,毕竟WOW宏有长度限制。
条件表达式 中 相等用 == , 否定用not, 不等于可以写 not (A == B), 暴雪没有提供!= 作为不等于,很奇怪。 例子:
if sword == GetInventoryItemLink("player", 16) then ....
if not (sword == GetInventoryItemLink("player", 16)) then ....
注1,这里的sword是全局变量。每一个全局变量的生命周期是一次登陆中从声明变量到退出魔兽,通常在每次登陆后额外运行一个设定宏来设定我们所需要的全局变量。
注2,GetInventoryItemLink()是一个取装备Link的函数,GetInventoryItemLink("player", number)是从人物身上取装备的Link,number代表人物装备画面的不同槽, 头部,颈部,依次递增,于是16代表主手武器,17代表副手武器GetInventoryItemLink("player", 16) 就代表了主手武器的Link。
2,盗贼专用宏的编制思路,
其实用宏就是为了切换武器,既不放弃匕首的背刺和伏击,也能用高攻的单手剑,达成两全其美的效果。
发表评论: