我曾经发表过一篇关于打断施法提示宏的文章,发表之后各大网站争相登载。由于魔兽世界版本的更新,曾经风光一时的那套打断施法提示宏,只好被迫下岗。不少认识我的人曾经问我:你写的打断施法提示宏怎么不能用了?我只好告诉他们:2.4更新了,这套宏已经过时,我正在写一套新的打断施法提示宏,很快就能和大家见面了。
2.4版本的打断施法提示宏终于“诞生”了,如果你还不知道这套宏,那我只好重新讲一遍这套宏的作用了。不管你在五人副本、大型RAID、战场、竞技场还是野外,都可以使用这套宏,及时让大家知道法术被打断的信息。比如竞技场中自己队里的队友加血被反制了,其他人就能及时采取保护措施;如果敌方的治疗被反制了,那么你就能及时和队友加强DPS集中杀掉一个敌人;在PVE时有了这个打断怪物施法的信息,一来可以让大家安心DPS,二来还可以省掉了其他人的反制技能。下面我就把宏展示给大家看:
宏1:生成打断施法的提示,并发送聊天信息
/run function SIS_M(a,b,c,d,e,f,g,type) SendChatMessage("["..date("%H:%M:%S",a).."] ["..b.."] 的 \124cff71d5ff\124Hspell:"..d.."\124h["..e.."]\124h\124r 打断了 ["..c.."] 的 \124cff71d5ff\124Hspell:"..f.."\124h["..g.."]\124h\124r。",type);end
宏2:过滤掉其他的战斗记录,只留下打断施法的战斗记录
/run function EV_M(...) local a,v,_,b,_,_,c,_,d,e,_,f,g=...;if (v=="SPELL_INTERRUPT" and SIS_M) then SIS_M(a,b,c,d,e,f,g,"YELL");end end
宏3:创建接收消息的框架
/run if (not MSG_F) then CreateFrame("Frame","MSG_F",UIParent);end MSG_F:RegisterEvent("COMBAT_LOG_EVENT");MSG_F:SetScript("OnEvent",function(_,_,...) if (EV_M) then EV_M(...);end end);
以上三个宏在进入游戏后按顺序执行过一遍就可以即时提示打断施法的消息。
比如某一时刻一个人打断了另一个人的施法,那么使用这套宏的人就会喊出提示来,效果如下:
[亚伯拉罕]喊道:[19:42:25] [冰封火舞] 的 [反制] 打断了 [西方必败] 的 [恐惧术]。
功能很强大吧,凡是有打断施法并且在一段时间内不能施放同系法术的打断都可以提示,并且要比旧版打断施法提示宏要强得多,如果你尝试使用这个宏,就会发现它不仅能显示打断的时间,而且技能也会以链接的形式显示,用鼠标点击就可以查看技能信息。
下面还是要对以上三条宏分别解释一下功能,这几段内容被很多人誉为“天书”,看不懂的话可以跳过这几段看后面的:
第一条宏
/run function SIS_M(a,b,c,d,e,f,g,type) --定义函数SIS_M,用来发送聊天信息
SendChatMessage( --调用的这个方法用来发送这样的字符串“[HH:mm:ss] [AA] 的 [BB] 打断了 [CC] 的 [DD]。”
"[" --为时间戳加上中括号
..date("%H:%M:%S",a) --格式化时间戳,参数a存放着当前所取得消息的十六进制时间
.."] [" -- 时间戳和消息之间留一个空格
..b --参数b存放着玩家1的名字
.."] 的 \124cff71d5ff\124Hspell:" --给玩家1施放的技能加上链接码
..d --参数d存放着玩家1施放的技能的ID值
.."\124h[" --给玩家1施放的技能的名称加上中括号
..e --参数e存放着玩家1施放的技能的名称
.."]\124h\124r 打断了 [" --中间加上“打断了”
..c --参数c存放着玩家2的名字
.."] 的 \124cff71d5ff\124Hspell:" --给玩家2施放的技能加上链接码
..f --参数f存放着玩家2施放的技能的ID值
.."\124h[" --给玩家2施放的技能的名称加上中括号
..g --参数g存放着玩家2施放的技能的名称
.."]\124h\124r。", --最后加上一个句号,
type --SendChatMessage的第二个参数,指定了发送聊天信息的方式
); --组合字符串,然后发送聊天信息;
end --函数定义结束。
第二条宏
/run function EV_M(...) --定义函数EV_M,用来过滤战斗记录,只留下打断施法的战斗记录。EV_M函数的参数为“...”,这是LUA语言的特殊定义方式,表示参数的个数不确定
local a,v,_,b,_,_,c,_,d,e,_,f,g=...; --定义一些临时变量来按顺序从战斗记录中取得数据“_”变量为LUA保留变量,一般用作临时变量来多次赋值
if (v=="SPELL_INTERRUPT" and SIS_M) then --判断当临时变量v取得的消息类型为"SPELL_INTERRUPT"且SIS_M函数已经定义的情况下执行if内的语句
SIS_M(a,b,c,d,e,f,g,"YELL"); --调用SIS_M组合打断施法提示的信息字符串,以“YELL”(大喊)的方式发送。
end --if语句结束
end --函数定义结束。


























