LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 919|回复: 58

[wowbee] 开个帖子,不定时帮助新人解决问题

[复制链接]
发表于 2024-11-28 23:16:45 | 显示全部楼层 |阅读模式
我记得之前有大佬开过帖子,不过已经过去好久了。
现在感觉自己也能略微回答一些问题了,特此开个新帖。
看清楚是BEE的问题,如果回答不了,勿怪。
问之前最好搜索下论坛
会尽量将一些问题整理到前面

评分

参与人数 1伸手费 +50 收起 理由
twog + 50 党和人民需要你!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2024-11-28 23:19:04 | 显示全部楼层
占个楼,待整理问题
回复 支持 反对

使用道具 举报

发表于 2024-11-29 08:22:57 | 显示全部楼层
可以试试回答之前没人回答的问题
回复 支持 反对

使用道具 举报

发表于 2024-11-29 12:58:05 | 显示全部楼层
芜湖。感觉有事情可以过来找大佬解决
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-29 17:28:09 | 显示全部楼层
admin 发表于 2024-11-29 08:22 AM
可以试试回答之前没人回答的问题

说的有道理,有空了, 翻一翻。
回复 支持 反对

使用道具 举报

发表于 2024-11-29 17:34:28 | 显示全部楼层
本帖最后由 blackshow0 于 2024-11-29 05:42 PM 编辑

[Lua] 纯文本查看 复制代码
local frame = CreateFrame("Frame")
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
frame:SetScript("OnEvent", function(self, event, ...)
        local subevent = select(2, ...)
        local sourceGUID = select(3, ...)
        local destGUID = select(6, ...)
        local spellID = select(9, ...)
        local spellName = select(10, ...)
        
        
        if subevent == "SPELL_CAST_SUCCESS" and sourceGUID == UnitGUID("player") then
            if spellID == XXXX then
                if destGUID == UnitGUID("target") then 
                    print("施加:", spellName, "到目标:", UnitName("target"))
                end
            end
        end
        
        if subevent == "SPELL_AURA_REMOVED" and sourceGUID == UnitGUID("player") then
            if spellID == XXXX then
                if destGUID == UnitGUID("target") then
                    print("施加的:", spellName, "从目标:", UnitName("target"), "消失")
                end
            end
        end
end)


还是关于DOT检测不到重复释放的问题,如果监控战斗事件做到有头有尾是不是能实现,比如:我给目标施加了一个DOT,那必然有SPELL_CAST_SUCCESS信息,如果这个DOT没了,也会有SPELL_AURA_REMOVED信息,那么施法成功就是头,DOT没了就是尾,如果必须有头有尾来判定这个DOT是否存在是不是更简单。。比如做个表,施法成功了存进去,DOT移除了清空表,如果表内没信息调用那么就代表这个DOT确实没有了。就达到了这个DOT的施放条件了。。(时间判断周期伤害我是真的不会搞了啊,特别是GetTime(),这玩意儿不是获取的游戏系统时间么。。。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-29 18:19:22 | 显示全部楼层
本帖最后由 lbabey 于 2024-11-29 06:28 PM 编辑
blackshow0 发表于 2024-11-29 05:34 PM
[mw_shl_code=lua,true]local frame = CreateFrame("Frame")
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFI ...

1。以 remove 来决定DOT时间结束的话,如果是有读条时间的DOT,会稍微晚一点。
比如吸血鬼之触,我希望他的 持续时间 小于 我的 施法 时间 ,我就要准备补了。
所以 通用性 来讲的话 我觉得还是 持续时间判断 更好一点。
当然 remove 的话 会简单一点。
2。周期伤害 看 事件的 SPELL_PERIODIC_DAMAGE 参数 。
3。GetTime() 是 “Returns the system uptime of your computer in seconds”, 就是 电脑 的运行时间
而事件中 arg1的时间是时间戳,是自1970年1月1日起到现在的时间
回复 支持 反对

使用道具 举报

发表于 2024-11-29 18:34:22 | 显示全部楼层
持续时间判断如果不管急速加成之类动态数据,最起码也要获取SPELL_CAST_SUCCESS之后的固定时间来判断SPELL_PERIODIC_DAMAGE,我有思路但是做不来。。。。我现在想先搞出来个简单的看看成果。。。我做了一个表,定义了个函数,但是我测了下,会一直返回nil,导致DOT上的更欢实了,有点摸不着头脑了。。。
[Lua] 纯文本查看 复制代码
local dot = {}  

function dottt(spellID)
    return dot[spellID]  
end

local frame = CreateFrame("Frame")
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
frame:SetScript("OnEvent", function(self, event, ...)
        local subevent = select(2, ...)
        local sourceGUID = select(3, ...)
        local destGUID = select(6, ...)
        local spellID = select(9, ...)
        local spellName = select(10, ...)
        
        if subevent == "SPELL_CAST_SUCCESS" and sourceGUID == UnitGUID("player") then
            if spellID == xxxx then
                if destGUID == UnitGUID("target") then
                    dot[spellID] = true  
                    print("施加:", spellName, "到目标:", UnitName("target"))
                end
            end
        end
        
        if subevent == "SPELL_AURA_REMOVED" and sourceGUID == UnitGUID("player") then
            if spellID == xxxx then
                if destGUID == UnitGUID("target") then
                    dot[spellID] = nil  
                    print("施加的:", spellName, "从目标:", UnitName("target"), "消失")
                end
            end
        end
end)

if dottt(spellID) == nil then
    print("DOT不存在")
else
    print("DOT存在")
end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-11-29 19:21:55 | 显示全部楼层
本帖最后由 lbabey 于 2024-11-29 07:44 PM 编辑
blackshow0 发表于 2024-11-29 06:34 PM
持续时间判断如果不管急速加成之类动态数据,最起码也要获取SPELL_CAST_SUCCESS之后的固定时间来判断SPELL_ ...

1.UnitName("target") 是当前得目标,并不一定是 施法的 目标 ,第7个参数是 施法的目标,建议用这个
2.如果你把这些都当放到魔蜂的一个里面 是不行的
if dottt(spellID) == nil then
    print("DOT不存在")
else
    print("DOT存在")
end
要放到另一个 里面或者
把表 改成
if not dot then dot = {} end
因为你这样 一直运行 就创建了 好多个表
回复 支持 反对

使用道具 举报

发表于 2024-11-30 13:28:58 来自手机 | 显示全部楼层
大佬问一下 圣骑士的十字军光环自动打开的宏。还有当buff时间少于10秒后自动使用背包物品的宏。谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-2 02:05 AM , Processed in 0.103321 second(s), 38 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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