求助:如何仅执行一次 事件监听
本帖最后由 胡先生 于 2024-4-13 11:51 AM 编辑local frame = CreateFrame("Frame")
frame:RegisterEvent("CHAT_MSG_RAID")
frame:SetScript("OnEvent", function(self, event, ...)
local message, sender, _, _, _, _, _, _, _, _, _, guid = ...
-- 如果消息是 "1",则回复 "2"
if message == "1" then
-- 发送消息 "2"
SendChatMessage("2", "RAID")
return
end
end)
想做一个监听事件,当监听到 团队消息“1”时,自己发送消息“2".
功能可以实现,但却是在刷屏的发送“2”.如何仅发送一次消息“2”呢?
增加frame:UnregisterEvent("CHAT_MSG_RAID") 注销监听事件也无法阻止刷屏
--控制施法
local frame = CreateFrame("Frame")
frame:RegisterEvent("CHAT_MSG_SAY") --普通频道
frame:RegisterEvent("CHAT_MSG_RAID") --团队成员频道
frame:RegisterEvent("CHAT_MSG_PARTY") --小队成员频道
frame:RegisterEvent("CHAT_MSG_PARTY_LEADER") -- 小队领袖频道
frame:RegisterEvent("CHAT_MSG_RAID_LEADER") -- 团队领袖频道
frame:RegisterEvent("CHAT_MSG_GUILD") -- 工会频道
frame:SetScript("OnEvent", function(self, event, ...)
local message, sender, _, _, _, _, _, _, _, _, _, guid = ...
if message == "痛苦压制" then
if BeeSpellCoolDown("痛苦压制") == 0 then
BeeRun("痛苦压制", sender)
return
end
end
end)
--我放弃了,改成不回话了。有人喊痛苦压制就对他用。
是不是在WBE里面运行的?
运行一次就行,别打勾 = =你是典型的捡了西瓜丢芝麻
你的回调函数里不能做个静态变量存储当前状态
然后进回调函数之前判断一下这个变量吗? 你重复注册事件了吧,代码看起来没啥问题 重复注册了,每运行一次就会注册一次,第一句不要local ,改成frame=frame orCreateFrame("Frame"),
另外可以给function命名,如果function为空就赋值为函数,不为空就赋值为空,达到按1次开启,再按一次关闭的目的。做成宏比较好用。
页:
[1]