lbabey 发表于 2024-11-28 23:16:45

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

我记得之前有大佬开过帖子,不过已经过去好久了。
现在感觉自己也能略微回答一些问题了,特此开个新帖。
看清楚是BEE的问题,如果回答不了,勿怪。
问之前最好搜索下论坛
会尽量将一些问题整理到前面

lbabey 发表于 2024-11-28 23:19:04

占个楼,待整理问题:)

admin 发表于 2024-11-29 08:22:57

可以试试回答之前没人回答的问题

末代 发表于 2024-11-29 12:58:05

芜湖。感觉有事情可以过来找大佬解决

lbabey 发表于 2024-11-29 17:28:09

admin 发表于 2024-11-29 08:22 AM
可以试试回答之前没人回答的问题

说的有道理,有空了, 翻一翻。

blackshow0 发表于 2024-11-29 17:34:28

本帖最后由 blackshow0 于 2024-11-29 05:42 PM 编辑

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

lbabey 发表于 2024-11-29 18:19:22

本帖最后由 lbabey 于 2024-11-29 06:28 PM 编辑

blackshow0 发表于 2024-11-29 05:34 PM
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日起到现在的时间

blackshow0 发表于 2024-11-29 18:34:22

持续时间判断如果不管急速加成之类动态数据,最起码也要获取SPELL_CAST_SUCCESS之后的固定时间来判断SPELL_PERIODIC_DAMAGE,我有思路但是做不来。。。。我现在想先搞出来个简单的看看成果。。。我做了一个表,定义了个函数,但是我测了下,会一直返回nil,导致DOT上的更欢实了,有点摸不着头脑了{:5_174:}。。。local dot = {}

function dottt(spellID)
    return dot
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 = 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 = nil
                  print("施加的:", spellName, "从目标:", UnitName("target"), "消失")
                end
            end
      end
end)

if dottt(spellID) == nil then
    print("DOT不存在")
else
    print("DOT存在")
end

lbabey 发表于 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
因为你这样 一直运行 就创建了 好多个表

wschenbingz 发表于 2024-11-30 13:28:58

大佬问一下 圣骑士的十字军光环自动打开的宏。还有当buff时间少于10秒后自动使用背包物品的宏。谢谢
页: [1] 2 3 4 5 6
查看完整版本: 开个帖子,不定时帮助新人解决问题