WOW宏的设计
首先,打开你的宏窗口:单击主菜单上的“宏”按钮,或者在聊天界面中输入/macro(/m)回车。在宏窗口的顶端,可以看见两个标签:“通用宏”和“<你的角色名>的专用宏”。通用宏被存储在账号专有的文件夹中,被所有角色共享。而角色专用宏则存储在角色自己的文件夹下,是角色专用的(废话……囧)。在标签下面是18个存放宏的栏位。再往下是一个栏位,用于显示当前选中的宏;还有一个“修改名称/图标”的按钮,用于修改选中的宏。然后是一个用于显示、编辑当前宏的文本框。最下面是三个按钮,傻子也能看出它们是干什么的。 如果要创建一个宏,首先单击窗口下方的“新建”按钮,这时窗口旁边会显示一个对话框,用于选择图标和输入宏的名称。如果选择了第一个图标(就是那个很红很暴力的问号),WoW会自动根据你宏命令中涉及的技能或物品选择图标。选好图标,输入完名称,就可以单击“确定”按钮了。 顺便提几点:1.使用问号图标的宏,可以通过使用#show指定显示的图标。2.虽然可以给不同的宏起相同的名字,但是最好不要这样做。因为有些插件和宏命令是通过宏名称来调用宏的。3.在图标列表中可以添加自定义的图标。 现在,你选择的宏图标被显示在栏位中了(还会显示部分宏名称)。同时,新建的宏被选中,图标显示在当前选中宏的栏位中:现在你可以写你的宏了。单击编辑文本框,然后输入吧。 注:宏限定为255个字符,传闻这样做是为了以后可以把用户的宏上传到服务器中。不过……现在能做的就是遵循这个限定,至于想要把宏移植到其他机器上使用,请参见第三部分的宏的移植。 写完宏以后,只要把它的图标拖放到技能栏中就可以了。当你执行一个宏,或者是关闭宏窗口的时候,宏都会自动保存的。现在点击宏的图标,看看效果吧! 在正常游戏过程中,很多宏命令通过聊天窗口输入使用似乎并不好用,但是在宏中就不一样了。在特定场合下,简简单单的表情宏也可以产生有趣的角色扮演效果哦,那么,继续看…… 这个:/cast,它是最常见的宏命令了。作用嘛,就是施放一个技能书中的技能(包括宠物的)。最简单的用法就是这样: /cast 暗言术:痛 把这个宏放到技能栏上点击,将会对目标施放你最高级的痛。这和把技能书中的痛拖到技能栏上,然后点击的效果是一样的。我们制作的宏同样会在技能栏显示你的技能冷却状态和射程状态,点击后同样能正确的施放痛。如果宏使用了问号图标,那么还同样会显示痛原有的图标。 /cast命令对技能名称是十分严格的,文字、标点、空格,一个都不能错。为了防止出错,编辑宏时,你可以打开你的技能书,按下Shift然后单击你的技能图标,技能名称和等级就会被正确地输入到你的宏编辑文本框中,如: /cast 暗言术:痛(等级 5) 如果把“(等级5)”删掉,宏在执行时就会自动选择你最高级别的技能执行;不过在很多场合下,还是需要指定级别的技能,比如术士放逐就需要根据时间来选择技能。另外要注意,等级指示中使用的括号是英文的半角括号,等级与数字间有一个半角空格。而一些技能名称中的括号,比如“精灵之火(野性)”中的括号,是中文的全角括号。以下宏命令不能正常执行: /cast 精灵之火(野性) /cast 精灵之火(野性)(等级 1) 而以下的命令是正确的: /cast 精灵之火(野性) /cast 精灵之火(野性)() 空的括号效果和没有括号是一样的。由于255字符限制的存在,空间还是要节省的,所以空括号可以删掉了…… 使用物品和饰品和施放法术是类似的。用于使用物品的命令是/use,后面只需要加上物品的名字就可以了。例如: /use 绿色机械陆行鸟 另外,还有以下其它的使用格式: i./use <装备栏>这种格式可以使用指定装备栏中的物品。具体使用请参见《装备栏编号方式》。例如: /use 13 使用第一个饰品。 ii./use <背包><栏>这种形式是在指定背包中确定物品栏的,比如你总是把猫食狗粮放在行囊的第一个栏位中,那么你就可以用这样的宏来喂养宠物: /cast 喂养宠物 /use 0 1 背包的编号为0-4,顺序是从右到左,即0是行囊。物品栏则是从上到下从左到右,从1开始依次编号的(与书写顺序相同): 1 2 3 4 5 6 7 8 …… 或者是: 1 2 3 4 5 6 7 8 9 10 …… 如果怕把/cast和/use的用法混淆了,那就彻底搞混吧,因为它们其实本来就是完全一样。/cast可以使用物品,而/use也可以施放技能。这一点在目前看来似乎没有什么,但是到后面,介绍命令条件语和施法队列时,你会发现能把物品和技能混合在同一条命令中是多么爽的一件事。 首先,在一个宏中想一键释放多个法术是不行的。大多数技能和很多物品会触发公共冷却(GCD),防止你同时做太多的动作。即使一个技能释放失败,如果它可以触发GCD,那么它也会阻止后续/cast命令的执行。这是2.0版本之后的设定,之前可能看到这样的宏: /cast 压制 /cast 斩杀 /cast 致死打击 /cast 破甲 但是现在,记住,这种宏已经不能正常执行了。如果压制施放失败,虽然没有触发GCD,客户端也不会继续执行后续的技能施放。不过令人欣慰的是部分技能还是可以集成到一个宏中。任何不触发GCD的瞬发技能后面可以接上另一个技能(“下次近战攻击”型的技能,如英勇打击也归于此类)。一个技能可以通过看说明知道它是否瞬发,至于是它是否触发GCD通过实验就可以知道。 2.3版本之前,在这个瞬发无GCD技能之后需要加上一个/stopcasting才可以施放其后的技能。施放第一个技能后,游戏客户端会认为当前在施法状态,而/stopcasting就可以解除这个状态,就可以解决后续技能不能释放的问题。但是由于技能是瞬发,/stopcasting实际上并不能取消技能的施放。 而现在这里可以不用/stopcasting了,例如: /use 短暂能量护符 /cast 奥术强化 /stopcasting /cast 气定神闲 /stopcasting /cast 炎爆术 选择目标是宏的另一个主要作用。此类功能可以用专门的目标选择命令实现,改变当前的目标;也可以在一些命令中用[target=]命令条件语实现,临时指定施法或使用物品的目标,而不改变当前目标。命令条件语在第二部分将会讲到到。现在我先介绍目标选择命令。 最基本的命令是/target,用法如下: /target Cogwheel /target的选择是经过最佳相近匹配的,也就是说,如果我正站在你附近(并且附近没有谁叫Cog的),你执行/target Cog,我就会变成你的当前目标。至于这种机制是利是弊……那就取决于实际情况了,因为这个东东貌似不稳定,有时会得到莫名其妙的结果。比如下面这个宏就可能不是很好用: /target 黑翼法师 /cast 痛苦诅咒 如果附近没有黑翼法师呢?或许结果就是:选中了团里的某个人,因为他的名字在某种意义上比较相近。虽然你的诅咒不会真对他们放出来,但还是够囧的。另外一个问题是,它可能会选择你身后一个离你100码的单位——根本不是你想选中的那一个……不过在2.3版之后,增加了一个/targetexact命令,第一个问题得到解决了。 除了用人名进行选择之外,还可以通过单位标识符进行选择。单位标识符(Unit ID)是用于标识特定单位的字符串。比如你的当前的目标就可以用“target”来表示,而你自己对应的标识符是“player”,如果你有宠物,那么它的标识符是“pet”。另外,通过在一个正确的标识符后加上target,就可以获取他的目标。如此变态也可以: /target targettargettargettargettargettarget 以下是其他的目标选择命令: �8�5 /assist 不加任何其他参数时效果是选择你目标的目标,如果在其后加上人物名称,那么就会选择对应人物的当前目标。例如: /assist Cogwheel 另外,在客户端的界面选项中有一个选项,可以设置用/assist选中一个敌对目标时是否自动进行攻击。 �8�5 /cleartarget 清除当前目标。 �8�5 /targetexact 准确选择,如果附近没有单位的名字和给出的参数完全匹配,就不会切换目标。 �8�5 /targetlasttarget, /targetlastfriend 和 /targetlastenemy 顾名思义,分别用来选择上一个目标、上一个友方目标和上一个敌对目标。如果你之前没有过任何目标,那么这些命令不会产生任何影响。 �8�5 /targetenemy 和 /targetfriend 选择敌方目标和选择友方目标。这两条命令是按一定顺序循环选择指定类型的目标的,和使用Tab键的效果类似。如果在命令后加上一个1作为参数,那么就会按循环的反方向进行选择。例如: /targetenemy 1 效果就和按下Shift+Tab键一样。 注:这两个宏命令每个宏中只能用一次。 �8�5 /targetparty 和 /targetraid 按距离循环选择你附近的小队或团队队友,与/targetenemy类似,也可以用1作为参数改变选择的循环方向。 如果一个宏使用问号图标,魔兽世界客户端会默认把宏内容中的第一个技能或物品的图标、冷却状态等信息显示在技能栏上。比如前面所讲的这个例子: /use 短暂能量护符 /cast 奥术强化 /cast 气定神闲 /cast 炎爆术 客户端会把奥术强化的状态信息作为宏的状态显示。但是这恐怕不是我们所希望的,因为这个宏的目的是炎爆,前几行的奥强气定都只是为了最后把一个大大的脸盆给丢出来。如果在宏的前面加上这样一行,炎爆术就会被当作宏的默认技能: #show 炎爆术 如果使用了问号图标的话,宏还会直接显示炎爆的图标。#show的参数机制和/cast类似,可以使用技能名、物品名、物品编号(如item:12345)、装备栏或者背包+物品栏编号。 和#item类似的还有#showtooltip。正常情况下,鼠标指向宏的时候,提示信息显示的是宏的名字。而这在绝大多数情况下是很不好用的(除非你用了TheoryCraft之类的插件可以显示详细的技能信息)。而用#showtooltip就可以指定宏在鼠标指向时显示的信息,用法同#show。另外,如果使用了#showtooltip的话,就没必要再用#show了。 如果客户端自动选择的技能符合你的要求,那么可以只用#showtooltip而不加参数来显示该技能的说明,这样可以节约空间。 请注意:#show和#showtooltip与/开头的宏命令不同,是大小写敏感的,也就是说只能用小写字母。 命令条件语是插入在宏命令中,使宏根据条件执行不同功能的语句。举个例子,下面这个宏的作用是,如果是友方目标就施放恢复,如果是敌方目标就上痛: /cast [help] 恢复[harm] 暗言术:痛 当这个宏执行时,首先检查[help]条件,判断当前目标是否是一个可以接受治疗/增益法术的目标。如果[help]条件成立,那么就施放恢复并执行下一条命令,否则(即没有目标,或目标不接受有益技能)继续执行下一个子句,也就是分号后[harm]那里,再判断[harm]条件。[harm]条件和[help]条件相反,判断目标是否接受敌对法术。同上,如果条件成立就释放“暗言术:痛”并执行下一条命令。如果条件不成立,由于后面没有其他子句,这条宏命令就算执行完了,但是什么动作都没有做。 注:如果没有写[harm]条件,实际运行效果是差不多的。不过,如果你没有目标或者当前目标不接受任何法术,那么屏幕上将会出现错误信息,或者对于某些技能,鼠标将会变成选择施放目标的状态。 只有那些“安全化”命令可以接受命令条件语。其实正是经过安全化的命令才需要条件语。常规命令,比如说聊天、表情之类的,可以通过脚本来实现命令条件语的功能。而且暴雪不想限制大家在聊天时使用分号()。如果/s命令可以使用命令条件语的话,那么下面这个命令就会只说hello: /say HelloI’m a n00b 以下是当前客户端中安全化命令的列表: #show1 #showtooltip1 /assist /cancelaura /cancelform /cast /castrandom /castswquence /changeactionbar /clearfocus /cleartarget /click /dismount /equip2 /equipslot2 /focus /petagressive /petattack /petautocastoff /petautocaston /petdefensive /petfollow /petpassive /petstay /startattack /stopattack /stopcasting /stopmacro /swapactionbar /target /targetenemy /targetfriend /targetlasttarget /targetparty /targetraid /use /userandom 注1:#show和#showtooltip不是真正意义上的安全化命令,但是它和/use以及/cast的内部机制相仿。 注2:/equip和/equipslot逻辑上也不算是安全化命令,因为它们的功能是可以通过插件和脚本实现的。 当然,如果你希望在常规命令中使用命令条件语,就需要安装专门的插件。MacroTalk,这是我的一个作品,通过在非安全化命令前添加/opt,然后在/opt中处理各类条件来实现对不同命令的调用(当然只能是非安全化命令)。最新版的SuperMacro中应该也有类似的功能。 这里面有很多涉及条件语法 很麻烦···你可以上网找找 或者问下懂的朋友 在这里我就提这么多咯
在里面你可以选择宏的图标,输入宏的内容。需要注意的是宏有数量限制,和每个宏的字数限制。
如果希望在宏里加进一条施展某法术的语句,只需要打开技能书,按住Shift键并点击该魔法。
2、在操作列选择“OpenForm”,下面参数中的“窗体名称”选择“窗体1”,关闭宏的设计视图,保存宏。
3、这是刚建的按钮的属性窗口,可以看到,单击事件已经指向的宏1,运行该窗体,当单击按钮时,将打开窗体1。
或用如下VBA程序:
Private Sub CommandButton1_Click()
Dim TempLen As Byte
Dim TempCount As Integer
Dim strTempPath As String, ViceName As String
Dim fFile As FileSearch
Dim TempMsgBox As VbMsgBoxResult
Set fFile = Application.FileSearch
With fFile
.LookIn = "E:\多个工作簿"
.Filename = "*.xls"
If .Execute >0 Then
TempMsgBox = MsgBox("共有" &.FoundFiles.Count &"个文件将被汇总", vbOKCancel, "记数")
If (TempMsgBox = vbCancel) Then
End
End If
TempCount = 1
Do
strTempPath = .FoundFiles(TempCount)
Debug.Print strTempPath
TempLen = Len(strTempPath)
ViceName = Mid(strTempPath, Len(fFile.LookIn) + 2, TempLen - Len(fFile.LookIn) - 1)
Workbooks.Open strTempPath
Workbooks(ViceName).Sheets("汇总").Activate
Workbooks(ViceName).Sheets("汇总").Range("A2:H13").Copy
Workbooks("汇总.xls").Sheets("Sheet1").Activate
Cells(Range("A2").Offset((TempCount - 1) * 12, 0).Row, 1).Select
Selection.PasteSpecial Paste:=xlValues
Workbooks(ViceName).Close
TempCount = TempCount + 1
Loop Until TempCount >.FoundFiles.Count
Else
TempMsgBox = MsgBox("目标路径下没有需要汇总的Excel文件", vbOKOnly, "提示")
End If
End With
End Sub
这里假定你的几十个.xls文件存放在“E:\多个工作簿”文件夹,在此文件夹外,有一个“汇总.xls”来做汇总,以上程序是“汇总.xls”的Sheet1的一个命令按钮程序。
键盘具有这个功能,可以官方网站下载型号相对应的驱动程序软件,然后安装打开软件,里面就有每个按键搜索的宏按键设置的。是需要驱动软件来设置的。
操作步骤:
1、首先得准备好一个比较好的键盘,支持设置宏的。这里使用的是技嘉的机械键盘,所以到官网下载个该品牌键盘的驱动,雷神的就去下载雷神的键盘驱动,下载好打开如下。
2、选择上图中的“模式设定”进去后如下。
3、然后点击“宏”进去设置宏,然后录制,点一下与你快捷栏相关的一个键,然后点录制结束。然后在设置固定间隔时间,比如你拆包袱冷却时间是1秒,那就在设置固定时间1秒,5秒就设定5秒,就那么简单。然后点循环执行!再点左上角“保存设置”。
保存好后退出来,选择你刚刚设置的那个,点右上角保存,这样就可以了,进了游戏的时候按一下键盘的宏启动键。
1、通过自己的登录方式登陆游戏。
2、进入游戏中之后,我们按ESC键,会有一个菜单,我们会看到中间有一个选项叫做宏命令设置,点击进入。
3、进入之后,点击自己角色的专用宏。
4、点击界面下方的新建,右侧会弹出一个界面,输入你想要编辑的宏的名称,然后设计一个图标,并点击保存。接下来需要做的就是输入指令,完成宏的设计。
5、完成之后保存,将你做的宏的图标拖拽到你的技能栏上。
所以用了一个BEFOR,也就是在双击完成之前,执行某段代码
双击事件涉及到鼠标按下、弹起等几个动作
你注意看,双击A1后,弹出对话框,然后你关闭这个对话框后
鼠标将进入A1单元格的编辑状态
这就是BEFOR的含义
Target.Address 是一个单元格的地址,在这个文件中 ,是A1单元格
具体的语法,你可以查看帮助
那个定额系统我因为解不开密码,所以也不晓得他是怎么弄的,汗~~~
此宏是将H5的表格和'E:\产品成本\产品标准成本\原材料成本表\[材料价格清单.xls]Sheet1'!$A$3:$E$106表格区域的内容对比,当相同时返回H5后X格的内容,不相同则显示#nale!
.C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令。虽然它们实际上不是C语言的一部分,但却扩展了C程
序设计的环境。本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。
ANSI标准定义的C语言预处理程序包括下列命令:
#define,#error,#i
nclude,#if,#else,#elif,#endif,#ifdef,#ifndef,#undef,#line,#pragma等。非常明显,所有预处理命令均以符号#开头,下面分别加以介绍。
1、#define
命令#define定义了一个标识符及一个串。在源程序中每次遇到该标识符时,均以定义的串代换它。ANSI标准将标识符定义为宏名,将替换过程称为宏
替换。命令的一般形式为:
#define identifier string
注意:
? 该语句没有分号。在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束。
? 宏名定义后,即可成为其它宏名定义中的一部分。
? 宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换。例如: #define XYZ
Range("A1").CurrentRegion.Select
oldrownum = Selection.Rows.Count
Range("A1").Offset(oldrownum, 0).PasteSpecial Paste:=xlPasteValues
第一句的意思是选定A1单元格所在的数据区域,也就是说如果A1:K100如果都是有数据,从A101开始是空的话,就会选定A1:K100
第二句的意思是计算选定区域的行数,并赋值给oldrownum
第三句就是选定A1开始向下移动oldrownum个单元格,向右移动0个单元格,然后粘贴。