lsm05042211 发表于 2024-4-28 18:13:14

不懂就问:冰DK换武器投附魔狂暴效果的语法问题

local Tbl = BeeUnitBuffList("target")
local buff = BeeUnitBuffList("player")
local A = BeeRune("冰霜符文")>0
local B = BeeRune("邪恶符文")>0
local C = (BeeTargetDeBuffTime("冰霜疫病")>18 and BeeTargetDeBuffTime("血之疫病")>18)
local D = BeeRune("死亡符文")>0
local E = BeeRune("鲜血符文")>0
local F = (BeeTargetDeBuffTime("冰霜疫病")>0 and BeeTargetDeBuffTime("血之疫病")>0)
local H = (BeeRune("冰霜符文")<1 and BeeRune("邪恶符文")<1)
local shoutao = "勇猛的天灾苦痛护手"
local yaoshui = "加速药水(永久)"
local L = BeeRune("鲜血符文")
local M = BeeRuneId("鲜血符文")
BeeRun("/console Sound_EnableSFX 0 ")

------------------插入技能
if BeeCastSpellFast() thenreturn trueend

------------------准备上BUFF 换红脸
if not IsMounted("player") and not UnitIsDeadOrGhost("player") and not BeeStringFind("鲜血灵气",buff) then BeeRun("鲜血灵气") end

-----------------非战斗状态上寒冬号角
if not IsMounted("player") and BeeUnitAffectingCombat() and BeePlayerBuffTime("寒冬号角")<0 then BeeRun("寒冬号角") end

-----------------上疾病
if (A or D) and BeeTargetDeBuffTime("冰霜疫病")<=0 then BeeRun("冰冷触摸") end
if (B or D) and BeeTargetDeBuffTime("血之疫病")<=0 then BeeRun("暗影打击") end

-----------------传染的条件
if F and (BeeTargetDeBuffTime("冰霜疫病")-1.6<0 or BeeTargetDeBuffTime("血之疫病")-1.6<0) then BeeRun("传染");return ;end
if H and BeeRuneCount(M)==1 and L==1 thenBeeRun("传染") end

----铜墙铁壁 情况一(冰邪CD,血2个都好)
if F and H and L==2and BeeSpellCD("活力分流")==0 then BeeRun("/cast 活力分流");return ;end
----铜墙铁壁 情况尔(冰邪CD,血2个CD)
if F and H and L==0 and BeeRuneCount(M)==2 and BeeSpellCD("活力分流")==0 then BeeRun("/cast 活力分流");return ;end
if F and H and D and BeeRuneCount(M)==1 and BeeStringFind("活力分流",buff) and BeeSpellCD("铜墙铁壁")==0 then BeeRun("/cast 铜墙铁壁");return;end
----取消活力分流(1)
if BeeStringFind("活力分流",buff) and BeeStringFind("铜墙铁壁",buff) and BeePlayerBuffTime("铜墙铁壁")<5 then BeeRun("/cancelaura 活力分流","player") end
if BeeStringFind("活力分流",buff) and BeeStringFind("铜墙铁壁",buff) and BeePlayerBuffTime("铜墙铁壁")>15 and L==0 and BeeRuneCount(M)==1 then BeeRun("/cancelaura 活力分流","player") end


----正常的输出:湮灭>血打>冰>凛风
----按Alt(左) 开始AOE,凛风好了就用
if F and BeeIsRun("凛风冲击") and IsLeftAltKeyDown() and (BeeSpellCD("凛风冲击")==0 or BeePlayerBuffTime("冰冻之雾")>0) then BeeRun("凛风冲击") end
----湮灭技能优先第一;符文成对有疾病时候输出
if((A and B) or BeeRune("死亡符文")==2) and F and BeeIsRun("湮没") then BeeRun("湮没");return;end
----鲜血打击:因为有前面的传染判定,这里有空闲的血符文就用
if E then BeeRun("鲜血打击") end
----符文全部冷却的时候:冰打、免费凛风冲击、号角
if not (A and B and D and E) andF and BeePlayerBuffTime("战斗之鼓")<0 then
    BeeRun("/cast<无限>泰坦之鼓","player")
end
if not (A and B and D and E) andF and BeeIsRun("冰霜打击") then BeeRun("冰霜打击") end
if not (A and B and D and E) andF and BeeIsRun("凛风冲击") and BeePlayerBuffTime("冰冻之雾")>0 then BeeRun("凛风冲击") end
if BeeUnitBuffCount("冰霜易伤", "target")>= 5 then
    if BeeUnitBuffTime("冰霜易伤", "target") > 5 then
      BeeRun("/equipslot 17 疯狂之吻")
    elseif BeeUnitBuffTime("冰霜易伤", "target") <= 5 then
      BeeRun( "/equipslot 17 沉默的十字军")
    end
end
if not (A and B and D and E) andF and not BeeIsRun("冰霜打击") andnot BeeIsRun("凛风冲击") and BeeSpellCD("寒冬号角")==0 then BeeRun("寒冬号角") end
if BeeUnitMana("player")>45 and IsSpellInRange("凋零缠绕")==1 and BeeRange("target")>15 then BeeRun("凋零缠绕") end
----有符文打击就用
if BeeUnitMana("player")>20 and BeeIsRun("符文打击") then BeeRun("符文打击") end


上述脚本中增加了“if BeeUnitBuffCount("冰霜易伤", "target")>= 5 then
    if BeeUnitBuffTime("冰霜易伤", "target") > 5 then
      BeeRun("/equipslot 17 疯狂之吻")
    elseif BeeUnitBuffTime("冰霜易伤", "target") <= 5 then
      BeeRun( "/equipslot 17 沉默的十字军")
    end
end”


可以实现自由换刀,然而出现的问题是换刀自由了,但是技能输出打的少了,换武器没有GCD,为啥输出技能打的少呢

maddd 发表于 2024-4-29 00:07:31

“if BeeUnitBuffCount("冰霜易伤", "target")>= 5 then 这个是大于等于5层冰霜易伤才执行下面的 确定没问题?

lsm05042211 发表于 2024-4-29 09:09:51

maddd 发表于 2024-4-29 12:07 AM
“if BeeUnitBuffCount("冰霜易伤", "target")>= 5 then 这个是大于等于5层冰霜易伤才执行下面的 确定没问 ...

这个没问题的,冰霜易伤就是5层debuff持续20秒的
换刀没问题,现在唯一的问题就在于刀是换了,但是技能也卡的放不出来,导致技能打的少了,尤其是湮灭和冰打。普攻没断过。
我感觉是上述脚本时间线没有梳理好,导致了卡技能

lsm05042211 发表于 2024-4-29 09:40:40

自己顶起来顶起来
{:5_248:}{:5_248:}{:5_248:}{:5_248:}{:5_248:}

电动男朋友 发表于 2024-4-29 17:23:18

我玩那个服务器   经过测试发现 换圣物 武器 之类的不在战斗状态时候 换武器是无CD的但是战斗状态就会卡个GCD   不知道 是不是 跟我这服务器一样

吾奶常煽赵子龙 发表于 2024-4-29 17:34:32

你只处理的大于5层,小于5层的时候应该也要处理下,冰霜易伤不足5层的时候应该是要拿沉默的十字军的把?
if BeeUnitBuffCount("冰霜易伤", "target")>= 5 then
    if BeeUnitBuffTime("冰霜易伤", "target") > 5 then
      BeeRun("/equipslot 17 疯狂之吻")
    elseif BeeUnitBuffTime("冰霜易伤", "target") <= 5 then
      BeeRun( "/equipslot 17 沉默的十字军")
    end
else
    -- 不加这个,如果一开始你拿的就是疯狂之吻,那么就一直加不上冰霜易伤了?
    BeeRun( "/equipslot 17 沉默的十字军")
end

lsm05042211 发表于 2024-4-30 09:11:26

电动男朋友 发表于 2024-4-29 05:23 PM
我玩那个服务器   经过测试发现 换圣物 武器 之类的不在战斗状态时候 换武器是无CD的但是战斗状态...

感谢感谢,还真的是这样的情况,所以冰DK换刀意义就不大了,GCD用来打1个冰打应该会比触发的狂暴效果要好,而且还能流畅输出

lsm05042211 发表于 2024-4-30 09:13:40

吾奶常煽赵子龙 发表于 2024-4-29 05:34 PM
你只处理的大于5层,小于5层的时候应该也要处理下,冰霜易伤不足5层的时候应该是要拿沉默的十字军的把?
[ ...

你说的这种是可行的,我没有加“BeeRun( "/equipslot 17 沉默的十字军")”之前都是手动检查的。

zlksdd 发表于 2024-4-30 10:41:36

本帖最后由 zlksdd 于 2024-4-30 11:10 AM 编辑

学习区的冰DK的脚本是22年写的,可能有考虑不周的情况,目前给的思路如下:
正常的冰DK输出循环21秒内:湮灭*3+冰打*2+?+湮灭*2+血打+传染+冰打*N,
“?”可能是冰打、号角或者冲击,或者是等待。
首选:你需要的去打木桩看看整体输出循环,每个技能打了多少次,是否出现了断循环的过程,断循环看看补两个疾病的次数就知道了;
第二步:加入了换刀的过程,再看看,技能的次数,断循环的过程;如果是断循环的次数多了,需要观察整个过程在什么情况下会出现断循环的过程,分析好
第三步,优化条件的判断,更加合理的设计输出逻辑,避免断循环的状况。

feixia5693 发表于 2024-4-30 17:18:50

会卡掉普攻或者技能的,三刀流脚本早就有了,实现难度不大,但是没多大意义,
页: [1] 2
查看完整版本: 不懂就问:冰DK换武器投附魔狂暴效果的语法问题