Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Mir NPC ScriptNew to Visual Studio Code? Get it now.
Mir NPC Script

Mir NPC Script

Larry Xu

|
1 install
| (0) | Free
传奇 GOM 引擎 NPC 脚本语言支持:语法高亮、命令补全、calltip、snippet、跳转/引用/重命名、颜色器、996 面板转换
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Mir NPC Script (GOM)

传奇(Mir2)GOM 引擎 NPC 脚本语言的 VSCode / Trae 支持:语法高亮、命令补全、calltip、snippet、跳转/引用/重命名、FCOLOR 颜色器、996 面板转换与实时预览,开箱即用,无需语言服务器。

效果预览

语法高亮(段落 / 指令 / 命令 / not 前缀 / FCOLOR 色块)

语法高亮

命令补全与 calltip(输入 MAP 过滤,签名参数提示)

补全与calltip

996 面板预览(选区一键渲染排版效果)

面板预览

功能特性

语法高亮

  • [@段落头]:整段同色(含 []),一眼定位脚本区块
  • #SAY / #IF / #ACT 等块指令:暗蓝色;not / ! 取反前缀:紫色;命令行首词:命令色
  • 命令染色基于上下文而非命令表——内置命令、自定义命令、甚至命令表里没有的词,只要出现在命令位置都会正确着色
  • <文字> 元素、/FCOLOR= 色号、/@动作 链接、$变量、{内联样式}、行尾 \ 软换行、; 注释行
  • 嵌套块结构解析:对话文本与命令行上下文精确区分,#SAY 内的文字不会误判为命令

智能补全与提示

  • 命令补全:命令上下文(#IF / #ACT 块、段落内裸命令区)的行首输入命令前缀即弹出,约 500 条 GOM 命令,含中文说明与参数描述;对话文本内不会误弹
  • Calltip(签名帮助):命令后敲空格显示参数签名,继续敲空格自动推进当前参数高亮
  • Snippet:700+ 条代码片段,支持 Tab 跳转占位符
  • Hover 悬停:命令显示说明与参数文档;段落名显示引用/定义统计

导航与重构

  • 转到定义(F12):/@main、goto @x、@@InPut 等引用跳转到 [@main] 段落
  • 查找引用(Shift+F12):段落头反查全部引用位置
  • 重命名(F2):改一处段落名或引用,全文件同步
  • 大纲视图:段落结构树;Ctrl+T 跨工作区搜索段落(自动识别 GBK/UTF-8 编码)
  • 文档高亮:点击命令/段落/变量,高亮全文同名符号

颜色器

/FCOLOR=254 等色号旁显示对应颜色色块(内置 GOM 引擎 256 色表),点击色块打开取色器,选色后自动反写最接近的色号。

996 面板转换与预览

  • 转换为 996 面板文本:选中对话内容(元素行 / 含 #SAY 的块),一键替换为 996 面板标签
  • 面板预览:选中后在旁边分栏打开 Webview 渲染排版效果——宋体等宽布局、FCOLOR 配色、/@动作 可点击、AUTOCOLOR 动画,与主工程 Web 工具渲染一致

数据管理(Webview)

命令面板 → Mir NPC: 命令与 Snippet 管理:

  • 页签化管理 calltip 命令(名称/说明/参数)与 snippet(prefix/body/描述),带过滤与学习示例
  • 内置数据可"覆盖编辑",自定义条目可增删
  • 保存到工作区 .vscode/mir-npc/(可经 mir-npc.dataPath 配置),补全/calltip/snippet 即时生效,无需重载

快速开始

  1. 安装本扩展
  2. 打开 .npc / .mir / .gom 文件(其他扩展名如 .txt:点击右下角语言模式 → Mir NPC Script (GOM))
  3. 建议(脚本多为 GBK 编码):设置中为该语言指定编码
"[mir-npc]": { "files.encoding": "gbk" }

命令列表

命令 说明
Mir NPC: 命令与 Snippet 管理 打开数据管理 Webview
Mir NPC: 转换为 996 面板文本 选区转 996 面板标签(也可右键菜单 / Ctrl+.)
Mir NPC: 预览 996 面板效果 选区生成 HTML 面板预览(旁边分栏,也可右键菜单)

配置项

配置 默认值 说明
mir-npc.dataPath .vscode/mir-npc 自定义 calltip/snippet 数据目录(相对工作区根或绝对路径),文件为 functions.json / snippets.json

已知限制

  • .txt 等扩展名不自动关联,需手动切换语言模式
  • 脚本历史原因多为 GBK 编码,建议按上文设置;工作区符号搜索已自动做编码降级
  • 命令行首词的染色是"命令上下文级"(不校验命令名是否存在),精确的命令匹配由补全/calltip 负责——两者职责分离
  • 面板预览依赖宋体,非 Windows 环境可能回退为系统等宽字体,排版略有偏差

从源码构建

cd vscode
node build.js          # 生成语法文件、转换器 bundle 并打包 dist\mir-npc-script-<ver>.vsix
node --test test/      # tokenizer / features / symbols 冒烟测试
code --install-extension dist\mir-npc-script-<ver>.vsix

说明:

  • build.js 零依赖打包(无需 vsce/npm),从 syntaxes/tmLanguage.template.json 生成最终语法,并用 esbuild 把主工程 src/generate*.js 打进 lib/converter.js(996 转换/预览共用同一套布局逻辑)
  • 发布产物压缩与混淆:构建时所有 JS 自动经过 esbuild minify(标识符混淆、去注释)+ javascript-obfuscator(字符串抽取 + base64 编码)两步处理,抬高逆向成本。JS 无法真正加密(运行时必须可解),这是发布保护的行业现实方案;为不影响编辑器热路径(补全/诊断每次击键均运行),刻意未开启控制流压平等重型混淆
    • 混淆配置:stringArray + base64(阈值 0.75)、十六进制标识符;构建期用 vm.Script 做语法自检
    • 依赖缺失时自动降级为原样复制,不会构建失败
    • 调试开关:MIR_NPC_NO_OBFUSCATE=1 环境变量可临时关闭混淆,构建未混淆版便于排查线上问题
    • javascript-obfuscator 为 devDependency(npm install 后可用);esbuild 复用主工程 node_modules
  • README 截图可用 node images/gen.cjs 重新生成 HTML 页面(真实 grammar 分词渲染),再浏览器截图覆盖 images/*.png
  • node 不在 PATH 时,请用完整路径(本仓库开发环境示例:D:\nil\prjs\db_edit\mud2\tools\node-v20.20.2-win-x64\node.exe)

发布到 Marketplace

  1. 修改发布者:本包 publisher 为 mirscriptcvt 占位名。到 Publisher 管理 创建你自己的发布者,并同步修改 package.json 的 publisher 与 repository 字段

  2. 用 vsce 打包发布(marketplace 上传要求官方工具校验):

    npm install -g @vscode/vsce
    cd vscode
    vsce package          # 生成 .vsix(读取 .vscodeignore 排除源码/测试)
    vsce publish          # 需 Personal Access Token(Azure DevOps,勾选 Marketplace → Manage)
    
  3. 注意事项:

    • vsce package 前先跑一次 node build.js(lib/converter.js 与最终语法文件是构建产物,不在源码中)
    • README 中的截图建议放 images/ 目录并用相对路径引用,随仓库公开
    • 版本号变更遵循 CHANGELOG.md,vsce publish 会校验与 CHANGELOG 一致性(不强制)
    • 可先在 marketplace.visualstudio.com/manage 上传 .vsix 手动发布,便于预览页面效果

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft