请教一个判断团队多人掉血的用法
判断团队里有多个人在75%血以下,使用了以下方法local n,Unit = BeeGroupCountScript('BeeSpellCD("治疗祷言")==0',"BeeUnitHealth(unit,'%')<75andnot UnitIsDeadOrGhost(unit)","party")想具体了解一下原理,以便改成MS的治疗祷言用法
请教一下:
1.参数1和参数2既然都是条件,它们写在一起行不行,两个条件是and的关系么
2.参数3如何限制范围在团队中的队伍1,队伍2,队伍3,队伍4,队伍5,因为祷言是单队伍的
function BeeGroupMinFastScript(String, StrReturn, group) -- 小队或者团队里最小的数值的人物信息
if not(group == "party" or group == "partypet" or group == "raid" or group == "raidpet" or group == "arena" or group == "arenapet") then
print("|cffff0000 group 参数不对") -- 如果group参数不正确,则打印错误信息
return false
end
if String == nil or StrReturn == nil then
print("|cffff0000 String 或 StrReturn 参数不能为空") -- 如果String或StrReturn参数为空,则打印错误信息
return false
end
local vname = "BeeGroupMinFast"; -- 定义一个局部变量vname,用作后面脚本的标识
local str = 'function TEMP_BeeGroupMinFast(name,class,race,spell,unit,guid,spellcd) if ' .. String .. ' then return ' .. StrReturn .. '; else return false; end end'
-- 定义一个字符串str,它是一个Lua函数的源代码,这个函数后面会被执行
if BeeGetVariable(vname .. "_Str", str) then
if BeeGetVariable(vname .. "_Str", str) ~= str then
RunScript(str); -- 如果之前存储的函数源代码与新的str不同,则执行新的函数源代码
end
else
RunScript(str); -- 如果之前没有存储函数源代码,则执行函数源代码
BeeSetVariable(vname .. "_Str", str); -- 存储函数源代码
end
local unit;
local Members, minimum, temp_unit;
local temp_n = nil;
if group == "party" or group == "partypet" then
Members = GetNumPartyMembers() + 1; -- 如果是小队或小队宠物,则计算成员数
elseif group == "raid" or group == "raidpet" then
Members = GetNumRaidMembers(); -- 如果是团队或团队宠物,则计算成员数
elseif group == "arena" then
Members = 5; -- 如果是竞技场,则成员数为5
elseif group == "arenapet" then
Members = 5; -- 如果是竞技场宠物,则成员数为5
end
for i = 1, Members do
if i == Members and group == "party" then
unit = "player"; -- 如果是最后一个小队成员,则检查玩家自己
elseif i == Members and group == "partypet" then
unit = "pet"; -- 如果是最后一个小队宠物,则检查宠物
else
unit = group .. tostring(i); -- 否则构造单元的名称
end
if UnitName(unit) then
minimum = TEMP_BeeGroupMinFast(unit); -- 调用之前定义的函数,传入当前单元
if minimum then
if temp_n == nil then
temp_n = minimum; -- 如果是第一个有效的最小值,则保存
temp_unit = unit;
elseif minimum < temp_n then
temp_n = minimum; -- 如果当前值更小,则更新保存的值
temp_unit = unit;
end
end
end
end
if temp_unit then
BeeSetVariable(vname .. "_Unit", temp_unit); -- 如果找到了有效的单元,则存储它
return temp_unit; -- 返回找到的单元
end
return false -- 如果没有找到,则返回false
end 你想要的要求一个都不能实现只要参数3不是 队伍 团队 队伍宠物团队宠物就返回不执行 语法
count ,Unit= BeeGroupCountScript(String,StrReturn,group);
参数
String
字符串 - 字符串關係表達式,以下是函數里的變量值
name - 人物名稱
class - 職業
race - 種族
spell - 正在施放的法術名稱
unit - 人物 UnitID
spellcd - 正在施放的法術剩餘時間
guid - 人物 Guid
注:String 可以有任何函數和變量出現
StrReturn
字符串 - 字符串表達式
group
字符串 - 指定獲得數值的團/隊
"party" - 小隊
"partypet" - 小隊寵物
"raid" - 團隊
"raidpet" - 團隊寵物
"arena" - 競技場敵人小隊
"arenapet" - 競技場敵人小隊寵物
仔细看魔蜂的API,你的想法要使用这个集成的函数根本无法实现! 有一个思路,自己遍历团队for i=1,#GetNumRaidMembers()do 找到血量低于75%的,并且他们属于同一个小队的目标,这里小队最好指定编号多写几行脚本,分别判断5个小队。然后对这个结果生命值升序对血量最小的目标释放治疗祷言。 感谢各位大佬帮助,思路正确,可在下不才不会写太复杂的代码。
最后想问一下,各位的魔蜂API,以及这些合成函数的源码在哪下的啊?哪天有空了,清闲了,再去顺着这个思路研究下去。 摩托皮卡 发表于 2024-4-24 10:34 AM
感谢各位大佬帮助,思路正确,可在下不才不会写太复杂的代码。
最后想问一下,各位的魔蜂API,以及这些合 ...
代码在插件WowBee.Functions.lua 里面 你可以自定义自己写的函数在里面然后自己调用这样就脱离了 魔峰不断执行初始化的弊端! 可以用循环遍历等功能但是魔蜂没更高级的功能比如 移动判断 选择目标 面对目标自己移动 等 所以 也只能作为入门级的 判断判断条件执行技能 !我都改用 NI插件了功能很多能写出很多智能化的 脚本 lulin155 发表于 2024-4-24 10:46 AM
代码在插件WowBee.Functions.lua 里面 你可以自定义自己写的函数在里面然后自己调用这样就脱离了...
好的大佬,我先把基础的魔蜂弄会,再去找NI插件
页:
[1]