开个帖子,不定时帮助新人解决问题
我记得之前有大佬开过帖子,不过已经过去好久了。现在感觉自己也能略微回答一些问题了,特此开个新帖。
看清楚是BEE的问题,如果回答不了,勿怪。
问之前最好搜索下论坛
会尽量将一些问题整理到前面
占个楼,待整理问题:) 可以试试回答之前没人回答的问题 芜湖。感觉有事情可以过来找大佬解决 admin 发表于 2024-11-29 08:22 AM
可以试试回答之前没人回答的问题
说的有道理,有空了, 翻一翻。 本帖最后由 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 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日起到现在的时间 持续时间判断如果不管急速加成之类动态数据,最起码也要获取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 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
因为你这样 一直运行 就创建了 好多个表
大佬问一下 圣骑士的十字军光环自动打开的宏。还有当buff时间少于10秒后自动使用背包物品的宏。谢谢