BOO 可视化编辑器 v2.3.1
目录活动栏与视图扩展在 VS Code 左侧活动栏注册 4 个视图容器:
可视化编辑器核心能力拖拽式 NPC 对话框设计器(
NPC 脚本联动右键
引擎自动识别启动时检测工作区进程:
PAK 素材分包读取 语言智能服务所有语言功能注册在 代码补全上下文感知,300+ 命令 + 变量 + 标签 + 引擎函数全覆盖:
补全大小写策略可通过 悬停文档 (Hover)
定义跳转 (Ctrl+Click / F12)
引用查找 (Shift+F12)在 实时诊断保存时 500ms 防抖自动检查:
提供 Quick Fix 代码操作:一键创建未定义标签、补全 全工作区代码审查 (
|
| 功能 | 说明 | 配置 |
|---|---|---|
| 代码折叠 | #IF 块、[@标签] 区域、;region/;endregion |
boo.enableFolding |
| CodeLens | 标签引用计数 + 行备注 | boo.enableCodeLens |
| 文档大纲 | [@标签] 和 [~标签] 符号导航 |
- |
| fcolor 颜色方块 | 颜色值前显示 ■ 实际颜色(256色调色板) | boo.enableFColor |
| 自动语言切换 | 打开 .txt 自动识别脚本/配置文件特征,切到 gomscript | - |
| TextMate 语法 | syntaxes/gom.tmLanguage.json(15种Token类型) |
- |
| 代码片段 | snippets/gom-snippets.code-snippets(中文前缀→英文命令) |
- |
代码工具
脚本编辑
| 命令 | 触发 | 说明 |
|---|---|---|
| 格式化脚本 | 命令面板 | 规范化缩进、[@标签]前加空行、合并连续空行 |
| 批量数值编辑 | Alt+X |
选中数字统一加减乘除,支持Alt多光标多选区 |
| 大小写智能转换 | Alt+Shift+U |
选中文本大小写互转(自动检测当前状态) |
| 英文转大写 | 命令面板 | 选中英文强制转大写 |
| 快速颜色插入 | Ctrl+F1 |
256色调色板面板,点击插入颜色编号 |
辅助功能
| 命令 | 说明 |
|---|---|
| 查找未使用标签 | 列出未被 /@ 或 GOTO @ 引用的 [@标签] |
| 插入脚本模板 | 6 种模板:NPC对话框、条件检测、物品兑换、升级奖励、跨文件调用、变量操作 |
| 脚本统计 | 当前文件标签数、#IF/#ACT/#SAY/#CALL 块数、变量引用数 |
| 编码检测 | GBK/UTF-8/UTF-16 BOM 识别,中文占比报告 |
| ANIS 特殊符号 | 200+ Unicode 符号面板,9 大分类,点击复制+插入光标 |
| 引擎切换 | NGOM(922G) ↔ 翎风 一键切换,刷新语义着色 |
数据库查看器
Ctrl+Shift+P → BOO: 数据库查看器 (物品/怪物/技能)
- 自动扫描
MUD2\DB\目录,支持 SQLite (.DB) 和 Access (.MDB) 双格式 - 标签页切换:StdItems(物品) / Monster(怪物) / Magic(技能)
- 搜索过滤、列排序、Name 列冻结
- 点击物品 Name 列 → 侧边栏显示详情:
ItemDescTopList.txt顶部备注 +ItemDescList.txt备注(支持 PAK 图片解析 + 颜色代码渲染)- 50+ 字段中英文映射(
DC→攻击min、element1-26→元素属性等),大小写不敏感 - 属性和图片可编辑保存
- 数据库缓存补全:40+ 命令自动联动物品/怪物/技能名称补全
地图查看器
Ctrl+Shift+P → BOO: 地图查看器 (.map文件)
- 左侧列出
Mir200\Map\所有.map文件 - Canvas 渲染:绿色=可通行,黑色=阻挡
- 滚轮缩放、拖拽平移、坐标悬停显示
变量管理
变量列表视图
左侧活动栏 变 图标,树形展示全工作区已用变量:
| 分类 | 变量类型 |
|---|---|
| N$ | 自定义数字变量 |
| S$ | 自定义字符变量 |
| P | 个人临时数字 (0-99) |
| D | 个人永久数字 (0-99) |
| M/N | 个人数字 |
| S/I/G | 全局数字 |
| A | 全局字符 |
| U | 全局长数字 |
| T | 全局文本 |
| J | 全局整数 |
显示变量数量和所在文件,点击跳转定义行。刷新策略:编辑器切换即时 + 文档变更 2 秒防抖。
变量统计 (boo.analyzeVariables)
全工作区 11 类变量分类统计 Webview 报告。
M2 自动重载
⚠️ 以管理员身份运行 VS Code
保存 .txt/.ini 文件时自动重载 M2Server。
工作原理
后台调用 M2Reloader.exe(.NET 7 Win32 应用):
- 优先查找独立
m2server.exe进程窗口 - 备选嵌入
GameCenter.exe子窗口 - 通过 Win32 API 枚举菜单结构,发送
WM_COMMAND触发重载
可配置重载项(18项)
| ID | 功能 | ID | 功能 |
|---|---|---|---|
| 4 | 物品数据库 | 16 | QFunction 功能脚本 |
| 5 | 技能数据库 | 17 | QMission 任务脚本 |
| 6 | 怪物数据库 | 18 | QChatbox 聊天框脚本 |
| 7 | 怪物说话 | 19 | Robot 机器人脚本 |
| 8 | 怪物大血条 | 20 | 所有NPC(默认开启) |
| 9 | 宝箱 | 22 | 地图事件触发 |
| 10 | 数据列表 | 25 | 怪物爆率 |
| 12 | 参数设置 | 13 | 物品掉落规则 |
| 15 | QManage | 11 | 地图安全区 |
手动操作
| 命令 | 作用 |
|---|---|
BOO: M2重载 |
手动触发重载 |
BOO: 扫描M2Server菜单 |
枚举 M2Server 全部菜单项及 ID |
配置表格装饰
对 MerChant.txt 和 MonGen.txt 提供表格化显示:
- 列间竖线
│:自动在空格/Tab分隔的列之间插入灰色分隔符 - 冻结表头:文件首行上方显示列名说明(橙色加粗+深色背景)
| 文件 | 表头 |
|---|---|
| MerChant.txt | 脚本路径 │ 地图名 │ X │ Y │ NPC显示名 │ 0 │ 外观编号 │ 0 │ 0 │ 0 |
| MonGen.txt | 地图名 │ X │ Y │ 怪物名 │ 范围 │ 数量 │ 间隔 │ 0 │ 颜色 |
注释行(;开头)和空行不参与装饰。
参考速查手册
| 命令 | 内容 |
|---|---|
BOO: MapInfo 地图参数参考 |
97 个地图参数及详细说明 |
BOO: 显示颜色代码表 |
GOM 引擎 256 色调色板(8级RGB分解) |
BOO: 显示装备位置代码表 |
29 个装备位 (0-28) 及对应 <$VAR> |
BOO: 显示StdMode代码表 |
52 种 StdMode 物品类型说明 |
配置项说明
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
boo.engine |
enum | GOM |
引擎类型:GOM=NGOM(922G) / GEE=翎风 |
boo.completionCase |
enum | uppercase |
命令补全大小写 |
boo.enableCompletion |
boolean | true |
启用代码补全 |
boo.enableDiagnostics |
boolean | true |
启用实时诊断 |
boo.diagnosticSeverity |
enum | normal |
strict / normal / relaxed |
boo.enableCodeLens |
boolean | true |
标签引用计数 |
boo.enableFolding |
boolean | true |
代码块折叠 |
boo.enableFColor |
boolean | true |
fcolor 颜色方块 |
工作区状态(workspaceState 持久化)
| Key | 说明 |
|---|---|
boo.autoReload |
M2 自动重载开关 |
boo.reloadItems |
启用的重载项 ID 列表 |
boo.folderHistory |
最近 20 个素材文件夹 |
boo.quickImports |
快捷导入图片 (closeBtn/equipFrame/progressBar) |
boo.lineNotes |
行备注(按文件URI索引) |
boo.varDescs |
变量备注描述 |
快捷键
| 快捷键 | 命令 | 条件 |
|---|---|---|
Ctrl+F1 |
快速插入颜色代码 | gomscript 编辑器中 |
Alt+Shift+U |
大小写智能转换 | 有选中文本 |
Alt+X |
批量数值编辑 | 有选中文本(支持多光标) |
F12 / Ctrl+Click |
定义跳转 | gomscript/plaintext |
Shift+F12 |
引用查找 | gomscript/plaintext |
Ctrl+/ |
行注释切换 (;) |
gomscript 语言模式 |
数据文件
| 文件 | 内容 |
|---|---|
data/commands.json |
417 条命令(142 检测 + 275 执行) |
data/variables.json |
系统变量及作用域 |
data/functions.json |
GOM(NGOM) 引擎函数 |
data/functions-gee.json |
翎风引擎函数 |
data/const.json |
常量定义 |
data/md-export/ |
Markdown 导出文档 |
项目架构
src/
├── extension.ts # 入口:注册视图、命令、消息处理
├── assistant.ts # 语言服务:补全/悬停/跳转/诊断/语义/命令
├── reload.ts # M2 自动重载
├── types.ts # 类型定义
├── data/loader.ts # JSON 数据加载
├── providers/
│ ├── decorator.ts # fcolor颜色方块 + 表格列分隔装饰
│ ├── folding.ts # 代码折叠
│ ├── symbol.ts # 文档大纲
│ └── codelens.ts # 标签引用计数 + 行备注
└── utils/
├── regex.ts # 正则工具
├── path.ts # 脚本路径解析
├── text.ts # GBK 文件读取
├── pak.ts # PAK 素材分包
├── engine-detect.ts # 引擎自动识别
├── db-cache.ts # 数据库缓存
└── sidebar-bridge.ts # 侧边栏通信桥接
media/
├── editor.html # 可视化编辑器 (~4900行)
├── database-viewer.html # 数据库查看器
├── map-viewer.html # 地图查看器
├── sidebar-detail.html # 物品详情侧边栏
└── anis-symbols.html # 特殊符号面板
tools/
├── M2Reloader/ # .NET 7 M2重载工具
└── WindowDiag/ # .NET 7 窗口诊断工具
常见问题
Q: M2 重载无效? A: 以管理员身份运行 VS Code。先用"扫描M2Server菜单"确认能检测到窗口。
Q: .txt 文件没有语法高亮和 Ctrl+/ 注释?
A: 检查右下角语言模式是否为"GOM脚本"。若非,确保文件在 Mir200 路径下或包含脚本关键字(#IF、[@ 等),扩展会自动切换。
Q: MerChant.txt 跳转/诊断报文件不存在?
A: 确保 Mir200\Envir\Market_Def\ 下存在对应文件,命名规则为 脚本名-地图名.txt。支持多层嵌套目录(如 1大陆\主城\00充值使者)。
Q: 数据库打不开?
A: 确保工作区根目录下有 MUD2\DB\ 且包含 .db 或 .mdb 文件。
Q: PAK 素材不显示?
A: 确保 Mir200\Envir\EffectImageList.txt 存在且格式正确,PAK 文件夹命名匹配 will 序号。
技术 QQ: 1167746