LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 221|回复: 6

[函数] 全局钩子能根据事件来判定吗?

[复制链接]
发表于 2025-1-2 14:32:15 | 显示全部楼层 |阅读模式
本帖最后由 情为 于 2025-2-28 02:04 PM 编辑

hooksecurefunc([table,] functionName, hookfunc)
就想简单的写个出本后自动重置的宏,应该是用WORLD_MAP_UPDATE事件吧,小白求教应该怎么写呢?

回复

使用道具 举报

发表于 2025-1-2 15:52:37 | 显示全部楼层
没用过这个事件,
预计应该是先注册这个事件,
然后触发这个事件后再判断下区域吧
再执行重置
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-2 21:44:33 | 显示全部楼层
lbabey 发表于 2025-1-2 03:52 PM
没用过这个事件,
预计应该是先注册这个事件,
然后触发这个事件后再判断下区域吧

区域判定弄好了 就差这个检测事件触发的判定了   
不知道应该是用show还是onshow,还是什么条件,也不知道在哪里能查这类判定
回复 支持 反对

使用道具 举报

发表于 2025-1-2 21:59:55 | 显示全部楼层
本帖最后由 lbabey 于 2025-1-2 10:06 PM 编辑

随便搜下就知道怎么写了
大概举个例子
[Lua] 纯文本查看 复制代码
local frame=CreateFrame("Frame") --来个框架接收
frame:RegisterEvent("CHAT_MSG_WHISPER")--注册密语事件
frame:SetScript("OnEvent",function(self,event,...)--事件发生触发函数
if event == "CHAT_MSG_WHISPER" then--事件是密语
xx
end
end)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-3 13:30:44 | 显示全部楼层
有道理,全局钩子不好取消,还是得加个开关比较好.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-3 14:40:50 | 显示全部楼层
原来是我弄复杂了 直接根据玩家是否在副本的API判定就行了宏版本
/run F=F or CreateFrame("Frame")F:RegisterEvent("ZONE_CHANGED_NEW_AREA") if I then print("关闭重置") I=nil else print("开启重置")I = function() if IsInInstance()~=1 then ResetInstances() SendChatMessage(".instance unbind all") end end end F:SetScript("OnEvent",I)


lua版本
[Lua] 纯文本查看 复制代码
if IsInInstance() ~= 1 then
	ResetInstances()
	SendChatMessage(".instance unbind all")	--GM命令 如无权限可删除
end


回复 支持 反对

使用道具 举报

发表于 2025-1-9 20:35:11 | 显示全部楼层
顺手牵羊了,找函数怎么找啊?函数手册就那么几种?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-30 04:14 PM , Processed in 0.127430 second(s), 25 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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