乌龟服德鲁伊奶德(治疗通用)一键治疗宏

回复
剥饺子
帖子: 10
被感谢: 2 次
联系:

乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 剥饺子 »

文章首发于:https://www.bilibili.com/read/cv30263234/

保命声明:
1)一键宏只是作为手动的补充,作为一个负责任的治疗,绝不可只依赖宏,也需要自己的判断;
2)宏不可能适用所有场景,务必根据现场情况判断是否使用该宏;
3)本文会介绍一些细节如何修改宏,请根据自身情况(不同职业、不同治疗量)调整参数;
4)本文旨在抛砖引玉,若有任何批评、建议,欢迎在下方回复。

开始正文:
工欲善其事,必先利其器。为了编写这个一键治疗宏,我们需要先准备好治疗的基础宏,再由一键宏调用各个基础宏。预计分几章介绍以下内容:
1)根据掉血量,释放不同等级的治疗技能;
2)团队自动寻找目标治疗;
3)大小迅捷优先保证坦克(T)的安全。

注意事项:
1、请务必先安装SuperMacro插件;
2、因为涉及到宏调用的情况,以下所有的宏请在超级宏页面下创建,且保持宏名称一致。
剥饺子
帖子: 10
被感谢: 2 次
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 剥饺子 »

第一章-- 根据掉血量,释放不同等级的治疗技能:

宏名称:愈

代码: 全选

/script local c, f, u = CastSpellByName, UnitIsFriend("Player", "target"), UnitExists("targettarget") local x, d if f then x = "target" else if u then x = "targettarget" else x = "player" end end d = UnitHealthMax(x) - UnitHealth(x) local thresholdArrayBJZ = { 600, 900, 1100, 1400, 1700, 2000 } local spellArrayBJZ = { "愈合(等级 3)", "愈合(等级 4)", "愈合(等级 5)", "愈合(等级 6)", "愈合(等级 7)", "愈合(等级 8)", } local findSpellFlag = false for i = 1, 6 do if d < thresholdArrayBJZ[i] then c(spellArrayBJZ[i]) findSpellFlag = true break end end if not findSpellFlag then c("愈合") end
宏名称:触

代码: 全选

/script local c, f, u = CastSpellByName, UnitIsFriend("Player", "target"), UnitExists("targettarget") local x, d if f then x = "target" else if u then x = "targettarget" else x = "player" end end d = UnitHealthMax(x) - UnitHealth(x) local thresholdArrayBJZ = { 600, 1000, 1200, 1400, 1800, 2200, 2600, 3000 } local spellArrayBJZ = { "治疗之触(等级 3)", "治疗之触(等级 4)", "治疗之触(等级 5)", "治疗之触(等级 6)", "治疗之触(等级 7)", "治疗之触(等级 8)", "治疗之触(等级 9)", "治疗之触(等级 10)", } local findSpellFlag = false for i = 1, 8 do if d < thresholdArrayBJZ[i] then c(spellArrayBJZ[i]) findSpellFlag = true break end end if not findSpellFlag then c("治疗之触") end

在此需要注意以下几点:
1)该宏本质上适用于所有职业的治疗,你可以根据自己职业的技能和对应的治疗量,更改thresholdArrayBJZ和spellArrayBJZ中的治疗量和治疗技能。且thresholdArrayBJZ、spellArrayBJZ中的数量与for循环中的数量(如愈宏中的6)需要对应上;
如图:图片

2)本宏的作用是打地鼠式治疗,如果团长安排你看坦克(T),请使用自己职业对应等级的技能(如:治疗之触(等级 7))预读看坦克(T),切勿使用本宏;
上次由 剥饺子 在 周五 2月 02, 2024 8:02 pm,总共编辑 3 次。
剥饺子
帖子: 10
被感谢: 2 次
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 剥饺子 »

第二章-- 团队自动寻找目标治疗:

宏名称:奶团1

代码: 全选

/script local membersNumberBJZ = GetNumRaidMembers() for index = 1, membersNumberBJZ do local name = GetRaidRosterInfo(index) TargetByName(name) local HP = UnitHealth("target") local lostHP = UnitHealthMax("target") - HP if lostHP > 600 and not FindBuff("愈合", "target") then RunSuperMacro("愈") break end end
原理:循环团队成员,寻找损失血量超过600的成员,然后调用先前编写好的“愈”宏,使用合适等级的技能进行治疗。

以下为格式化未压缩带注释的宏,可以根据自己的需求修改再进行压缩使用:

代码: 全选

local membersNumberBJZ= GetNumRaidMembers() --获取团队成员总数
for index = 1, membersNumberBJZ do
    local name = GetRaidRosterInfo(index) --获取团队成员名称
    TargetByName(name)
    local HP = UnitHealth("target")
    local lostHP = UnitHealthMax("target") - HP
    if lostHP > 600 and not FindBuff("愈合", "target") then  --若当前目标损失生命值大于600且他身上没有愈合的BUFF
        RunSuperMacro("愈") --调用名称为“愈”的超级宏
        break
    end
end
优点:
1、开箱即用,无需额外配置;
2、性能较好,较少出现卡顿现象。
缺点:
1、你可能会遇到超出距离、有成员死亡等情况导致无法找到对应目标的问题,需要手动使用第一章的宏;
2、只使用愈宏,没有使用触宏,也没有是否树人的判断。

根据以上情况,有了以下宏:

宏名称:奶团5

代码: 全选

/script local membersNumberBJZ = GetNumRaidMembers() for index = 1, membersNumberBJZ do local name = GetRaidRosterInfo(index) TargetByName(name) local HP = UnitHealth("target") local lostHP = UnitHealthMax("target") - HP if lostHP > 600 then if IsUsableAction(20) then if IsActionInRange(21) == 1 and not UnitIsDeadOrGhost("target") then RunSuperMacro("触") break end else if not FindBuff("愈合", "target") then if IsActionInRange(21) == 1 and not UnitIsDeadOrGhost("target") then RunSuperMacro("愈") break end end end end end
本宏重点:
距离判断:IsActionInRange(21)
团员死亡or灵魂状态判断:UnitIsDeadOrGhost("target")
德鲁伊人or树形态判断:IsUsableAction(20)

这里需要你将任意等级的治疗之触,放置在动作条栏位20上(原始动作条共12个栏位,翻页到下一页的倒数第4个栏位就是20);愈合放置在栏位21上。见下图:
图片

注意:
1、经测试IsActionInRange指令十分消耗性能,可能会导致你游戏卡顿。若卡顿的,你可以使用第二期的宏。
2、我使用时也会出现一些奶不了团员的异常情况,所以请不要依赖此宏。可以配合第一期的宏,自己判断选择治疗目标进行治疗。
3、注意RunSuperMacro("愈")、RunSuperMacro("触")为调用了第一章写的超级宏,若你的名称不同,请修改名称。
上次由 剥饺子 在 周五 2月 02, 2024 8:06 pm,总共编辑 2 次。
剥饺子
帖子: 10
被感谢: 2 次
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 剥饺子 »

第三章-- 大小迅捷优先保证坦克(T)的安全:

宏名称:找T

代码: 全选

/script MembersNumber = GetNumRaidMembers() TankNumberArrayJz = {} TankNumber = 0 local tankThreshold = 6000 for index = 1, MembersNumber do local name = GetRaidRosterInfo(index) TargetByName(name) if UnitHealthMax("target") > tankThreshold then TankNumberArrayJz[TankNumber + 1] = name TankNumber = TankNumber + 1 end end
该宏的目的是,获取团队中血量超过阈值6000的人,将这些人视为T,优先保证这些人的安全。可以根据你团队T的情况更改tankThreshold血量阈值,正确识别到T。
注意:
1、需要在每一次开团,所有成员进团且buff齐后之后,使用1次该宏。初始化完成后就不需要使用了。
2、注意使用时机与6000的血量阈值,是否需要根据你团队进行修改
3、若使用后队伍有调整,需要再次使用此宏进行初始化,寻找团队成员

宏名称:奶T5

代码: 全选

/script if FindBuff("自然迅捷", "player") then if IsUsableAction(20) then CastSpellByName("治疗之触") else CastSpellByName("愈合") end else local TSafeNumber = 0 local quickThreshold = 3000 for index = 1, TankNumber do TargetByName(TankNumberArrayJz[index]) local HP = UnitHealth("target") local lostHP = UnitHealthMax("target") - HP if HP < quickThreshold then if IsActionInRange(21) == 1 and not UnitIsDeadOrGhost("target") then local jzCreated = 1 if GetActionCooldown(22) == 0 and (FindBuff("愈合", "target") or FindBuff("回春术", "target")) then CastSpellByName("迅捷治愈") break else if GetActionCooldown(23) == 0 then CastSpellByName("自然迅捷") break else CastSpellByName("愈合") break end end else TSafeNumber = TSafeNumber + 1 end else if not FindBuff("回春术", "target") and not FindBuff("回春术", "player") then if lostHP > 500 and IsActionInRange(21) == 1 and not UnitIsDeadOrGhost("target") then CastSpellByName("回春术") break else TSafeNumber = TSafeNumber + 1 end else TSafeNumber = TSafeNumber + 1 end end end if TSafeNumber >= TankNumber then RunSuperMacro("奶团5") end end
该宏的目的是:
1、循环T组成员,若血量低于阈值3000,身上有愈合或者回春就释放小迅捷,若身上没有就大迅捷+满级触;
2、不满足以上情况,则判断T掉血且没有回春,挂回春;
3、不满足以上情况,就执行奶团5宏;
4、可以根据团队T的情况更改阈值quickThreshold
5、使用该宏的前提使用了找T宏。

最后再次声明,我也是初出茅庐的德鲁伊玩家,这一系列的宏只是兴趣使然。
我还没有在高强度的团本中使用过,无论什么本都不可完全依赖此宏。
我在被分配如看T任务的情况下,我也是老老实实预读。遇到各类突发情况,也是依据自己的判断奶团队。
yanyitong55555
帖子: 1
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 yanyitong55555 »

第一章的 愈和触,两个宏无法启动啊,整片照抄复制进超级宏里,无法使用~
剥饺子
帖子: 10
被感谢: 2 次
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 剥饺子 »

因为游戏版本原因,在buff超过16个后,无法正确的通过宏命令读取到目标身上buff(如:回春术)。所以在奶T宏中,若T吃了很多药剂导致buff超过16个后,会导致无限给该T放回春的情况。最新内容更新在了b站文章:
https://www.bilibili.com/read/cv31797077/
剥饺子
帖子: 10
被感谢: 2 次
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 剥饺子 »

yanyitong55555 写了: 周三 2月 21, 2024 3:43 pm 第一章的 愈和触,两个宏无法启动啊,整片照抄复制进超级宏里,无法使用~
1、是否安装超级宏SuperMacro?
2、是否在超级宏页面中创建使用宏?
头像
ekiny
帖子: 1
联系:

Re: 乌龟服德鲁伊奶德(治疗通用)一键治疗宏

帖子 ekiny »

大佬我看你创建的有大迅捷的宏,是一键迅捷+触吗?我用之前怀旧的宏,偶尔是卡触放不出来,麻烦大佬分享一下大迅捷宏,最好是带鼠标指向人物和框架的那种哈
回复