摩托皮卡 发表于 2024-4-23 23:59:21

请教一个判断团队多人掉血的用法

判断团队里有多个人在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,因为祷言是单队伍的

lulin155 发表于 2024-4-24 09:12:24

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

lulin155 发表于 2024-4-24 09:18:57

你想要的要求一个都不能实现只要参数3不是 队伍 团队 队伍宠物团队宠物就返回不执行

xiaolin204 发表于 2024-4-24 09:20:41

语法
      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,你的想法要使用这个集成的函数根本无法实现!

xiaolin204 发表于 2024-4-24 10:08:09

有一个思路,自己遍历团队for i=1,#GetNumRaidMembers()do 找到血量低于75%的,并且他们属于同一个小队的目标,这里小队最好指定编号多写几行脚本,分别判断5个小队。然后对这个结果生命值升序对血量最小的目标释放治疗祷言。

摩托皮卡 发表于 2024-4-24 10:34:26

感谢各位大佬帮助,思路正确,可在下不才不会写太复杂的代码。
最后想问一下,各位的魔蜂API,以及这些合成函数的源码在哪下的啊?哪天有空了,清闲了,再去顺着这个思路研究下去。

lulin155 发表于 2024-4-24 10:46:40

摩托皮卡 发表于 2024-4-24 10:34 AM
感谢各位大佬帮助,思路正确,可在下不才不会写太复杂的代码。
最后想问一下,各位的魔蜂API,以及这些合 ...

代码在插件WowBee.Functions.lua 里面   你可以自定义自己写的函数在里面然后自己调用这样就脱离了 魔峰不断执行初始化的弊端! 可以用循环遍历等功能但是魔蜂没更高级的功能比如 移动判断   选择目标   面对目标自己移动 等 所以 也只能作为入门级的 判断判断条件执行技能 !我都改用 NI插件了功能很多能写出很多智能化的 脚本

摩托皮卡 发表于 2024-4-24 10:58:53

lulin155 发表于 2024-4-24 10:46 AM
代码在插件WowBee.Functions.lua 里面   你可以自定义自己写的函数在里面然后自己调用这样就脱离了...

好的大佬,我先把基础的魔蜂弄会,再去找NI插件
页: [1]
查看完整版本: 请教一个判断团队多人掉血的用法