传奇996引擎映射
在编辑器中快捷重载,查看引擎日志
针对传奇 996 引擎 M2Server 的 VSCode 扩展。通过模拟菜单点击(WM_COMMAND 消息)实现一键数据热重载,并实时抓取 M2 窗口里的运行日志到编辑器内查看,无需切窗口、无需开额外控制端程序。
功能介绍
- 一键重载:勾选要重载的数据项(物品/怪物/NPC/QF/QM/爆率/Buff 等 12 项),按快捷键或点按钮即向 M2 发送菜单命令完成重载
- 多开窗口选择:自动列出所有匹配的 M2 窗口(标题含
996引擎 -),下拉选择对哪个 M2 实例执行重载
- M2 实时日志:自动定位 M2 窗口内的日志控件(Delphi TMemo),实时把引擎运行日志抓取到侧边栏日志框,纯原文显示无噪音
- 终端展示:点击「终端展示」把 M2 日志同步输出到 VSCode 输出面板,方便长时间监控或复制
- 本地/远程双模式:
- 本地模式:本机直接
PostMessage 给 M2 窗口(默认)
- 远程模式:通过 TCP 把命令发给 M2ReloadServer 服务端,由服务端转发到本机所有勾选的 M2 窗口
- 老/新三端切换:重载菜单 ID 在老三端与新三端引擎间切换
- 活动栏集成:左侧活动栏一键打开,常驻侧边栏随用随开
使用教程
1. 安装
命令行安装:
code --install-extension m2-reload-0.3.0.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. 快捷键(重点)
默认快捷重载:双击两下 Tab
操作方式:先按一次 Tab,再按一次 Tab,两次间隔内触发重载命令。这是 VSCode 的 chord(双键序列)机制,类似 Ctrl+K Ctrl+S。
自定义修改快捷键:
方法一(直接跳转,推荐):
- 在本扩展面板里,执行重载按钮下方有提示文字「默认快捷键
Tab Tab (双击两下 Tab),点此修改」
- 点击「点此修改」链接,VSCode 会自动打开键盘快捷方式设置页,并已过滤到本扩展的重载命令
方法二(手动打开):
- 按
Ctrl+K Ctrl+S 打开键盘快捷方式(或菜单 文件 → 首选项 → 键盘快捷方式)
- 搜索框输入
m2-reload.reload
- 双击该命令,按下你想要的快捷键组合(如
Ctrl+R、F5 等),回车确认
5. 终端展示
点击日志区右上角「终端展示」按钮,M2 日志会同步输出到 VSCode 底部「M2 Reload」输出面板。适合长时间挂着监控引擎日志,或需要复制大段日志时使用。
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.0 发布版混淆打包流程 (javascript-obfuscator),混淆算法固化到 obfuscator.config.json
- 0.3.0 活动栏改名、彩色图标、键盘快捷方式跳转、使用教程
- 0.2.0 活动栏集成、多窗口下拉、M2 日志实时监听、终端展示
- 0.1.0 基础重载功能(本地/远程)
发布者:cq996-mapping