宏命令中级进阶教程(中)――在宏里运用函数写程序从这一章开始,我开始为大家介绍函数和用函数写一些简单的程序(什么是函数?你不需要了解,知道怎么用就成),灵活的运用函数可以做到让很多人羡慕的效果。这需要大家略微了解写程序的知识,我会在讲解中进行介绍,但也需要你去消化 、去琢磨。我写教程是为了让更多的人会运用宏而不是准备开个写宏的专门店。提示:即便使用函数和程序语言也很难实现2个或2个以上的动作连用(何时可以使用2个技能请参照我的教程第五章)。更多的时候是一种智能判断,如战士在切换防御姿态前先换成单手武器+盾,切换狂暴姿态时换成双武器等,希望不要再遇到让我写个机器人程序的人:(考虑到所有立志于学习宏的玩家,我是怎么麻烦怎么来!例子(一):牧师上盾并随机说话/ta=”%t,给你个有限无敌圈!”;b=”%t,把你变上帝!”;c=random(5)/t if c1 thenSendChatMessage(a) else if c2then SendChatMessage(b) elseend;end/t CastSpellByName(真言术:盾(等级9))之一句:/ta=“%t,给你个有限无敌圈!”;b=”%t,把你变上帝!”;c=random(5)/t:告诉系统下面这段文字是用宏语言写的,如果玩家想使用函数必须在每行的开始加上这一句;a=”%t,给你个有限无敌圈!”;b=”%t,把你变上帝!”:这是一个赋值语句(注意用引号把文字括起来。这是必须的,否则系统会认为是个变量而造成错误),让后面的所写的语句中‘a’代表“给你个有限无敌圈!”这几个字;‘b’代表“把你变上帝!”这几个字。无论任何时候输入%t都会转化为所选目标的名称。在这里的‘=’可以理解为‘代表’的意思而不是“等于”(什么是等于?看下文……正规的解释可不是这样的,希望我这么说能让没学过程序的人理解),宏命令中只能写入255个字符,字字如金啊!再说每次说话是输入a方便还是打一大串字方便?c=random(5):random(5)表示在1~5中间取一个随机数字。那么这句话的意思就是‘让c代表一个1~5之间的随机数字’,这个数字数字是你每点击一次宏就自动生成一次。我们整体来看看之一句的意思:“让a代表”给你个有限无敌圈!”,b代表”把你变上帝!”,c代表一个1~5之间的随机数字”。大家理解了吗?再看第二句:/tifc1 then SendChatMessage(a) else if c2 then SendChatMessage(b)elseend;end/t:我就不解释了,看上文if…..then……elseif……then……else……end;end:这是一个判断句,咱们用中文来说就是“如果…….执行……否则如果……执行……结束;结束”,(我特意把每个关键字后面的空格多加了一个,希望大家看清楚并了解“ifc1”和“ifc1”不是同一个意思。系统会认为第二个是错误的)注:‘如果’后面要跟一个判断条件,成立就直接执行下一句的内容,不成立就跳转执行否则的内容;有几个‘如果’最后就要跟几个‘结束’。如果你有5个条件,每个条件都要跟不同的结果,那你可以通过不断的‘否则如果’来完成SendChatMessage(a):这句的意思是把“a”所代表的内容以普通说话的方式表达出来,在本例的效果如同“/s%t,给你个有限无敌圈!”SendChatMessage(b):意义同上c1:这是一个判断语句,判断c是否等于1(,一个等号是赋值,两个等号才是判断,切记切记),你可以用其他判断方式“”等于 、“>”大于 、“<”小于 、“>=”大于等于 、“<=”小于等于和“~=”不等于。第二句程序的意思:如果c等于‘1’,用普通对话说:“<目标名称>,给你个有限无敌圈!”,否则,如果c等于2,用普通话说:“<目标名称>,把你变上帝”,否则结束此程序。第三句:/tCastSpellByName(真言术:盾(等级9))这句的意思是施放9级盾,相当于之前讲过的“/施放真言术:盾(等级9)”这条命令,不同的是“/施放”需要单起一行,并只能执行这一条命令。“CastSpellByName(”法术名称”)”可以插入到程序的任何地方从而实现根据不同的情况使用不同的技能。最后:请注意你的字母大小写,注意逗号,括号,冒号,引号,分号等都要用英文,if 、then 、else等词语后面都要加空格或者分号,在出现问题后先检查自己所写的宏里面有没有这些错误。这个宏效果是用同一技能说不同的话,总听同一句话多烦啊!20%几率说之一句,20%几率说第二句,60%几率不说话――我们之前初级教程的升级版!希望大家喜欢附加讲解内容:(一)关于SendChatMessage()这个函数的深入了解――使用格式:SendChatMessage(说话内容,说话方式,语言,频道)作用:说话我在例子中用这个函数用的非常简单,可以如果我们想大喊出来怎么办?想在行会中说话怎么办?在这里我就对“SendChatMessage()”多讲些内容,毕竟在我看来这个可能是用的最频繁的函数了例:/tSendChatMessage(“主动给钱或是由我抢劫二选一”,”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]区间;提供两个参数起始值和结束值时,随机数位于[起始值,结束值]区间例:/trandom(50,100)作用:生成一个50~100之间的随机数。好了。本章教程就写到这里,例子不多,只有一个,灵活运用的效果还是很不错的。本章在介绍程序书写 *** 上用去了大量的篇幅,在下一篇教程中我们继续对函数的运用进行讨论。例子多多。欢迎收看!(为了减少到可以发表的字数费老劲了)二区月神殿法师 *** :8499646 欢迎交流,欢迎指正!
我将你需要的宏命令为你发送过去了哦,请注意查看。
/run FB=FB or Createframe("frame")FB:RegisterEvent("CHAT_MSG_BN_WHISPER")if B then print("关")B=nil else print("开")B=function(_,_,m,_,_,_,_,_,_,_,_,_,_,_,p)if m=="1"then _,n,_,s=BNGetToonInfo(p)InviteUnit(n.."-"..s)end end end FB:Setscript("OnEvent",B)
宏是由一组宏命令组成的。以下是一些普通宏命令:
/say (/s) /whisper(/w, /talk, /t) /emote(/e, /em, /me) /dance 喜爱PVP的人,应该不会忘了这个:/spit利用宏,我们可以把这些宏命令放到技能栏上点击使用,而且可以同时做多个动作。写宏的时候,每条动作写在一行上,就像在聊天界面中输入的一样。比如,让你的角色喊一声“Everybody, dance now!”然后开始跳舞的宏:
/y Everybody, dance now!
/dance
首先,打开你的宏窗口:单击主菜单上的“宏”按钮,或者在聊天界面中输入/macro(/m)回车。在宏窗口的顶端,可以看见两个标签:“通用宏”和“<你的角色名>的专用宏”。通用宏被存储在账号专有的文件夹中,被所有角色共享。而角色专用宏则存储在角色自己的文件夹下,是角色专用的(废话……囧)。在标签下面是18个存放宏的栏位。再往下是一个栏位,用于显示当前选中的宏;还有一个“修改名称/图标”的按钮,用于修改选中的宏。然后是一个用于显示 、编辑当前宏的文本框。最下面是三个按钮,傻子也能看出它们是干什么的。
如果要创建一个宏,首先单击窗口下方的“新建”按钮,这时窗口旁边会显示一个对话框,用于选择图标和输入宏的名称。如果选择了之一个图标(就是那个很红很暴力的问号),WoW会自动根据你宏命令中涉及的技能或物品选择图标。选好图标,输入完名称,就可以单击“确定”按钮了。
顺便提几点:1.使用问号图标的宏,可以通过使用#show指定显示的图标。2.虽然可以给不同的宏起相同的名字,但是更好不要这样做。因为有些插件和宏命令是通过宏名称来调用宏的。3.在图标列表中可以添加自定义的图标。
现在,你选择的宏图标被显示在栏位中了(还会显示部分宏名称)。同时,新建的宏被选中,图标显示在当前选中宏的栏位中:现在你可以写你的宏了。单击编辑文本框,然后输入吧。
注:宏限定为255个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。不过……现在能做的就是遵循这个限定,至于想要把宏移植到其他机器上使用,请参见第三部分的宏的移植。
写完宏以后,只要把它的图标拖放到技能栏中就可以了。当你执行一个宏,或者是关闭宏窗口的时候,宏都会自动保存的。现在点击宏的图标,看看效果吧!
[编辑本段]3. 施放法术
在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中就不一样了。在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那么,继续看……
这个:/cast,它是最常见的宏命令了。作用嘛,就是施放一个技能书中的技能(包括宠物的)。最简单的用法就是这样:
/cast 暗言术:痛
把这个宏放到技能栏上点击,将会对目标施放你更高级的痛。这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。我们 *** 的宏同样会在技能栏显示你的技能冷却状态和射程状态,点击后同样能正确的施放痛。如果宏使用了问号图标,那么还同样会显示痛原有的图标。
那直接用技能不就行了么,何必用宏呢?继续看,在宏中通过集成多条命令可以产生什么效果吧,这才是宏的价值所在。比如说你是个法师,想让队友知道你要羊掉谁,你该怎么办?用宏吧,一个简单的/p命令加上一个/cast就可以了(使用这个 *** 的插件可以达到更好的效果:CCWarn,不过我们现在需要的只是这个简单易懂的教学例子):
/cast 变形术
/p 我羊了%t!谁打谁扛着哈!
/use 短暂能量护符
/cast 奥术强化
//stopcasting
/cast 气定神闲
//stopcasting
/cast 炎爆术
/use 短暂能量护符
/cast 奥术强化
/cast 气定神闲
/cast 炎爆术
客户端会把奥术强化的状态信息作为宏的状态显示。但是这恐怕不是我们所希望的,因为这个宏的目的是炎爆,前几行的奥强气定都只是为了最后把一个大大的脸盆给丢出来。如果在宏的前面加上这样一行,炎爆术就会被当作宏的默认技能: