1.28.2007

关于WOW中宏的一点补充

宏是一个脚本,发送到服务器端执行。这个脚本由一组命令序列构成,长度不超过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

0 Comments: