LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 110|回复: 7

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

[复制链接]
发表于 2024-4-23 23:59:21 | 显示全部楼层 |阅读模式
判断团队里有多个人在75%血以下,使用了以下方法
local n,Unit = BeeGroupCountScript('BeeSpellCD("治疗祷言")==0',"BeeUnitHealth(unit,'%')<75  and  not UnitIsDeadOrGhost(unit)","party")想具体了解一下原理,以便改成MS的治疗祷言用法
请教一下:
1.参数1和参数2既然都是条件,它们写在一起行不行,两个条件是and的关系么
2.参数3如何限制范围在团队中的队伍1,队伍2,队伍3,队伍4,队伍5,因为祷言是单队伍的
回复

使用道具 举报

发表于 2024-4-24 09:12:24 | 显示全部楼层
[Lua] 纯文本查看 复制代码
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
回复 支持 反对

使用道具 举报

发表于 2024-4-24 09:18:57 | 显示全部楼层
你想要的要求一个都不能实现  只要参数3不是 队伍 团队 队伍宠物  团队宠物  就返回不执行
回复 支持 反对

使用道具 举报

发表于 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,你的想法要使用这个集成的函数根本无法实现!
回复 支持 反对

使用道具 举报

发表于 2024-4-24 10:08:09 | 显示全部楼层
有一个思路,自己遍历团队for i=1,#GetNumRaidMembers()  do 找到血量低于75%的,并且他们属于同一个小队的目标,这里小队最好指定编号多写几行脚本,分别判断5个小队。然后对这个结果生命值升序对血量最小的目标释放治疗祷言。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-24 10:34:26 | 显示全部楼层
感谢各位大佬帮助,思路正确,可在下不才不会写太复杂的代码。
最后想问一下,各位的魔蜂API,以及这些合成函数的源码在哪下的啊?哪天有空了,清闲了,再去顺着这个思路研究下去。
回复 支持 反对

使用道具 举报

发表于 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插件
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 06:28 PM , Processed in 0.057531 second(s), 28 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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