BOO 可视化编辑器 V4.3.5
面向传奇 GM、版本制作人员和脚本开发者的一体化 Visual Studio Code 扩展。
支持 NGOM(922G/GOM)、翎风(GEE)和 996PC。将脚本开发、UI 制作、客户端资源读取、数据库维护、地图预览、脚本同步、M2 在线重载和本地 AI 助手集中在同一个工作环境中。
功能总览
传奇脚本助手
多引擎语言服务
- 打开服务端目录后自动识别引擎,也可以手动切换 GOM、翎风或 996PC。
- 三个引擎分别使用独立的命令、常量、函数、补全、悬停和代码审查数据。
- 切换引擎后,脚本补全、悬停说明、语义高亮和代码审查会同步切换。
- 根据
#IF、#ACT、#SAY 等脚本区域提供对应类型的内容。
智能补全与说明
- 支持命令、变量、标签、路径、系统常量和引擎函数智能补全。
- 支持按中文描述模糊查找指令,例如输入“检测”查找说明中包含该词的命令。
- 命令悬停可以查看用途、参数和使用方法。
- 代码补全编辑器支持按 GOM、翎风、996PC 分别新增自定义检测命令、执行命令、界面语句、引擎函数和系统常量;新增内容同步参与补全、悬停和语义高亮。
- 内置常用命令、脚本片段和
#SAY 对话模板;<TEXT、<&TEXT 等界面指令支持补全,指令名和每个参数都可悬停查看说明。
导航与引用
- 支持命令、标签和脚本路径的定义跳转与引用查找。
CHECKTEXTLIST、#CALL、#CALLEX、#INCLUDE 等相对路径支持 Ctrl+左键 跳转。
- 目标脚本不存在时,可以在点击后确认创建空白文本。
AutoRunRobot.txt 中的 @函数 可以跳转到 RobotManage.txt 中的对应定义。
- 静态
SETONTIMER ID 可以跳到同一服务端 QManage.txt 的 [@OnTimerID];ADDBUTTON ID 与新 GOM ADDDLG 的直接 @QF 目标优先查找 QFunction-0.txt,未命中时再查同一 Envir 下的 QuestDiary。动态或越界参数不会被猜测为回调。
- 支持特殊字符标签、跨文件标签、Robot 定时脚本函数和默认引擎标签。
审查与快速修复
- 提供实时语法检查、问题定位和快速修复。
- 代码审查覆盖当前文件及
MapQuest_Def、Market_Def、QuestDiary、Robot_def 的脚本和子目录。
- 脚本保存后自动重新检查发生变化的文件。
- 支持查找未使用标签、脚本格式化、批量英文转大写和日志清理。
编辑与显示
- 支持变量
STR() 包裹,多选变量或多行文本可以一次批量处理;U<$STR(N$变量)> 等嵌套组合会作为完整表达式包裹,不会拆乱内层变量。
- 支持代码折叠、文档结构、CodeLens 和语义高亮。
- 检测命令、执行命令和
#SAY 界面指令分别高亮,颜色可以单独设置。
- 提供 19 套脚本主题,并支持自定义字体和语法颜色。
变量管理
- 自动统计整个工作区的变量、个人标识、定义位置和引用位置。
- 可分析 NPC 点击参数、变量传递、字符串拆分、列表、表格和配置文件形成的嵌套变量。
- 自动合并
U3/u3 等编号变量,同时保留自定义变量名的大小写语义。
- 输入
U/T/A/G 或个人标识 [ 时,可以打开“候选变量/候选标识”,从当前统计结果中选择尚未使用的编号;已明确使用的编号会被排除,动态编号不会导致整个候选列表不可用。
- 支持搜索、分类、备注以及定义和引用位置跳转。
- 快速确认变量在哪里赋值、传递和实际使用。
UI 可视化编辑器
常规 UI 编辑器
- 支持图片、文字、三态按钮、特效动画、倒计时、文本框、数字框、关闭按钮、装备框和进度条。
- 支持拖动布局、属性编辑、缩放、平移、多选、复制、粘贴、删除和方向键微调。
- 支持 NPC 脚本与可视化画布双向联动,并生成对应 UI 代码。
Ctrl+F12 NPC 对话画布
- 在 NPC 脚本当前
[@函数] 中按 Ctrl+F12,可以打开独立的 NPC 界面可视化面板;该面板与原 UI 编辑器互不影响。
- 独立面板按当前引擎解析主对话框背景、AddDlg 子窗口,以及文字、图片、按钮、Input、MenuItem/ListView、ITEMSHOW、进度和动画等可确定控件;支持预览默认
#SAY、条件分支和 #ELSESAY,并切换多个条件组合。
- 动态字段逐项显示:未知文字使用“预览文字”,未知显示数值使用
0;这些显示占位不会解锁素材、数据库、坐标、进度、动画、计时或动作参数。
- 类型化预览输入区可填写当前模型支持的文字、数字和集合值,并保留显式空文字与
0;未知契约不会因手填显示值获得资源访问或服务器执行能力。
- 996PC 的客户端
$STM(...) 显示通路支持正文、按钮标题、提示与菜单文字;当前页唯一有效滑块可联动对应显示值。显示覆盖不改变服务器变量、资源索引或菜单原始选项身份,复杂嵌套表达式仍有支持边界。
- 996PC 源码直接声明且回调唯一的
@@InPutString / @@InPutInteger 链接可打开本地弹窗,支持确认、取消和 Escape;确认后进入本地回调预览,不向服务器提交数据。
ITEMSHOW 首参数按当前引擎物品数据库 IDX 查询 Looks,再定位 Items/ItemsN 包内槽;数据库歧义、动态 IDX、过期或缺失缓存会明确拒绝,不把 IDX 直接当图片号。
- 点击、输入、滚动、计时、动画和
@ 标签只在 Webview 内本地预览,不提交服务器、不执行脚本标签,也不刷新真实客户端。
- 可用鼠标拖动、方向键、属性输入、撤销和重做微调控件。传统 positional 文字使用已验证的
4px 绘制偏差,非文字控件按对话框逻辑原点显示;应用或保存时只逆写可直接定位的坐标数字。
该画布用于辅助检查脚本界面,不是游戏客户端模拟器。完整跨文件控制流、部分动态资源与复杂控件组合仍有缺口;原生快捷键、拖动、应用/撤销/保存的完整交互链,以及真实游戏客户端同场景对照,尚未完成全面验收。浏览器和模型测试通过不等于逐像素还原或全部脚本兼容。
客户端与补丁管理
- 按工作区绑定传奇客户端目录,不同服务端工作区可以使用不同客户端。
- 自动识别客户端
Data、Map、Wav、Graphics 及自定义补丁目录。
- 客户端中存在多个自定义补丁时,可输入并保存当前工作区使用的补丁文件夹名,中文和英文名称均可识别。
- 支持传统 PNG 素材目录,以及 PAK、JPK、WIL、WZL 资源预览;WIL/WZL 当前只读,并保留配套索引中的原始图片序号和偏移。
- “打开资源包”按照
EffectImageList.txt 行序列出当前服务端调用的全部资源;已缓存项可以打开,未缓存项以红色状态显示且不可选择。
- 支持同时打开多个已缓存资源包、历史记录、单包关闭和重新读取;保留空白图片槽位,素材名称统一显示为六位序号,避免位置错乱。
- 同名资源优先读取自定义补丁,缺少时再读取客户端原始资源。
- 支持 GOM/翎风 PAK、WIL、WZL,以及 996PC JPK 资源。
- 支持读取需求资源或读取全部资源。日常默认检测
EffectImageList.txt 已调用素材、items 至 items9、mmap10、原始地图所需的 npc 至 npc4 和 SafePointEffect。
- 自动适配
Pak.txt、JpkList.txt 中的资源路径,并支持单个资源修改密码和重新读取。
- 通过文件指纹判断资源是否变化,未变化时直接复用索引,变化后重新建立索引。
- 已缓存资源由 UI 编辑器、数据库、小地图和原始地图共同使用。
数据库编辑器
- 支持物品、怪物和技能数据库,并按数据库类型显示对应中文属性。
- 支持 SQLite 数据库记录与字段结构的增删查改。
- 支持 Access MDB 数据库查看。
- 996PC 支持
cfg_item.xls、cfg_monster.xls、cfg_magic.xls 分页查看和记录增删改,写入前自动备份并保护引擎协议行。
- 大型数据库采用分页加载;横向滚动条始终可用,并固定首个数据字段至名称列,便于持续确认当前记录。
- 支持搜索、排序和装备分类筛选。选中单元格后可直接输入替换,也可双击或按
F2 编辑。
- 支持复制、粘贴、删除、
Ctrl+D 填充、右下角拖拽递增,以及多选数值单元格后的右键“递增”。
- 普通修改采用原位保存以减少表格闪烁;写入失败会恢复原值,并可使用
Ctrl+Z 撤回上一步数据库修改。
- 右键菜单支持增加、删除、复制和粘贴数据行。
- 支持增加字段、修改字段名、删除字段和调整字段顺序。
- 物品详情显示对应素材和可视化备注,并根据
Looks 自动定位 items 至 items9 资源。
- 怪物详情显示怪物本体、顶戴动画和名称合成效果,并可编辑怪物爆率与顶戴配置。
- 支持普通怪物外观和
SmartMonster 自定义怪物配置。
数据库内置武器、衣服、头盔、项链、手镯、戒指、勋章、盾牌、腰带、靴子、宝石、时装、称号、材料、双击物品、首饰盒和神佑盒等常用分类。
地图查看与可视化编辑
- 地图查看器支持
.map 基础信息、小地图、阻挡信息、缩放和平移。
- 地图预览根据
MapInfo.txt 建立地图列表,并优先使用原始地图编号查找 MiniMap.txt。
- 支持导入小地图标识文件,编辑文字、坐标、颜色和大小地图显示范围。
- 标识可以拖动、方向键微调、增加或删除,并自动保存到原始文件。
- 每个工作区会记住标识文件路径,下次启动自动重新读取。
- 原始地图模式按照 MAP 引用的 Tiles、SmTiles 和 Objects 绘制完整地图,支持 PAK、JPK、WIL、WZL 素材。
- 原始地图按当前可视区域分批请求并预取;Tiles/SmTiles 静态底层合成为 16×16 格持久瓦片,命中缓存时不再重复发送静态底层摆放数据,Objects、MAP 动画与永久
MAPEFFECT 仍按视口动态绘制。
- 对已验证的 GOM MAP profile,Objects 支持内嵌连续帧动画与 bit7 DrawBlend(SourceAlpha + One);未验证的控制字节按普通首帧显示,不扩展猜测到其他 profile。
- 可保守预览
QManage.txt 的 [@Startup] 中静态可达、全员可见且无限循环的永久 MAPEFFECT。它表示脚本定义,不代表 M2 当前实时状态;条件、动态参数、非零可见范围或未验证绘制模式会跳过并提示。
- 原始地图显示
Merchant.txt 中的 NPC 和 MonGen.txt 中的刷怪信息,不显示小地图标识编辑器。
- 原始地图中的官方 NPC 使用客户端原始正面动画:优先读取自定义补丁
npc 至 npc4 的 PAK/JPK,未提供对应包时再读取客户端 WZL/WIL,并保留素材原始偏移。
- NPC 名称按照游戏显示规则居中定位,名称中的
\ 会按游戏顺序拆分为多行。
- 可编辑 NPC 坐标和外观编号,修改后会保存
Merchant.txt 并重新读取对应外观。
- 支持读取、预览和编辑
NpcIcons 顶戴配置;顶戴素材偏移、脚本偏移、层级和动画与怪物顶戴共用同一角色格定位规则。
- 支持打开 NPC 脚本、编辑刷怪参数和显示刷怪范围。
- NPC、刷怪点支持拖动和方向键整数微调。
Merchant.txt 中可通过 Ctrl+左键 点击 NPC 名称,直接定位到对应原始地图坐标。
- 原始地图提供 NPC 快速定位按钮和可展开的地图概览导航。
- 不同引擎分别使用对应的 Merchant、MonGen、NPC 外观和资源规则。
文件、表格与多区同步
- CSV 和常用配置表支持可视化编辑、复制、粘贴、删除、连续填充和键盘导航。
- 支持
merchant.table、mongen.table 和 Excel 97-2003 .xls 数据。
- 批量数值工具支持加、减、乘、除和“递增+”。
- 资源管理器可多选文件或文件夹,右键选择“同步其他区”。
- BOO 脚本助手的“快捷工具”中提供独立“脚本同步”入口。
- 双栏同步界面可以勾选当前工作区来源和同盘多个目标服务端。
- 文件夹同步会递归包含子文件和空目录,并按工作区相对路径覆盖或创建目标内容。
- 同步前显示来源数量、目标数量和写入规模,单个文件失败不会中断其余任务。
M2 在线重载
- 保存脚本后可以自动触发 M2 重载,也支持手动重载。
- 可扫描 M2 菜单并配置不同类型脚本的重载项目。
- 内置重载组件,无需单独打开辅助工具窗口。
- 同时运行多个服务端时,按照当前工作区的
M2Server.exe 完整路径定向重载。
- M2 忙碌期间的连续保存请求会自动合并,并等待当前菜单命令完成后再继续,避免重载命令持续堆积。
- 菜单重载无法使用时会保留明确提示,不会静默操作其他服务端进程。
常用辅助工具
- 代码补全编辑器与助手设置。
- 颜色代码、装备位置、StdMode 和 MapInfo 参数查询。
- 常用命令、脚本片段、脚本模板和 ANIS 特殊符号。
- 变量列表、数据库查看器和地图查看器快捷入口。
- 编辑器右上角“快捷文件”可打开常用服务端文件,并按工作区添加或移除 Mir200 相对路径。
DeepSeek Harness AI 助手
- 左侧活动栏提供独立 DeepSeek 入口,点击后在右侧拆分编辑器打开本机 DeepSeek Harness。
- 可复用已经运行的本机 Harness,或按配置尝试启动;API Key 保留在 Harness 自己的设置中。
- 左侧视图保持为轻量启动卡,不把完整聊天界面挤在侧边栏内。
安装
已经取得 VSIX 时,在 VS Code 扩展视图右上角选择“从 VSIX 安装…”,选中 boo-ngom-editor-4.3.5.vsix,安装完成后重新加载窗口。
从源代码构建时,先安装 Node.js 20 与 Python 3.12,再运行:
npm ci
python -m pip install -r requirements-test.txt
npm run test:all
npm run package
本地安装包生成在 artifacts/releases/vscode-marketplace/。发布前还应解包并运行 npm run verify:packaged-dependencies -- "<解包后的 extension 目录>"。
使用方法
开始使用
使用 VS Code 打开传奇服务端根目录。扩展会尝试识别当前引擎;需要手动调整时,点击状态栏引擎名称或运行“BOO: 切换引擎”。
按 Ctrl+Shift+P 并输入“BOO”,可以查看主要 BOO 命令;DeepSeek、快捷文件与全部保存也可以从对应入口使用。
使用 DeepSeek AI 助手
点击左侧活动栏最下方的“DeepSeek”按钮,扩展会在右侧拆分一个编辑器并内嵌显示本机 DeepSeek Harness;已有 Harness 实例在运行时直接复用,不会重复启动;否则自动在空闲端口启动。首次使用需先运行 DeepSeekHarness.exe(可到 QQ 交流群 58505745 下载),扩展会自动识别其安装位置。左侧栏仅保留一张迷你启动卡(可随时重新打开右侧面板)。在 Harness 设置页填入自己的 DeepSeek API Key 后即可对话。服务地址与端口可通过 boo.deepseek.host / boo.deepseek.port 调整。
配置客户端资源
- 打开左侧“补丁管理”。
- 选择传奇客户端根目录。
- 客户端存在多个自定义补丁时,输入当前工作区使用的自定义补丁文件夹名。
- 检查自动发现的
Pak.txt 或 JpkList.txt,必要时手动选择。
- 日常点击“读取需求资源”;需要检查全部资源时再点击“读取所有资源”。
客户端设置按工作区保存。自定义补丁和客户端存在同名资源时,优先使用自定义补丁中的文件。
编写脚本
打开脚本即可使用补全、悬停、诊断、定义跳转和引用查找。中文搜索只匹配指令说明,不会因为名称相近混入其他引擎命令。
打开命令面板并运行“BOO: 代码补全编辑器”,可以切换引擎后新增、修改或删除自定义检测命令、执行命令、界面语句、引擎函数和系统常量。保存后无需重启扩展,新项目立即参与当前引擎的补全、悬停和高亮,且不会混入其他引擎。
在 #SAY 区域输入 < 可以补全当前引擎支持的界面指令;鼠标悬停在 <TEXT、<&TEXT 等指令名上可查看用途和全部参数,悬停在某个参数值上只显示该参数的含义。界面指令颜色可在“BOO: 颜色设置”中单独调整。
路径引用和 Merchant NPC 名称需要按住 Ctrl 后单击才会跳转;仅按住 Ctrl 不会弹出创建提示。
点击编辑器右上角“快捷文件”可打开内置常用文件。选择“添加自定义文件”后输入相对于 Mir200 的路径,例如 Envir\QuestDiary\功能脚本\示例.txt;自定义列表按当前工作区保存,也可从同一菜单移除。
制作 UI
打开左侧“BOO 可视化编辑器”,从新资源、历史记录或补丁缓存中选择素材。双击素材添加到画布,随后拖动布局并在属性面板中修改参数。
PAK/JPK/WIL/WZL 会按当前引擎和服务端调用列表进行筛选。素材列表右侧的重新读取按钮可以刷新已打开资源。
需要直接调整已有 NPC 脚本界面时,将光标放在目标 [@函数] 内并按 Ctrl+F12。在独立面板中选择条件场景并调整控件,确认无误后点击“应用”或“保存”;原有 UI 编辑器仍可独立使用。
编辑数据库
打开左侧“数据库”,选择物品、怪物或技能标签。单击数据行可查看左侧属性;选中单元格后直接输入即可替换,也可双击或按 F2 编辑,按 Enter 或点击其他单元格保存。
拖动选区右下角可以生成递增序列。多选数值单元格后右键选择“递增”并输入步长:输入 2 时依次增加 2、4、6,输入 -1 时依次减少 1、2、3。右键菜单还可新增、删除、复制或粘贴数据行,误操作可按 Ctrl+Z 撤回。
SQLite 可以修改字段结构;MDB 当前只读;996PC XLS 支持记录编辑,但不修改引擎协议字段结构。
查看地图
打开 .map 文件可以使用地图查看器。左侧“地图预览”用于浏览 MapInfo 地图、导入标识和切换“预览地图/原始地图”。
预览地图用于编辑小地图标识;原始地图用于查看和调整 NPC、刷怪点及真实地图素材。原始地图先加载当前可视区域,平移到未缓存区域时会继续请求并显示进度。
在原始地图中点击 NPC 后,右侧 NPC 编辑器可以修改坐标、外观编号和顶戴文本。修改会自动保存到 Merchant.txt 或对应的 Envir\NpcIcons 文件,并在地图上重新读取最新外观与顶戴。
同步其他区
打开 BOO 脚本助手,在“快捷工具”中点击“脚本同步”。左侧勾选当前工作区文件或文件夹,右侧勾选一个或多个目标服务端,然后点击“开始同步”。
也可以在资源管理器中多选文件或文件夹,右键选择“同步其他区”。同步会替换目标中的同路径文件,执行前请核对确认窗口中的来源和目标。
配置 M2 重载
启动 M2Server 后运行 M2 菜单扫描,选择当前引擎对应的重载菜单。建议让 VS Code 与 M2 使用相同运行权限。
配置完成后,保存脚本即可自动重载,也可以通过命令面板手动执行。
常用快捷键
| 快捷键 |
功能 |
Ctrl+D |
脚本中批量包裹 STR();CSV、XLS 和数据库表格中填充选区 |
Ctrl+E |
将脚本选区替换为 {选中内容/fcolor=250},支持多选区 |
Ctrl+Z |
撤回上一步数据库修改 |
F2 |
编辑当前表格或数据库单元格 |
Ctrl+Q |
执行当前问题的首选快速修复 |
Ctrl+F1 |
快速选择颜色 |
Alt+Shift+U |
选中文本大小写转换 |
Alt+X |
批量数值加减乘除或按出现顺序递增 |
Ctrl+Space |
手动触发代码补全 |
Ctrl+F12 |
打开当前 [@函数] 的独立 NPC 界面可视化面板 |
F12 / Ctrl+左键 |
跳转到定义或路径目标 |
Shift+F12 |
查找所有引用 |
Ctrl+S |
保存当前脚本并触发已配置的 M2 重载 |
Ctrl+K S |
全部保存并触发对应 M2 重载 |
常见问题
脚本中文乱码
传奇旧脚本通常使用 GB2312 或 GBK 编码。通过 VS Code 右下角编码菜单,以 GB2312 或 GBK 重新打开文件。
没有补全、高亮或代码审查
确认右下角语言模式为 GOM 脚本,并检查当前选择的引擎。检测命令与执行命令的颜色可以在“BOO: 颜色设置”中分别调整。
资源提示未调用
UI 编辑器只展示当前引擎和服务端已经调用的资源。确认资源名称已写入 EffectImageList.txt,然后在补丁管理或素材列表中重新读取。
PAK/JPK 密码错误
确认当前客户端和密码文件匹配。GOM/翎风通常使用 Pak.txt,996PC 通常使用 JpkList.txt。密码表同时兼容 路径|密码 和 路径|密码|0/1,旧客户端绝对路径会按当前 Data 目录重新定位;也可以在补丁管理中为单个资源修改密码并重载。
当密码和完整索引已经验证通过、仅有极少数独立素材块无法解码时,扩展会保留原图片序号并将该位置显示为空白,同时在补丁管理中提示跳过数量;多处异常、索引越界或重复偏移仍会中止读取,避免把损坏资源误当成正常素材。
WIL/WZL 无法显示
确认资源与配套索引文件位于同一目录,例如 WIL/WIX 或 WZL/WZX。WIL/WZL 当前只提供预览,不修改原资源。
出现 incorrect data check
常见原因包括密码错误、文件仍在写入、复制不完整或资源包损坏。等待补丁更新完成后重新读取;固定序号持续失败时,请重新复制原始资源包。
物品、怪物或地图素材显示未缓存
先在补丁管理中读取需求资源。检查当前工作区绑定的客户端、自定义补丁名称和资源优先级是否正确,再重新选择数据库记录或地图。
数据库无法修改
MDB 当前只支持查看。SQLite 与 996PC XLS 需要写入权限,并且不能被其他数据库工具或 M2 独占。
原始地图没有底图
确认客户端或自定义补丁中存在 MAP 调用的 PAK/JPK/WIL/WZL,并已经在补丁管理中建立索引。自定义补丁 Map 优先于客户端 Map,最后才回退服务端 Map。
M2 重载没有反应
确认 M2Server 正在运行,并让 VS Code 与 M2 使用相同权限。引擎更新或菜单变化后,请重新扫描 M2 菜单。
首次读取资源时间较长
日常使用“读取需求资源”可减少检查数量。扩展默认建立索引并按需读取单张图片,不会为整个资源包生成逐张 PNG;首次速度仍会受到资源槽位数量和磁盘性能影响。
开源与开发
npm ci
python -m pip install -r requirements-test.txt
npm run compile
npm run lint
npm run test:all
扩展发布包可通过 npm run package 构建。PAK 离线运行时和 M2 重载器均包含对应源码及构建入口。MIT 许可适用于 BOO 自有源码;第三方组件、二进制运行库和兼容展示素材按各自声明处理。
兼容环境
- Windows
- Visual Studio Code
1.68.0 或更高版本
- NGOM(922G/GOM)
- 翎风(GEE)
- 996PC
使用声明
本扩展是独立开发的辅助工具,与相关游戏、引擎及其品牌权利方不存在隶属、赞助或认可关系。用户应仅处理自己拥有或已经取得合法授权的脚本、补丁、图片、地图和数据库资源。
联系方式
- 技术 QQ:
1167746
- 交流群:
58505745
反馈问题时建议提供扩展版本、引擎版本、操作步骤和错误截图。请勿公开发送服务器密码或补丁密码。