传奇996引擎映射
在编辑器中快捷重载,查看引擎日志
针对传奇 996 引擎 M2Server 的 VSCode 扩展。通过模拟菜单点击(WM_COMMAND 消息)实现一键数据热重载,并实时抓取 M2 窗口里的运行日志到编辑器内查看,无需切窗口、无需开额外控制端程序。
- 作者 / 反馈:QQ 1758092952
- 当前版本:0.4.1
功能介绍
- 一键重载:勾选要重载的数据项(物品/怪物/NPC/QF/QM/爆率/Buff 等 12 项),按快捷键或点按钮即向 M2 发送菜单命令完成重载
- 多开窗口选择:自动列出所有匹配的 M2 窗口(标题含
996引擎 -),下拉选择对哪个 M2 实例执行重载
- M2 实时日志:自动定位 M2 窗口内的日志控件(Delphi TMemo),实时把引擎运行日志抓取到侧边栏日志框,纯原文显示无噪音
- 终端展示:M2 窗口日志原样同步到 VSCode 的「996M2日志」输出面板;编辑器一启动就自动开始,不用先打开侧边栏
- 本地/远程双模式:
- 本地模式:本机直接
PostMessage 给 M2 窗口(默认)
- 远程模式:通过 TCP 把命令发给 M2ReloadServer 服务端,由服务端转发到本机所有勾选的 M2 窗口
- 老/新三端切换:重载菜单 ID 在老三端与新三端引擎间切换
- 活动栏集成:左侧活动栏一键打开,常驻侧边栏随用随开
使用教程
1. 安装
命令行安装:
code --install-extension m2-reload-0.4.1.vsix
或在 VSCode 扩展面板右上角 ... →「从 VSIX 安装」选择 vsix 文件。
2. 打开面板
安装后,左侧活动栏会出现彩色图标(紫蓝渐变 + 循环箭头),点击即可打开「传奇996引擎映射」侧边栏面板。
3. 基本使用
- 启动你的 996 引擎 M2Server(窗口标题形如
996引擎 - 1881 - KUAFU[0])
- 面板顶部「M2 窗口」下拉框会自动列出所有匹配的 M2 窗口,选择目标实例
- 在「重载项」勾选要重载的数据(物品数据、怪物数据、所有NPC、重载QF 等)
- 选择工作模式(本地/远程)和引擎类型(老三端/新三端)
- 点「▶ 执行重载」按钮,或直接按快捷键
重载后,M2 窗口里的日志会实时显示在面板下方日志框,例如:
[2026/6/28 17:13:22] 线程:0 QManage重新加载成功...
[2026/6/28 17:13:22] 线程:0 QFunction重新加载成功...
4. 快捷键(重点)
默认快捷重载:End 键
按一次 End 就触发重载,不用先打开侧边栏。
注意:End 在编辑器里原本是「移到行尾」。扩展的快捷键优先级高于内置默认值,
所以按下 End 会触发重载,不再移动光标。如果你习惯边写脚本边按 End,
可以在键盘快捷方式里把本命令换成别的键(见下面的方法),或给本命令加一个 when 条件限定生效场景。
自定义修改快捷键:
方法一(直接跳转,推荐):
- 在本扩展面板里,执行重载按钮下方有提示文字「默认快捷键
End,点此修改」
- 点击「点此修改」链接,VSCode 会自动打开键盘快捷方式设置页,并已过滤到本扩展的重载命令
方法二(手动打开):
- 按
Ctrl+K Ctrl+S 打开键盘快捷方式(或菜单 文件 → 首选项 → 键盘快捷方式)
- 搜索框输入
m2-reload.reload
- 双击该命令,按下你想要的快捷键组合(如
Ctrl+R、F5 等),回车确认
5. 终端展示
编辑器一启动就会自动把 M2 窗口日志原样输出到 VSCode 底部的「996M2日志」输出面板,不用先打开侧边栏;日志区右上角的「终端展示」按钮只是用来随时开关它。方便长时间挂着监控引擎日志,或需要复制大段日志时使用。面板下拉列表里的排列由 VSCode 按创建顺序管理,名字改成数字开头只是为了更容易一眼看到。
- 只要 VSCode / Cursor 启动,输出面板下拉列表里就有「996M2日志」,M2 比编辑器晚启动或中途重启也会自动接上
- 不想自动开始,把设置
m2-reload.autoStartLog 关掉即可;之后用「M2 Reload: 终端展示」命令手动开关
- 面板里只有 M2 自己的日志原文,不会插入「发送了几个重载项」这类提示行
- 侧边栏关掉后镜像仍然继续,直到你再点一次「终端展示中」把它关掉
6. 远程模式(可选)
若 M2 运行在远程服务器上:
- 在服务器上运行 M2ReloadServer(监听默认端口 15123)
- 面板工作模式切到「远程」
- 填远程地址,如
192.168.1.100:15123
- 触发重载时,命令通过 TCP 发给服务端,由服务端转发到本机所有勾选的 M2 窗口
远程模式下不会抓取 M2 日志(跨网络无法读取窗口控件),日志监听仅在本地模式可用。
配置项
在 settings.json 中可配置(文件 → 首选项 → 设置 → 搜索 m2-reload):
| 配置项 |
默认值 |
说明 |
m2-reload.mode |
local |
工作模式:local 本地 / remote 远程 |
m2-reload.engine |
legend |
引擎类型:legend 老三端 / new 新三端 |
m2-reload.remoteAddress |
127.0.0.1:15123 |
远程服务端地址 |
m2-reload.m2Keyword |
996引擎 - |
M2 窗口标题匹配关键字 |
m2-reload.checkedItems |
["物品数据","所有NPC","重载QF","重载QM"] |
默认勾选的重载项 |
m2-reload.autoRefreshInterval |
2000 |
窗口列表自动刷新间隔(毫秒,0 关闭) |
支持的重载项
物品数据、怪物数据、重载爆率、重载套装、所有NPC、重载Buff、公告信息、LuaFunc回数库、重载QF、重载QM、重载机器人、LuaCond条件回数库
技术原理
- 重载触发:通过 Win32
PostMessage(WM_COMMAND, 菜单ID) 模拟点击 M2 窗口的菜单项,与手动点菜单效果一致
- 窗口查找:
EnumWindows 枚举所有顶层窗口,按标题包含 996引擎 - 匹配(参考 996 官方控制端)
- 日志抓取:
EnumChildWindows 递归查找 M2 窗口里的 TMemo 控件,用 SendMessage(WM_GETTEXT) 跨进程读取文本,定时 diff 出新增行
- 原生调用:使用 koffi 加载 user32.dll,N-API 预编译二进制跨 Node/Electron 兼容
环境要求
- Windows 操作系统(本地模式依赖 user32.dll)
- VSCode 1.70+
- 已启动 996 引擎 M2Server
版本
- 0.4.1 编辑器启动即激活,输出面板列表里常驻「996M2日志」;启动后自动把 M2 窗口日志输出到该面板(可用
m2-reload.autoStartLog 关掉);默认快捷键改为 End;「终端展示」可随时开关,面板里只输出 M2 日志原文
- 0.4.0 发布版混淆打包流程 (javascript-obfuscator),混淆算法固化到 obfuscator.config.json
- 0.3.0 活动栏改名、彩色图标、键盘快捷方式跳转、使用教程
- 0.2.0 活动栏集成、多窗口下拉、M2 日志实时监听、终端展示
- 0.1.0 基础重载功能(本地/远程)
发布者:cq996-mapping QQ:1758092952