标签归档:

焦点宏详解教程

以焦点为中心的焦点宏

#showtooltip
/施放 [target, mod:alt][@focus, exists, harm] 窒息; 窒息

上述宏执行逻辑:

  • 有目标,无焦点:对目标施放
  • 有目标,有焦点:对焦点施放
  • 有目标,有焦点,并按下 alt:对目标施放
  • 无目标,有焦点:对焦点施放

以当前目标为中心的焦点宏

#showtooltip
/施放 [@focus, exists, harm, mod:alt][target] 窒息

上述宏执行逻辑:

  • 有目标,无焦点:对目标施放
  • 有目标,有焦点:对目标施放
  • 有目标,有焦点,并按下 alt:对焦点施放
  • 无目标,有焦点:不执行动作

个人的偏好是第一种,以焦点为中心的焦点宏,也就是默认的按键行为在有焦点的时候都施放在焦点上,而无焦点时则默认施放在当前目标上,但由于 target 使用了 modifier 的判断,导致以焦点为中心的焦点宏的默认动作无法自动 fallback 到最后要执行的技能,所以从上边的例子可以看出,我们需要单独再定义一个 fallback 技能,这是这个宏唯一不优雅的地方。

如何隐藏动作条上的文本/快捷键

消息源:Hiding macro text & hotkeys

插件版本,同时隐藏 HotKey(快捷键)和 Name(宏名称):

local noop = function() end
hooksecurefunc("ActionButton_Update", function(btn)
    local hotkey = _G[btn:GetName().."HotKey"]
    hotkey:SetText("")
    hotkey.Show = noop
    hotkey:Hide()
end)

hooksecurefunc("ActionButton_Update", function(btn)
    local name = _G[btn:GetName().."Name"]
    name:Hide()
end)

下面有人提供了宏的版本,只隐藏快捷键,方法更简单,把 alpha 值改为 0 即可:

/run for i=1,12 do _G["ActionButton"..i.."HotKey"]:SetAlpha(0)end

不过上述都只隐藏主动作条,我来优化一下,隐藏所有动作条的快捷键:

/run local r={"MultiBarBottomLeft", "MultiBarBottomRight", "Action", "MultiBarLeft", "MultiBarRight"} for b=1,#r do for i=1,12 do _G[r[b].."Button"..i.."HotKey"]:SetAlpha(0) end end

隐藏所有动作条的宏名称:

/run local r={"MultiBarBottomLeft", "MultiBarBottomRight", "Action", "MultiBarLeft", "MultiBarRight"} for b=1,#r do for i=1,12 do _G[r[b].."Button"..i.."Name"]:SetAlpha(0) end end

如何编写多语言宏

多语言宏可以做到切换不同语言客户端后,无需修改宏语言做到无缝切换,也可以节省角色宏的槽位

双语言例子:

#showtooltip
/施放 冰封之韧
/施放 灵界打击
/use Icebound Fortitude
/use Death Strike
#showtooltip 
/施放 [nomod,btn:1] 炼金术;[nomod,btn:2] 工程学 
/施放 [mod:shift,btn:1] 烹饪;[mod:shift,btn:2] 烹饪用火
/use [nomod,btn:1]Alchemy;[nomod,btn:2]Engineering 
/use [mod:shift,btn:1]Cooking;[mod:shift,btn:2]Cooking Fire

要点与技巧:

  • 非英文技能必须使用本地化命令,这样可以让英文客户端直接忽略该行命令
  • 英文命令永远排在最后
  • 要显示图标的技能永远放在当前语言的第一位
  • 英文命令中 /cast 可以用 /use 代替,节省字节

下面是多语言例子:

#showtooltip
/施放 冰封之韧
/施放 灵界打击
/lanzar Entereza ligada al hielo
/lanzar Golpe letal
/use Icebound Fortitude
/use Death Strike

下面是动态技能宏(同等级天赋技能判断宏)的多语言例子:

#showtooltip
/施放 白骨风暴
/施放 血之镜像
/use Bonestorm
/use Blood Mirror
/run local G=GetSpellInfo SetMacroSpell("DK-BS", G"白骨风暴" or G"血之镜像" or G"Bonestorm" or G"Blood Mirror")

一键删除所有通用宏/角色专用宏

删除所有通用宏:

/script for i=1,120 do DeleteMacro(i) end

删除所有角色专用宏:

/script for i=121,138 do DeleteMacro(i) end

删除所有宏(通用+角色专用)

/script for i=1,138 do DeleteMacro(i) end

竞技场敌对姓名版改为小队数字的方法

每次载入角色后执行

/run local U=UnitIsUnit hooksecurefunc("CompactUnitFrame_UpdateName",function(F)if IsActiveBattlefieldArena()and F.unit:find("nameplate")then for i=1,5 do if U(F.unit,"arena"..i)then F.name:SetText(i)F.name:SetTextColor(1,1,0)break end end end end)

效果:

数据来源:PSA: Arena Numbers on Nameplates

通过宏快速切换游戏音量设置

经常会有频繁调整系统音量的场景,比如打团本的时候需要关掉音乐、降低环境音量以及音效音量,而平时有想感受一下优美的音乐,这时候就需要频繁的打开系统设置界面调整音量设置,十分繁琐,然而音量设置都可以通过操作 CVars 进行调整:

/console SET Sound_MasterVolume 0.4
/console SET Sound_SFXVolume 0.2
/console SET Sound_MusicVolume 0.1
/console SET Sound_AmbienceVolume 0.1
/console SET Sound_DialogVolume 0.6

上述五个设置分别对应截图中的音量设置:

  • Sound_MasterVolume – 系统总音量
  • Sound_SFXVolume – 音效音量,对应技能音效
  • Sound_MusicVolume – 音乐音量
  • Sound_AmbienceVolume – 环境音量
  • Sound_DialogVolume – 对话音量

酒仙武僧玄牛雕像宏

当天赋选择为 玄牛雕像 时,自动选择 玄牛雕像嘲讽,然后自动选择上一次选定的目标,可用来代替普通的嘲讽宏

#showtooltips
/target [talent:4/2] Black Ox Statue 
/cast Provoke
/targetlasttarget [talent:4/2]

点击后自动解散 玄牛雕像

#showtooltips Summon Black Ox Statue
/click TotemFrameTotem1 RightButton

鼠标指向宏详解

基本鼠标指向宏,默认只会向鼠标指向的目标释放:

#showtooltips
/cast [@mouseover] Penance

增强版,此指向宏默认只会向敌对目标释放:

#showtooltips
/cast [@mouseover, harm, exists] Penance

继续优化,上述指向宏在没有指向目标时不会释放任何技能,可以优化为在无指向目标时,执行默认的动作:

#showtooltips
/cast [@mouseover, harm, exists] Penance, Penance

友方指向宏:

#showtooltips
/use Rapture
/cast [@mouseover, help, nodead] [help, nodead] [@player] Power Word: Shield

动态技能宏详解

例子:

#showtooltip
/cast Bonestorm
/cast Blood Mirror
/run local G=GetSpellInfo SetMacroSpell("BS", G"Bonestorm" or G"Blood Mirror")

此方法的前提是必须将宏的名字设为 SetMacroSpell 的第一个参数,比如上面的 BS,宏的名字就必须是 BS,再比如:

#showtooltip
/cast [pvptalent:6/3]Necrotic Strike
/cast Clawing Shadows
/run local G=GetSpellInfo SetMacroSpell("NS", G"Necrotic Strike(Honor Talent)" or G"Clawing Shadows")

上面的这个宏的名字就必须是 NS,否则 SetMacroSpell 图标不会生效