LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 520|回复: 12

[wowbee] 魔锋的加血逻辑如何改变?大佬们教教我!!

[复制链接]
发表于 2024-5-28 14:16:41 | 显示全部楼层 |阅读模式
魔锋的加血逻辑有点怪!!!多个成员损失生命值达到条件时,魔锋的逻辑是优先治疗最低生命值的目标,而不是优先治疗损失生命值最多的目标
比如设定条件为血量低于90%加血,坦克满血5万,掉血50%,还剩2万5;输出职业满血2万,掉血20%,还剩1万6。这个时候搞笑的来了,魔锋非要去治疗掉血20%的成员,就因为坦克职业现有血量比输出职业高。


例如下面这段代码,我尝试过各种修改,仍然不能做到优先治疗损失生命值最多的成员
[Lua] 纯文本查看 复制代码
grouptype=""
if GetNumRaidMembers()>0
then
    grouptype="raid"
else
    grouptype="party"
end

local SS=BeeGroupMinScript('BeeRange(unit)<=40 and UnitCanAssist("player",unit) and not UnitIsDeadOrGhost(unit) and BeeUnitHealth(unit,"%")<90',"BeeUnitHealth(unit)",grouptype)

if UnitExists(SS) and BeeIsRun("圣光闪现",SS)
then
    BeeRun("圣光闪现",SS)
    return
end



试过改成下面这样,还是不行。魔锋还是会优先治疗最低生命值的成员,而不是损失生命值最多的成员
[Lua] 纯文本查看 复制代码
grouptype=""
if GetNumRaidMembers()>0
then
    grouptype="raid"
else
    grouptype="party"
end

local SS=BeeGroupMinScript('BeeRange(unit)<=40 and UnitCanAssist("player",unit) and not UnitIsDeadOrGhost(unit) and BeeUnitHealth(unit,"%")<90',"BeeUnitHealth(unit)",grouptype)

if UnitExists(SS) and BeeUnitHealth(SS,"%")<30 and BeeIsRun("圣光闪现",SS)
then
    BeeRun("圣光闪现",SS)
    return
end
if UnitExists(SS) and BeeUnitHealth(SS,"%")<50 and BeeIsRun("圣光闪现",SS)
then
    BeeRun("圣光闪现",SS)
    return
end
if UnitExists(SS) and BeeUnitHealth(SS,"%")<80 and BeeIsRun("圣光闪现",SS)
then
    BeeRun("圣光闪现",SS)
    return
end
if UnitExists(SS) and BeeUnitHealth(SS,"%")<90 and BeeIsRun("圣光闪现",SS)
then
    BeeRun("圣光闪现",SS)
    return
end



我还试过把BeeUnitHealth(unit,"%")<90 改成BeeUnitHealth(unit,"%",1)>10,依然行不通。
回复

使用道具 举报

 楼主| 发表于 2024-5-28 14:20:57 | 显示全部楼层
我也参考过其他大佬写的脚本,貌似区别都不大,都是优先生命值最低的目标而不是损失生命值最多的目标。

回复 支持 反对

使用道具 举报

发表于 2024-5-28 14:22:01 | 显示全部楼层
自己算- -
去用官方方法拿到目标的当前血量和最大血量
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 14:26:49 | 显示全部楼层
vshrd 发表于 2024-5-28 02:22 PM
自己算- -
去用官方方法拿到目标的当前血量和最大血量

老大,我是新手,能稍微说的详细点么?感谢您!!!
回复 支持 反对

使用道具 举报

发表于 2024-5-28 14:33:55 | 显示全部楼层
WOW API里找方法
我没记错的话应该是GetUnitMaxHealth()和GetUnitHealth()
回复 支持 反对

使用道具 举报

发表于 2024-5-28 17:55:50 | 显示全部楼层
本帖最后由 吾奶常煽赵子龙 于 2024-5-28 06:02 PM 编辑

自己判断:
[Lua] 纯文本查看 复制代码
local unit = nil;
local prefix = "";
local count = 0;

if GetNumRaidMembers() > 0 then
    prefix = "raid";
    count = 40;
elseif GetNumPartyMembers() > 0 then
    prefix = "party";
    count = GetNumPartyMembers();
end

if prefix ~= "" then
    local maxLossHealth = 0;
    for i = 1, count do
        local unitId = prefix .. i;
        if UnitExists(unitId) and not UnitIsDeadOrGhost(unitId) and UnitCanAssist("player", unitId) and BeeRange(unitId) <= 40 then
            local lossHealth = BeeUnitHealth(unitId, nil, 1);
            if lossHealth > maxLossHealth then
                maxLossHealth = lossHealth;
                unit = unitId;
            end
        end
    end
else
    if BeeUnitHealth("player", "%") < 100 then
        unit = "player"
    end
end

if unit then
    BeeRun("圣光闪现", unit)
end


BeeUnitHealth:
第二个参数:传%或1,表示以百分比方式获取血量,传nil或其他的表示获取具体的血量数值;
第三个参数:不传或传0表示获取当前血量,传1或其他值表示获取损失的血量;

回复 支持 反对

使用道具 举报

发表于 2024-5-28 18:26:06 | 显示全部楼层
本帖最后由 7858321 于 2024-5-28 06:33 PM 编辑

我记得好像一句就解决了问题了
[Lua] 纯文本查看 复制代码
BeeGroupMinHealthCast(false,false,false,false,50,"<","快速治疗","raid")

快速治疗 治疗 raid(团队)血量少于50%的队友。
回复 支持 反对

使用道具 举报

发表于 2024-5-28 18:31:34 | 显示全部楼层
算了,自己看吧
[Lua] 纯文本查看 复制代码
BeeGroupMinHealthCast

傻瓜式获得小隊或團隊裡最小數值的人物或者对其施放技能 

语法
        unit=BeeGroupMinHealthCast(DeBuffs,Buff,BuffOperator,BuffCd,Health,HealthOperator,Spell,Group)

参数




DeBuffs(可选)
字符串 - 
注:DeBuffs 可以有多个BUFF 用逗号【,】分开 如:"刺骨之寒,恐惧" ,一般用来判断DBUFF但也可以用来判断其他BUFF.

Buff(可选)
字符串 - 只能判断一个 BUFF 多写...那个是SB。

BuffOperator(可选)
字符串 - 比较运算符,判断比较 Buff 的CD(BuffCd),和 BuffCd 配合使用。
*如:== , <= , >= , > , < , ~= 这些。

BuffCd(可选)
数值 - 判断比较 Buff 的CD,和 BuffOperator 配合使用。

Health(可选)
数值 - 判断比较血量(百分比),和 HealthOperator 配合使用。

Spell(可选)
字符串 - 要施放的技能名称只能一个技能。多写...那个是SX。

group(必须)
字符串 - 指定獲得數值的團/隊
         "party"      - 小隊
         "partypet" - 小隊寵物
         "raid"        - 團隊
         "raidpet"   - 團隊寵物
         "arena"     - 競技場敵人小隊

*标明(可选)时如果没具体参数那么必须把参数写为 false。





返回值


當 String 表達式 的結果為 true 時
返回 unit 反之返回 nil。

當 String 表達式 的結果為 true 時
同時也返回相應全局變量可通過amgv函數獲得值
unit       -  amgv("amminimum_unit")
反之返回 nil。



备注

        
  參數區分大小寫


请参考






Unit 详细请看Unit的说明

例子1:local Unit = BeeGroupMinHealthCast("刺骨之寒","回春术","<=",1,35,"<","回春术","raid")

if Unit then

return true; 

end 
复制代码找到 raid(团队) 身上有 刺骨之寒 并且身上没 回春术 或者 回春术 效果少于1秒 并且血量底于35%的队友,对其施放回春术。


例子2:
local Unit = BeeGroupMinHealthCast(false,"回春术","<=",1,false,false,"回春术","raid")

if Unit then

return true; 

end 
复制代码
找到 raid(团队)身上没 回春术 或者 回春术 效果少于1秒 的队友,对其施放回春术。

*那个改下 回春术 为 力量祝福 那么就是全团补BUFF当然是从血量最少的补起。



例子3:local Unit = BeeGroupMinHealthCast("肾击,制裁之锤,深度冻结,突袭,血袭,打劫,暗影之怒,猛击,冲击波,冲击,恶魔拦截,胁迫,挤压,战争践踏,火焰冲撞,震荡波,震荡猛击,星火昏迷,疲劳诅咒,冰冻陷阱,冰冻陷阱雕文,冰霜新星,地缚术,断筋,蛛网,残废术,寒冰屏障",false,false,false,false,false,"自由之手","raid")

if Unit then

return true; 

end 
复制代码用 自由之手 解除团队(raid),小队(party)中了 “肾击,制裁之锤,深度冻结,突袭,血袭,打劫,暗影之怒,猛击,冲击波,冲击,恶魔拦截,胁迫,挤压,战争践踏,火焰冲撞,震荡波,震荡猛击,星火昏迷,疲劳诅咒,冰冻陷阱,冰冻陷阱雕文,冰霜新星,地缚术,断筋,蛛网,残废术,寒冰屏障” 并且血量最少的。
同理别的职业改下技能或者BUFF列表就行了。



例子4:local Unit = BeeGroupMinHealthCast(false,false,false,false,50,"<","快速治疗","raid")

if Unit then

return true; 

end 
复制代码快速治疗 治疗 raid(团队)血量少于50%的队友。



例子5:local Unit = BeeGroupMinHealthCast("刺骨之寒",false,false,false,false,false,false,"raid") 
复制代码获得 raid(团队)中了 刺骨之寒 并且血量最低的人的人物ID。


例子6:local Unit = BeeGroupMinHealthCast(false,false,false,false,false,false,false,"raid") 
复制代码获得 raid(团队)血量最低的人的人物ID。如果没人掉血那么就会返回其中某人的血量,所以使用时要判断目标血量。
回复 支持 反对

使用道具 举报

发表于 2024-5-28 18:42:09 | 显示全部楼层
本帖最后由 7858321 于 2024-5-28 06:44 PM 编辑

或者你写的代码中的BeeUnitHealth(unit,"%")<90写成BeeUnitHealth(unit,"%",1)>50  就是缺失血量大于50%

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入我们

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 12:41:18 | 显示全部楼层
7858321 发表于 2024-5-28 06:42 PM
或者你写的代码中的BeeUnitHealth(unit,"%")50  就是缺失血量大于50%

我还试过把BeeUnitHealth(unit,"%")<90 改成BeeUnitHealth(unit,"%",1)>10,依然行不通。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2025-5-2 02:00 AM , Processed in 0.072090 second(s), 34 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表