当前位置: 首页 > article >正文

996引擎 - 活捉NPC

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触发

--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 模块,它实现了一个事件系统,允许开发者注册、移除和触发事件。

  1. 事件注册:
    GameEvent.add(eventName, func, tag, priority):用于注册一个事件监听器。

  2. 事件移除:
    GameEvent.remove(func):根据回调函数移除一个事件监听器。
    GameEvent.removeByNameAndTag(eventName, tag):根据事件名称和标签移除一个事件监听器。
    GameEvent.removeByTag(tag):根据标签移除所有事件监听器。
    GameEvent.removeAll():移除所有事件监听器。

  3. 事件推送:
    GameEvent.push(eventName,…):用于触发一个事件,并将事件参数传递给所有注册的监听器。

测试文件

我们自己创建个 Envir\QuestDiary\game\J\Test.lua
注册一个点击NPC事件,然后在聊天窗口输出 npc的 id

-- 注册一个事件监听器,当角色点击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,古之界传送使 就被我们找到了
在这里插入图片描述

参考资料

引擎触发


http://www.kler.cn/a/384578.html

相关文章:

  • 那什么是scss嘞?它的基本使法是什么嘞?(一一为你解答)
  • 【362】基于springboot的在线租房和招聘平台
  • 企业文件加密要怎么做?好用的10款企业文件加密软件排行榜!
  • Flutter 中 Provider 的使用指南
  • 分布式和微服务的区别
  • Python 中的字符串匹配算法
  • 如何开发查找附近地点的微信小程序
  • 书生实战营第四期-基础岛第三关-浦语提示词工程实践
  • SSH实验4允许特定用户ssh登录
  • 又发现了Mac妙控鼠标的新使用方法
  • Jenkins系列
  • 100种算法【Python版】第59篇——滤波算法之扩展卡尔曼滤波
  • GitLab 中文发行版最新版重点功能解读
  • 【活动上新·上海站】GenAI 斜杠计划第二期:解锁代码新世界,Amazon Q 代码助手带你飞
  • React 前端通过组件实现 “下载 Excel模板” 和 “上传 Excel 文件读取内容生成对象数组”
  • Selenium常见问题解析
  • 【语义分割|代码解析】CMTFNet-4: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!
  • 丹摩征文活动|详解 DAMODEL(丹摩智算)平台:为 AI 开发者量身打造的智算云服务
  • 三周精通FastAPI:30 API、标签元数据和文档 URL
  • 大语言模型训练的全过程:预训练、微调、RLHF
  • Axure设计之左右滚动组件教程(动态面板)
  • ArcGIS Pro SDK (二十三)实时要素类
  • windows、linux安装jmeter及设置中文显示
  • Oracle 23AI创建示例库
  • idea | 搭建 SpringBoot 项目之配置 Maven
  • 第十五届蓝桥杯C/C++B组题解——数字接龙