字号:

分享怀旧服可用的宏 打断喊话变羊喊话等

时间:2019-12-29 21:42 作者:1q2w3e400 手机订阅 参与评论(0) 【投稿】
文 章
摘 要
分享一些怀旧服可用的宏 打断喊话变羊喊话等

一、基本宏

战场出场提醒

/脚本 CreateFrame("Frame","CC")CC:RegisterEvent("UPDATE_BATTLEFIELD_STATUS")CC:SetScript("OnEvent",function(_,_,c)if"confirm"==GetBattlefieldStatus(c)then SendChatMessage("[自动提醒]战场可以进啦!!", "WHISPER", nil, UnitName("player"))end end)message("出场提醒开启")

每次上线的时候点击一下,等战场出的时候会自动给自己发一条密语,同时魔兽的窗口会闪烁。这个宏适合不喜欢用插件,但又希望收到战场进场通知的人,如果有条件的话,还是推荐大家把 battleInfo 插件给装一下,自带提醒功能,很强大。

冰箱喊话

#show 寒冰屏障

/stopcasting

/施放 !寒冰屏障

/run local d,z=UnitHealth("player"),UnitHealthMax("player")if AuraUtil.FindAuraByName("寒冰屏障","player")=="寒冰屏障"then SendChatMessage("我已冰箱!!剩余血量:"..d.." ( "..math.modf(d*100/z).."% ) 请注意治疗!!")end

停止当前施法并施放冰箱,再按一次会喊话:我已冰箱,当前剩余生命值XX ,请注意治疗。按一次喊一次,重复按不会取消冰箱。

技能施放密语

/脚本 U="UNIT_SPELLCAST_S"CreateFrame("frame","Y")R=Y.RegisterEvent;R(Y,U.."ENT")R(Y,U.."UCCEEDED")Y:SetScript("OnEvent",function(_,_,a,b,c,d)if d then n=b end;m=a=="player"and GetSpellInfo(c)=="保护祝福"and SendChatMessage("已给你保护","WHISPER",nil,n)end)

/施放 保护祝福

技能施放成功之后密语目标,此处以 保护祝福 为例,可以根据需要替换成其它技能,如 能量灌注、激活什么的。

查看荣誉信息

/script local B=5000 a,b,c,d=GetPVPLastWeekStats()P=(math.floor(GetPVPRankProgress()*B*2))/100 W=UnitPVPRank("player")-4 N=(W-2)*B+B*P/100 Q=(W-1)*B-N*0.8 SendChatMessage(("上周击杀%s 荣誉%s 排名%s **等级%s 经验%s 经验条%s%% 下周需%s经验升级"):format(a,c,d,W,N,P,Q),"emote")

查看目标的**(包括敌方)

/run if(UnitPlayerControlled("target")) then name=UnitName("target")a=UnitPVPRank("target")if a==0 then c="无";b=0 else c,b=GetPVPRankInfo(a,"target")end SendChatMessage(" <"..name.."> "..c.." **等级"..b,"emote")end

自动跟随宏:

/cleartarget

/tar 目标名字

/F

这个宏会清除当前目标,然后选定指定目标,并自动跟随。如果想直接跟随不选定目标的话直接/f 目标名字就行了:

/F 目标名字

如果想取消跟随的话可以这样:

/F player

一键标记宏

/脚本 SR=SetRaidTarget;TG="target"

/cleartarget

/tar 目标1

/script SR(TG,1)

/cleartarget

/tar 目标2

/script SR(TG,2)

/cleartarget

/tar 目标3

/script SR(TG,3)

/cleartarget

/tar 目标4

/script SR(TG,4)

/cleartarget

/tar 目标5

/script SR(TG,5)

可以一次性标记多个目标,把上面的目标替换成角色名就行了,SR(TG,1) 中不同的数字代表不同的标记,范围是0-8,具体含义可以自己试一下。

打1自动进组

/脚本 CreateFrame("frame","Z")Z:RegisterEvent("CHAT_MSG_WHISPER")X=not X and function(_,_,a,b)m=a:find("^1*$")and InviteUnit(b)ConvertToRaid()end or nil Z:SetScript("OnEvent",X)message(X and"自动组队开"or"自动组队关",1)

这个宏可以实现密语打1自动进组,只要有人打1就可以自动转团并邀请进组,如果你想更改关键字,把a:find("^1*$")中的 1 改成其它的就行了。这个宏用了正则表达式,可以识别重复的内容,比如你打很多1111它也可以识别,但不会识别1234。如果你想改成精确匹配的话,把这一句改成 a=="1" 就行了。下面这个宏同理,不再赘述。

打1自动进组(公会版)

/脚本 CreateFrame("frame","Z")C="CHAT_MSG\_"R=Z.RegisterEvent;R(Z,C.."WHISPER")R(Z,C.."GUILD")X=not X and function(_,_,a,b)m=a:find("^1*$")and InviteUnit(b)ConvertToRaid()end or nil Z:SetScript("OnEvent",X)message(X and"自动组队开"or"自动组队关",1)

跟上面的宏差不多,只不过除了密语之外,在公会打1也可以自动进组。如果你想实现在其它频道打1进组的话也是可以的。需要说明的是,这两个宏都无法识别战网好友。

战场总场次

/run local b=GetBattlegroundInfo(1)SendChatMessage(b.." 当前总场次:"..GetNumBattlefields())

显示当前战场的总场次,可以粘贴在聊天框里,也可以做成宏。

追场宏

/脚本 CH=1

/脚本 local f=BattlefieldListScrollFrame local z,c=f:GetVerticalScrollRange(),GetNumBattlefields()for i=1,c do if CH==GetBattlefieldInstanceInfo(i)then print("总场次:"..i.."/"..c)f:SetVerticalScroll(z*i/(c-9))BattlefieldZone1:Click()end end

把 CH=1 中的 1 替换成你想要的场号,打开战场列表,点击宏就行了。这个宏适合不喜欢插件的朋友,有条件的话还是推荐大家把 battleInfo 插件装一下,追场什么的很方便。

二、高级宏

说明:之所以叫“高级宏”,是为了与上面那些宏有所区分。由于宏有255字符的限制,导致很多功能都实现不了,比如很多人提到的根据情况在团队、小队中喊话的功能。而高级宏的出现正是为了解决这个问题,这些宏一般是由两个或两个以上的宏组成,功能也比一般的宏高级很多,合理利用的话能实现很多有用的功能(我不确定有多少人会做这种宏,所以就先保留上面的基础宏吧,后面我可能会把它们删了,只保留这种高级宏)。另外提一下,其实这种做法早就有了,比如这个:[[>>>[PVP]插旗和竞技场打断施法提示宏<<<]],它这个宏就是将一个比较长的宏拆分成了三个,虽然功能很强大,但是有个缺点,就是需要每次上线都依次点一下,比较麻烦。而我的高级宏则不需要依次点击,只要每次上线点击一次就行了(也可以绑定技能),这种方法我也是最近才发现的,不确定之前有没有人发现过。后续我会发一个帖子详细聊一下这种方法。

1.常用宏

举报离开玩家

首先做一个宏, 命名为 举报按钮:

RP_AFK=nil if UnitAffectingCombat("player")then SendSystemMessage("提示:战斗中无法使用举报宏!!")else local x,i,b,j=_,_,DropDownList1,"举报离开玩家";for _,x in ipairs({b:GetChildren()})do f=x.tooltipTitle if f==j then RP_AFK=x break end end end

然后再做一个宏,名字随便,比如举报离开玩家之类的都可以:

/click TargetFrame RightButton

/run local m={GetMacroInfo("举报按钮")}loadstring(m[3])()CreateFrame("Button", "B", UIParent, "SecureActionButtonTemplate")B:SetAttribute("type", "click")B:SetAttribute("clickbutton", RP_AFK)

/stopmacro [combat]

/click B

然后把这个宏拖入技能栏,选中要举报的人,点击这个宏就可以愉快地举报啦!

注意:这个宏无法在战斗中使用。

其实现在还有另外一种举报方式:shift+M 打开作战地图,右键地图上的人,全部举报(不用担心误举报,只要进入战斗举报状态就会消失)。

进入战场

首先做一个宏, 命名为 进入按钮:

J_B=nil if UnitAffectingCombat("player")then SendSystemMessage("提示:战斗中无法使用进入战场宏!!")else local x,f,j,b=_,_,"进入战场",DropDownList1;for _,x in ipairs({b:GetChildren()})do f=x.value if f==j then J_B=x break end end end

再做一个宏,名字随便,比如 进入战场:

/click MiniMapBattlefieldFrame RightButton

/脚本 local m={GetMacroInfo("进入按钮")}loadstring(m[3])()CreateFrame("Button", "J", UIParent, "SecureActionButtonTemplate")J:SetAttribute("type", "click")J:SetAttribute("clickbutton", J_B)

/stopmacro [combat]

/click J

然后把这个宏拖入技能栏,战场出的时候点击这个宏就行啦!(这个宏的原理是右键小地图旁边的战场按钮,然后点击进入战场)

注意:跟举报宏一样,无法在战斗状态下使用。

2.技能喊话宏

首先做一个宏,取名叫 CB

CreateFrame("frame",'F')F:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")return function(t)c=InActiveBattlefield()and"SAY"or IsInRaid()and"RAID"or IsInGroup()and"PARTY"or"EMOTE"SendChatMessage(t,c)end,i and"{rt"..i.."}"or '',CombatLogGetCurrentEventInfo

说明: 这是一个基础宏,只要放在那就行了,不用点击。它的意思是,如果在战场中,则打白字,如果在团队中,则在团队中喊话,如果在小队中,则在小队中喊话,如果不在队伍中,则打橙字(表情)(如果你想把白字 改成 大喊,把 SAY 替换成 YELL 就行了),如果目标身上有标记,则会在喊话中加上标记。后续的几个宏都会调用这个基础宏,所以名字什么的一定要填对。效果图:

做好基础宏之后,就可以做下面这些宏了:

打断成功喊话

/脚本 i=GetRaidTargetIndex("target")local d,b,c=loadstring(GetMacroBody("CB"))()F:SetScript("OnEvent",function()C={c()}m=C[2]:find("PT")and C[4]==UnitGUID("player")and d("打断→"..b..C[9].."的 ["..C[16].."]")end)

/stopcasting

/施放 法术反制

变羊成功喊话(技能生效喊话):

/脚本 i=GetRaidTargetIndex("target")local d,b,c=loadstring(GetMacroBody("CB"))()F:SetScript("OnEvent",function()C={c()}m=C[2]:find('AP')and C[13]=="变形术"and C[4]==UnitGUID("player")and d(b..C[9].." >>已被我变羊")end)

/施放 变形术

监测到目标身上的 BUFF 之后才喊话。

驱散喊话(通报驱散的BUFF)

/脚本 i=GetRaidTargetIndex("target")local d,b,c=loadstring(GetMacroBody("CB"))()F:SetScript("OnEvent",function()C={c()}m=C[2]=='SPELL_DISPEL'and C[4]==UnitGUID("player")and d("驱散→"b..C[9].."的 ["..C[16].."] ")end)

/施放 驱散魔法

驱散成功喊话,可以根据需要把 净化术 换成其他技能。

未命中喊话(包括抵抗、免疫之类的)

/脚本 i=GetRaidTargetIndex("target")local d,b,c=loadstring(GetMacroBody("CB"))()F:SetScript("OnEvent",function()C={c()}m=C[2]:find("MI")and C[4]==UnitGUID("player")and"嘲讽"==C[13]and d("嘲讽→"..b..C[9].." ( 被".._G[C[15]].." )")end)

/施放 嘲讽

如果技能被未命中则喊话(包括抵抗、免疫、躲闪之类的),此处以 嘲讽 为例。可以根据需要把 嘲讽 替换成其它技能。

如果只想要抵抗喊话的话,可以用下面这个:

/脚本 i=GetRaidTargetIndex("target")local d,b,c=loadstring(GetMacroBody("CB"))()F:SetScript("OnEvent",function()C={c()}m=C[2]:find("MI")and C[4]==UnitGUID("player")and"嘲讽"==C[13]and"抵抗"==_G[C[15]]and d("嘲讽→"..b..C[9].." ( 被抵抗 )")end)

/施放 嘲讽

以上宏中的技能可以根据需要替换成别的技能,这些宏我会不定期更新,请大家收藏此贴。

加入17173玩家俱乐部,100%领《原神》月卡、《王者荣耀》888点券、《魔兽世界》T恤等周边好礼!
加入方式:微信关注“17173服务号”

热点推荐

游戏头条