BOO 可视化编辑器 V4.4.1
面向传奇 GM、版本制作人员和脚本开发者的 Visual Studio Code 扩展,将脚本编写、UI 制作、补丁资源编辑、数据库维护、地图预览和多区同步集中到一个工作环境中。
支持 NGOM(922G/GOM)、翎风(GEE)和 996PC。运行环境为 Windows、Visual Studio Code 1.68.0 或更高版本。
功能总览
传奇脚本助手
多引擎语言服务
- 自动识别服务端引擎,也可手动切换 GOM、翎风或 996PC。
- 命令、变量、补全、悬停、高亮和代码审查按引擎独立使用,切换后同步生效。
- 根据
#IF、#ACT、#SAY 等脚本区域提供对应内容。
智能补全与说明
- 支持命令、变量、标签、路径、系统常量和引擎函数智能补全,可按中文说明模糊查找指令。
- 命令悬停显示用途、参数和示例;
<TEXT、<&TEXT 等界面指令支持补全,指令名和每个参数都可悬停查看说明。
- 代码补全编辑器支持分引擎维护自定义检测命令、执行命令、界面语句、引擎函数和系统常量,保存后参与补全、悬停和高亮。
导航与引用
- 支持定义跳转、引用查找、特殊字符标签及跨文件脚本定位。
CHECKTEXTLIST、#CALL、#CALLEX、#INCLUDE 等路径可通过 Ctrl+左键 跳转;缺失文件在点击后提供创建确认。
- GOM/翎风的
DELAYGOTO、GOM/翎风/996PC 的 DELAYCALL 支持点击静态标签跳到当前脚本定义;按引擎与动作区域识别,只处理独立的静态标签参数,不猜测动态表达式或带调用参数的写法。
AutoRunRobot.txt 中的标签可跳到 RobotManage.txt;静态 SETONTIMER ID 可定位 QManage.txt 中的回调。
ADDBUTTON 的静态按钮 ID 与新 GOM ADDDLG 的直接标签可定位同一服务端的 QFunction-0.txt,未命中时查找 QuestDiary。
MerChant.txt 第一列可打开 NPC 脚本,缺失时确认创建;第五列 NPC 名称可定位原始地图。脚本目标按当前文档所属服务端解析,取消不创建,已有内容不覆盖。
MapInfo.txt 中静态地图项的显示名称可通过 Ctrl+左键 打开对应原始地图。
MapInfo.txt 连接行箭头两端的地图编号和坐标可分别点击,打开对应原始地图并定位坐标;点击时读取当前文档,按文档所属服务端解析,在地图与首个视口就绪后完成定位。
MonGen.txt 第一列地图编号可打开原始地图,第四列怪物名称可打开当前服务端的 MonItems/<怪物名>.txt;文件缺失时确认创建。
- 在
MonGen.txt 中按 Alt+R,确认后批量补建缺失的空白爆率文本,怪物名称去重,已有文件不覆盖;不会自动生成爆率内容。
审查与快速修复
- 实时语法检查、错误定位、
Ctrl+Q 快速修复与未使用标签检查。
- 支持当前文件及
MapQuest_Def、Market_Def、QuestDiary、Robot_def 子目录的代码审查。
- 支持脚本统计、格式化、英文转大写和日志清理。
编辑与显示
- 支持变量
STR() 包裹、多选区操作及嵌套变量识别。
Ctrl+E 将选区包裹为 {选中内容/fcolor=250}。
- 支持代码折叠、文档结构、CodeLens 和语义高亮。
- 检测命令、执行命令和
#SAY 界面指令分别高亮,提供 19 套脚本主题及字体、颜色设置。
变量管理
- 统计工作区变量、个人标识、定义与引用位置,支持分类、搜索、备注和跳转。
- 变量列表在保存后更新,也可主动刷新或随 M2 重载更新;刷新期间保留已有列表,输入与切换文件时保持稳定。
- 支持 U/T/A/G 四类编号变量与个人标识统计;合并
U3/u3/U003 等同编号写法,同时保留自定义变量名的大小写语义。
- 按语句位置传播
MOV 赋值、覆盖和已建模的数值 INC/DEC/MUL/DIV;FORMULATION 支持括号与四则运算,按引擎核对取整和数值边界,不把旧赋值一直沿用到后面的引用。
- 区分
#ACT/#SAY 真分支与 #ELSEACT/#ELSESAY 假分支,支持两种排列顺序及同一分支的多段内容;BREAK、静态 GOTO 按所属路径处理,不把互斥分支的运算串起来累加。
- 分析 NPC 点击参数、变量传递、字符串拆分,以及多层
STR() 构造的槽位变量;参数从调用位置取值。
- 从列表、CSV、INI 配置和单工作表 BIFF8
.xls / .xlsx 的原始单元格数据推导动态编号;只读解析,不运行宏,也不把公式缓存当作已计算结果。多工作表、加密、损坏或超限数据不擅自当作完整结果。
- GOM 支持
HUMAN(变量名),翎风支持 HUMAN(变量名) / GUILD(变量名) 的已核静态引用,保留作用域身份;GOM/翎风的静态 CLEARVAR S0 5 可统计涉及的 S0~S4。
- 结果区分直接引用、确定推导、可能引用和未解动态;侧栏提示可查看来源表达式、位置、已记录的推导过程和未解原因,统计报告汇总引用处数、来源分类和涉及文件。
- 计数表示源码引用处数,不是运行次数;同一动态表达式有多个可能编号时,分别标为可能引用。“确定推导”仅表示到达该语句时可知编号,不代表线上已经执行。
- 提供“候选变量/候选标识”,帮助选择当前扫描范围内未发现引用的编号;动态编号不会导致整个候选列表不可用。
- 输入
U、T、A、G 可选择候选编号,个人标识按引擎范围提供候选;动态编号无法完整确定、依赖读取失败或值域超限时保留不确定性,不将候选保证为空闲。
变量统计是脚本静态引用分析,不执行脚本,也不统计玩家实际运行次数。侧栏按已保存内容更新,统计报告可读取打开文档的草稿;扫描范围与保存状态不同,结果可能不同。
UI 可视化编辑器
常规 UI 编辑器
- 默认独立窗口打开,重复入口复用已有画布;不支持独立窗口的旧版 VS Code 使用标签页。
- 支持图片、文字、三态按钮、特效动画、倒计时、文本框、数字框、关闭按钮、装备框和进度条。
- 支持拖动、缩放、平移、多选、复制粘贴、删除、方向键微调和属性编辑,生成对应 UI 代码。
- 对话框背景固定在画布原点,防止误拖和批量移动;普通控件仍可自由调整。
- 素材选择每页 100 项,输入 ID 定位所在页并高亮,保留邻近素材;名称可筛选,多包重号时先选素材包。
- 深色分组工具栏、紧凑素材与属性面板、可折叠代码区,支持画布和代码草稿的会话内恢复。
Ctrl+F12 NPC 对话画布
- 在当前
[@函数] 内按 Ctrl+F12,打开独立的脚本界面面板,与原 UI 编辑器互不影响。
- 按引擎解析主背景、AddDlg、文字、图片、按钮、输入框、菜单、ListView、ITEMSHOW、进度和动画,预览
#SAY、条件分支及 #ELSESAY。
- 可确定的文字、数值直接显示;未知显示文字使用“预览文字”,未知显示数值使用
0。
- 文字链接显示为黄色下划线;文字、图片及绝对坐标控件按对应引擎规则定位。
- 文字、数字、个人标识按类型输入,同一标识合并显示;列表、字典支持增删条目,输入项可搜索并恢复自动值。
- 已支持的职业、名单、称号和穿戴条件按引擎切换,已知同部位装备互斥选择。
- GOM/翎风可读取
GlobalVal.ini 中保存的 G 数值/A 文字默认值,并临时修改预览输入,不写回配置或脚本;不是 M2 实时全局值。
- 支持已建模的 GOTO 赋值、变量运算和只读数据查询;996PC 支持已确认的本地输入弹窗与
$STM(...) 显示联动。
- ITEMSHOW 按物品数据库 IDX 查询 Looks,再定位 Items/ItemsN 素材;数量为 0 时不显示数字。
- 支持控件微调、撤销和重做;应用或保存只回写可直接定位的坐标数字,传统位置参数文字按
x-4、y-4 绘制。
点击、输入、计时与标签切换只在 Webview 内本地预览,不提交服务器、不执行发奖或扣费。显示占位不替代真实素材、数据库或动作参数;复杂动态调用与在线玩家状态不保证还原。
客户端与补丁管理
- 按工作区绑定传奇客户端目录和自定义补丁,自动发现
Data、Map、Wav、Graphics 等资源位置;同名资源优先使用自定义补丁。
- 支持 PNG 目录及 PAK、JPK、WIL、WZL 资源读取,保留原始编号、空槽、尺寸和偏移。
- 支持 GOM/翎风 PAK、996PC JPK,以及已验证的 HXM2/Lz、PACK4.0 分支;未知布局会提示,不按扩展名猜测内容。
- 读取
Pak.txt、JpkList.txt 中的路径和密码,支持单包修改密码、重新读取及多包浏览。
- 可“读取需求资源”或“读取所有资源”;需求资源包括
EffectImageList.txt 调用包、items 至 items9、mmap10、npc 至 npc4 和 SafePointEffect。
- 默认建立高速索引,按需读取图片;资源变化后重新建立索引。缓存供 UI 编辑器、物品详情和地图共用。
- 提供逐图验证、取消、继续验证和详情报告,区分正常、空槽、待验证、恢复、不支持及损坏状态。
- 素材查看支持原图/按偏移、原点辅助线、背景切换、像素缩放和连续帧播放;空帧、坏帧保留原编号,不挤动后续图片。
补丁资源工作台
从补丁管理的已缓存高速索引资源点击“素材”,或执行“BOO: 打开补丁资源工作台”。工作台在当前 VS Code 编辑区标签页打开,不自动弹出独立窗口。
浏览与导出
- 每页 100 个槽位、每行 5 个,支持 ID 定位、Ctrl/Shift 多选及跨页保留选择。
- 查看原图、尺寸、X/Y 偏移和槽位状态,切换背景与缩放比例。
- 按当前素材、已选素材、ID 范围或全部素材导出 PNG 和偏移清单,保持原始 ID;清单为 BOO 格式。
图片与偏移编辑
- 点击“开启编辑”后核验资源,支持单图替换、填空、追加、清空、偏移调整及撤销/重做。
- 批量导入支持文件名 ID、连续编号和末尾追加;可批量设置绝对/相对偏移、清空或跨工作台复制粘贴。
- 支持透明边裁剪并补偿偏移、最近邻缩放、水平/垂直镜像,以及 Alt 拖动或 Alt+方向键微调偏移。
- 批量操作预检后整批提交,失败或取消不留下半批修改;未保存关闭时提供提示。
动画与格式支持
- 固定公共原点播放,支持暂停、逐帧、帧率设置和参照图对齐,空槽保留帧时长。
- 支持无损 APNG 导出,保留透明度,不导出参照图或辅助线。
| 资源格式 |
编辑范围 |
| GameLib / 996M2 JPK |
已验证布局可编辑,另存新 JPK |
| GAMEOFMIR2 v2 PAK |
已验证布局可编辑,另存新 PAK |
| WIL/WIX、WZL/WZX |
规范布局成对编辑,保存到新的资源组目录 |
| 其他可读取的 PAK 分支 |
浏览、验证与导出,不开放写入 |
资源编辑采用另存新包或新资源组,不覆盖源包或已有目标,也不自动替换客户端绑定。读取支持不等于编辑支持;不提供任意整包格式转换,重启或崩溃后不恢复未保存草稿。
数据库编辑器
- 物品、怪物和技能分表显示,详情面板提供对应中文属性。
- SQLite 支持记录与字段结构增删改;996PC 的
cfg_item.xls、cfg_monster.xls、cfg_magic.xls 支持记录编辑,写入前备份并保护协议字段。
- Access MDB 在 Windows 检测到 Jet/ACE 时支持普通记录增删改、批量修改和 Ctrl+Z,保存前备份、独立回读核验并检查外部改动。自动编号、二进制字段、系统/链接表、重复行身份和字段结构受保护;组件不可用时保留只读并提示原因。
- 可用“打开数据库…”直接选择
.mdb 或 .db,手动打开的数据库仅展示字段详情,不关联当前工作区的物品备注、怪物爆率和顶戴文件;“重新打开”重读数据源并清空旧撤销历史。
- 支持分页、搜索、排序、装备分类筛选、固定关键列和横向滚动。
- 单元格可直接输入、双击或
F2 编辑,支持复制粘贴、删除、Ctrl+D 填充、拖拽递增和右键递增。
- MDB 的 Currency、Numeric、BigInt 字段保留精确文本输入与复制粘贴,不参与自动递增或拖动序列,避免数值精度损失。
- 支持增加、删除、复制与粘贴数据行;普通修改原位保存,误操作可用
Ctrl+Z 撤回。
- 保存刷新时保留当前滚动位置与选区,便于连续编辑下方记录。
- 物品详情按 Looks 显示 Items 素材和可视化备注;怪物详情显示本体、顶戴与名称,可编辑 MonItems 爆率和 MonIcons 顶戴。
- 支持普通怪物及 SmartMonster 自定义外观。
编辑前请做好完整备份并关闭其他使用数据库的程序,不直接编辑正在运行的服务端数据库。
爆率分析
- 执行“BOO: 分析当前爆率(只读)”,按 GOM、翎风或 996PC 规则分析当前编辑内容,包括尚未保存的修改。
- 展示可计算的基准概率、条件、物品、数量和来源,支持已验证的静态外部 CALL 读取。
- 动态条件、触发和未知语法单独标注,不把基准概率当作在线实际掉落结果;分析不修改或执行脚本。
地图查看与可视化编辑
.map 查看器支持地图信息、小地图、阻挡、缩放和平移;地图列表结合 MapInfo.txt 和 MiniMap.txt 定位。
- 支持导入小地图地点标识,编辑文字、坐标、颜色及大小地图显示范围,拖动后保存到原文件;工作区记住标识文件路径。
- 原始地图按 Tiles、SmTiles、Objects 读取 PAK/JPK/WIL/WZL 素材;按当前可视区域分批加载并预取,静态底层使用持久瓦片缓存。
- 已支持的 GOM 地图布局可显示对象连续帧动画和加亮叠加效果;不将未确认的控制字段套用到其他布局。
- 支持静态可达、全员可见且无限循环的永久
MAPEFFECT 预览,按 QuestDiary 规则解析已支持的静态调用;它不代表 M2 当前实时状态。
- 读取
Merchant.txt 的 NPC 和 MonGen.txt 的刷怪点,显示 NPC 素材动画、多行名称、NpcIcons 顶戴及刷怪范围。
- NPC、刷怪点支持拖动和方向键微调;可编辑 NPC 坐标、外观、顶戴及刷怪参数,并保存到对应配置。
- 原始地图提供 NPC 快速定位、概览导航,右下角预览显示地点文字标记和悬停提示。
文件、表格与多区同步
- CSV 和 Excel 97–2003
.xls 提供可视化表格编辑、复制粘贴、填充和键盘操作;XLS 按 BIFF8 数据表处理,不作为通用 Excel 公式编辑器。
Merchant.txt、MonGen.txt 等配置文本提供列说明、分隔提示和对应的路径、地图导航。
- 批量数值支持加、减、乘、除及按出现顺序“递增+”。
- 脚本助手的“快捷工具”中提供独立“脚本同步”入口,可在双栏中选择来源文件和多个目标服务端。
- 资源管理器多选文件/文件夹后,也可右键“同步其他区”;递归包含子文件和空目录,保持工作区相对路径。
- 同步前确认来源、目标与规模;同路径文件会覆盖,单项失败不阻断其余任务。
M2 在线重载
- 支持保存脚本后自动重载和手动重载,可扫描 M2 菜单并配置对应项目。
- 内置重载组件,无需单独启动辅助工具窗口。
- 按工作区的
M2Server.exe 完整路径选择目标,避免多服务端串用。
- 连续保存请求会自动合并,等待当前菜单命令完成后继续;失败会明确提示,不静默操作其他 M2。
常用辅助工具
- 颜色代码、装备位置、StdMode、MapInfo 参数查询及 ANIS 特殊符号插入。
- 常用指令收藏、脚本片段、模板、变量备注、行备注与文件编码检测。
- 编辑器标题栏“快捷文件”按工作区添加或移除 Mir200 相对路径,提供“全部保存”入口。
- 字体、语法颜色、代码补全和助手行为可配置。
DeepSeek Harness AI 助手
- 左侧活动栏提供独立 DeepSeek 入口,在右侧拆分编辑器打开本机 DeepSeek Harness,也可在浏览器中打开。
- 复用已运行的本地服务,或按配置启动;侧栏保留轻量入口,不挤占聊天面板。
- 模型与 API Key 在 Harness 中配置。需本机已安装 Harness,BOO 不内置模型服务或 API 额度。
安装
在 VS Code 扩展面板选择“…” → “从 VSIX 安装…”,选择取得的 BOO 安装包,然后重新加载窗口。源码构建与开发说明见 CONTRIBUTING.md。
打开传奇服务端根目录后,确认当前引擎,在“补丁管理”选择客户端及自定义补丁,再读取需求资源。按 Ctrl+Shift+P 搜索“BOO”可查看功能命令;数据库、变量列表、地图和 AI 助手也可从左侧活动栏进入。
常用快捷键
| 快捷键 |
功能 |
Ctrl+F12 |
打开当前 [@函数] 的独立 NPC 界面可视化面板 |
Ctrl+D |
脚本选区包裹 STR;CSV、XLS 和数据库表格中填充选区 |
Ctrl+E |
脚本选区包裹 {选中内容/fcolor=250},支持多选区 |
Ctrl+Q |
执行当前问题的首选快速修复 |
Ctrl+F1 |
快速选择颜色 |
Alt+Shift+U |
选区大小写转换 |
Alt+X |
批量数值运算与递增 |
Alt+R |
在 MonGen.txt 中确认并补建缺失的怪物爆率空文本,不覆盖已有文件 |
Ctrl+Space |
触发代码补全 |
F12 / Ctrl+左键 |
定义或路径跳转;缺失路径的创建确认使用 Ctrl+点击 |
Shift+F12 |
查找引用 |
F2 |
编辑表格或数据库当前单元格 |
Ctrl+Z |
编辑撤销;数据库中撤回上一步修改 |
Ctrl+S / Ctrl+K S |
保存 / 全部保存,并触发已配置的 M2 重载 |
脚本专用快捷键按语言模式和选区生效。旧脚本乱码时,请用 GBK/GB2312 重新打开;WIL/WZL 需要同名 WIX/WZX;M2 重载建议 VS Code 与 M2 使用相同运行权限。
开源与联系
本扩展为独立开发工具,与相关游戏、引擎及品牌权利方不存在隶属或认可关系。请仅处理拥有或已取得授权的资源;反馈问题时提供引擎、操作步骤和错误截图,不公开发送服务器或补丁密码。MIT 许可适用于 BOO 自有源码,第三方组件按各自声明使用。