魔锋的加血逻辑如何改变?大佬们教教我!!
魔锋的加血逻辑有点怪!!!多个成员损失生命值达到条件时,魔锋的逻辑是优先治疗最低生命值的目标,而不是优先治疗损失生命值最多的目标。比如设定条件为血量低于90%加血,坦克满血5万,掉血50%,还剩2万5;输出职业满血2万,掉血20%,还剩1万6。这个时候搞笑的来了,魔锋非要去治疗掉血20%的成员,就因为坦克职业现有血量比输出职业高。
例如下面这段代码,我尝试过各种修改,仍然不能做到优先治疗损失生命值最多的成员
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
试过改成下面这样,还是不行。魔锋还是会优先治疗最低生命值的成员,而不是损失生命值最多的成员
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,依然行不通。
我也参考过其他大佬写的脚本,貌似区别都不大,都是优先生命值最低的目标而不是损失生命值最多的目标。
自己算- -
去用官方方法拿到目标的当前血量和最大血量 vshrd 发表于 2024-5-28 02:22 PM
自己算- -
去用官方方法拿到目标的当前血量和最大血量
老大,我是新手,能稍微说的详细点么?感谢您!!!{:5_173:} WOW API里找方法
我没记错的话应该是GetUnitMaxHealth()和GetUnitHealth() 本帖最后由 吾奶常煽赵子龙 于 2024-5-28 06:02 PM 编辑
自己判断:
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或其他值表示获取损失的血量;
本帖最后由 7858321 于 2024-5-28 06:33 PM 编辑
我记得好像一句就解决了问题了
BeeGroupMinHealthCast(false,false,false,false,50,"<","快速治疗","raid")
快速治疗 治疗 raid(团队)血量少于50%的队友。
算了,自己看吧
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。如果没人掉血那么就会返回其中某人的血量,所以使用时要判断目标血量。
本帖最后由 7858321 于 2024-5-28 06:44 PM 编辑
或者你写的代码中的BeeUnitHealth(unit,"%")<90写成BeeUnitHealth(unit,"%",1)>50就是缺失血量大于50%
7858321 发表于 2024-5-28 06:42 PM
或者你写的代码中的BeeUnitHealth(unit,"%")50就是缺失血量大于50%
我还试过把BeeUnitHealth(unit,"%")<90 改成BeeUnitHealth(unit,"%",1)>10,依然行不通。
页:
[1]
2