996引擎 - 活捉NPC
- 引擎触发 - 引擎事件(QF)
- 事件处理模块 GameEvent
- 测试文件
- 参考资料
引擎触发 - 引擎事件(QF)
cfg_game_data
配置ShareNpc=1
可以将QM和机器人的触发事件全部转到QF
引擎触发是通用的,TXT的所有触发转换成小写后在LUA中就可使用,如说明书中缺省可反馈至对接群
三端引擎的触发主体只会是系统/玩家对象; 如cfg_mongen表填入的触发回调,参数1是系统对象,参数2才是怪物对象
Envir\Market_Def\QFunction-0.lua
官方底板中已经添加了 点击npc触发
lua
--NPC点击触发
function clicknpc(actor, npcid)
local npcobj = getnpcbyindex(npcid)
GameEvent.push(EventCfg.onClicknpc, actor, npcid, npcobj)
end
事件处理模块 GameEvent
上面的clicknpc
方法中调用了 Envir\QuestDiary\util\GameEvent.lua
封装的 GameEvent.push
GameEvent 模块,它实现了一个事件系统,允许开发者注册、移除和触发事件。
-
事件注册:
GameEvent.add(eventName, func, tag, priority):用于注册一个事件监听器。
-
事件移除:
GameEvent.remove(func):根据回调函数移除一个事件监听器。
GameEvent.removeByNameAndTag(eventName, tag):根据事件名称和标签移除一个事件监听器。
GameEvent.removeByTag(tag):根据标签移除所有事件监听器。
GameEvent.removeAll():移除所有事件监听器。
-
事件推送:
GameEvent.push(eventName,...):用于触发一个事件,并将事件参数传递给所有注册的监听器。
测试文件
我们自己创建个 Envir\QuestDiary\game\J\Test.lua
注册一个点击NPC事件,然后在聊天窗口输出 npc的 id
lua
-- 注册一个事件监听器,当角色点击NPC时触发
GameEvent.add(EventCfg.onClicknpc, function (actor, npcid, npcobj)
sendmsg(actor, ConstCfg.notice.own, '{"Msg":"<font color=\'#ff0000\'>NPC:'.. npcid ..'</font>","Type":1}')
end, {})
打个断点
attach
方式调试服务器进程 M2Server.exe
在游戏中点击NPC,古之界传送使
就被我们找到了