找回密码
 新猫注册
查看: 390|回复: 3

魔兽世界宏命令最强教程

[复制链接]
flz-flz 发表于 2006-3-18 11:00:39 | 显示全部楼层 |阅读模式
宏命令中级进阶教程(中)――在宏里运用函数写程序




从这一章开始,我开始为大家介绍函数和用函数写一些简单的程序(什么是函数?你不需要了解,知道怎么用就成),灵活的运用函数可以做到让很多人羡慕的效果。这需要大家略微了解写程序的知识,我会在讲解中进行介绍,但也需要你去消化、去琢磨。我写教程是为了让更多的人会运用宏而不是准备开个写宏的专门店。



提示:即便使用函数和程序语言也很难实现2个或2个以上的动作连用(何时可以使用2个技能请参照我的教程第五章)。更多的时候是一种智能判断,如战士在切换防御姿态前先换成单手武器+盾,切换狂暴姿态时换成双武器等,希望不要再遇到让我写个机器人程序的人:(



考虑到所有立志于学习宏的玩家,我是怎么麻烦怎么来!







例子(一):牧师上盾并随机说话



/script a=”%t,给你个有限无敌圈!”; b=”%t,把你变上帝!”;c=random(5)



/script if c==1 then SendChatMessage(a) else if c==2 then SendChatMessage(b) else end;end



/script CastSpellByName("真言术:盾(等级 9)")







第一句:/script a=“%t,给你个有限无敌圈!”; b=” %t,把你变上帝!”;c=random(5)







/script:告诉系统下面这段文字是用宏语言写的,如果玩家想使用函数必须在每行的开始加上这一句;







a=”%t,给你个有限无敌圈!”;b=”%t,把你变上帝!”:这是一个赋值语句(注意用引号把文字括起来。这是必须的,否则系统会认为是个变量而造成错误),让后面的所写的语句中‘a’代表“给你个有限无敌圈!”这几个字;‘b’代表“把你变上帝!”这几个字。无论任何时候输入%t都会转化为所选目标的名称。在这里的‘=’可以理解为‘代表’的意思而不是“等于”(什么是等于?看下文……正规的解释可不是这样的,希望我这么说能让没学过程序的人理解),宏命令中只能写入255个字符,字字如金啊!再说每次说话是输入a方便还是打一大串字方便?







c=random(5):random(5)表示在1~5中间取一个随机数字。那么这句话的意思就是‘让c代表一个1~5之间的随机数字’,这个数字数字是你每点击一次宏就自动生成一次。







我们整体来看看第一句的意思:“让a代表”给你个有限无敌圈!”,b代表”把你变上帝!”,c代表一个1~5之间的随机数字”。大家理解了吗?







再看第二句:/script if c==1 then SendChatMessage(a) else if c==2 then SendChatMessage(b) else end;end



/script:我就不解释了,看上文



if…..then……else if……then……else……end;end:这是一个判断句,咱们用中文来说就是“如果…….执行……否则如果……执行……结束;结束”,(我特意把每个关键字后面的空格多加了一个,希望大家看清楚并了解“if c==1”和“ifc==1”不是同一个意思。系统会认为第二个是错误的)



注:‘如果’后面要跟一个判断条件,成立就直接执行下一句的内容,不成立就跳转执行否则的内容;有几个‘如果’最后就要跟几个‘结束’。如果你有5个条件,每个条件都要跟不同的结果,那你可以通过不断的‘否则如果’来完成



SendChatMessage(a):这句的意思是把“a”所代表的内容以普通说话的方式表达出来,在本例的效果如同“/s %t,给你个有限无敌圈!”



SendChatMessage(b):意义同上



c==1:这是一个判断语句,判断c是否等于1(,一个等号是赋值,两个等号才是判断,切记切记),你可以用其他判断方式“==”等于、“>”大于、“<”小于、“>=”大于等于、“<=”小于等于和“~=”不等于。



第二句程序的意思:如果c等于‘1’,用普通对话说:“<目标名称>,给你个有限无敌圈!”,否则,如果c等于2,用普通话说:“<目标名称>,把你变上帝”,否则结束此程序。



第三句:/script CastSpellByName("真言术:盾(等级 9)")



这句的意思是施放9级盾,相当于之前讲过的“/施放 真言术:盾(等级 9)”这条命令,不同的是“/施放”需要单起一行,并只能执行这一条命令。“CastSpellByName(”法术名称”)”可以插入到程序的任何地方从而实现根据不同的情况使用不同的技能。







最后:请注意你的字母大小写,注意逗号,括号,冒号,引号,分号等都要用英文,if、then、else等词语后面都要加空格或者分号,在出现问题后先检查自己所写的宏里面有没有这些错误。



这个宏效果是用同一技能说不同的话,总听同一句话多烦啊!20%几率说第一句,20%几率说第二句,60%几率不说话――我们之前初级教程的升级版!希望大家喜欢



附加讲解内容:



(一) 关于SendChatMessage()这个函数的深入了解――



使用格式:SendChatMessage("说话内容","说话方式","语言","频道")



作用:说话



我在例子中用这个函数用的非常简单,可以如果我们想大喊出来怎么办?想在行会中说话怎么办?在这里我就对“SendChatMessage()”多讲些内容,毕竟在我看来这个可能是用的最频繁的函数了



例:/script SendChatMessage(“主动给钱或是由我抢劫二选一”,” say”,”通用语”,” YELL”)



作用:大喊“主动给钱或是由我抢劫二选一”和在宏里面输入“/y主动给钱或是由我抢劫二选一”效果相同。



"说话内容":要发送的消息
"说话方式":聊天消息想要发送的类型,省略时为"SAY",可使用:
1."SAY":普通说话 2."WHISPER":密语,必须在参数"频道"中指明密语对象的名字,可配合函数UnitName("unit")使用(这个函数我们之后再说)



"语言":写上“通用语”“精灵语”“侏儒语”“兽人语”等等,可以省略



"频道":必须在参数"频道"中指明频道的编号,省略时为”综合”,我们还可以用以下的参数:
1."GUILD":工会 2."PARTY":小队 3."RAID":组团 4."YELL":大喊



注意:标点符号用英文,每个内容、方式等用逗号隔开,除 “说话内容”外均可以省略。







(二)生成一个随机数的函数random()



使用格式:random(起始值,结束值)
作用:生成一个在起始值和结束值之间的随机数
随机数:无起始值和结束值时位于[0,1]区间;提供单个参数n时,随机数位于[1,n]区间;提供两个参数起始值和结束值时,随机数位于[起始值,结束值]区间
例:/script random(50,100)



作用:生成一个50~100之间的随机数。



好了。本章教程就写到这里,例子不多,只有一个,灵活运用的效果还是很不错的。本章在介绍程序书写方法上用去了大量的篇幅,在下一篇教程中我们继续对函数的运用进行讨论。例子多多。欢迎收看!(为了减少到可以发表的字数费老劲了)
风间菠萝 发表于 2006-3-18 15:52:39 | 显示全部楼层
只有笨蛋才会用这样的命令
回复

使用道具 举报

真中一貴 发表于 2006-3-18 23:01:53 | 显示全部楼层
什么时候你连这个都搞啊....对你要刮目一小下了...
P.S.又满久没上了...要抱下不?~
回复

使用道具 举报

 楼主| flz-flz 发表于 2006-3-18 23:29:19 | 显示全部楼层
这里出现了?嗬嗬,小贵好啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新猫注册

本版积分规则

手机版|小黑屋|[漫猫]动漫论坛

GMT+8, 2024-11-23 08:02

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表