Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Yimi Client H01New to Visual Studio Code? Get it now.
Yimi Client H01

Yimi Client H01

newbility523

|
5 installs
| (0) | Free
H01 project helpers for VS Code.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Yimi Client VS Code Extension H01

这是 YimiClient/YimiClientVSCExtension 面向 H01 项目的精简复刻版本。

本仓库不做完整功能复刻,优先保留三个目标能力:

  1. Description 悬停提示
  2. 服务器枚举补齐
  3. EColor 颜色块展示与补全

参考上游版本:YimiClient/YimiClientVSCExtension,已对照提交 cff3a496f186。

功能范围

Description 悬停提示

在 TypeScript 文件中把鼠标悬停到 m.lang.getStr(125134) 这类调用的数字 ID 上时,扩展读取 H01 小游戏项目中的描述文件并展示对应文本。

H01 实际链路:

  1. game1/src/mod/language/Language.ts
  2. game1/src/mod/language/Description.ts

Language.getStr(key, ...param) 直接读取 Description.ts 里的 desc 对象;web/root/cfg 是运行时配置表目录,不参与 Description 文案悬停链路。

当前实现:

  • 只注册 typescript / typescriptreact hover provider。
  • 命中 m.lang.getStr(...) 或 getStr(...) 第一个参数表达式里的 Description ID 时展示文案。
  • 支持 m.lang.getStr(m.raidPlunder.cache.isInspire ? 125153 : 125154) 这类条件表达式,悬停任一 ID 都能展示对应文案。
  • 默认读取 game1/src/mod/language/Description.ts。
  • 未配置项目路径时,会尝试从当前 TS 文件路径或 workspace folder 推导 H01 Client/project 路径。
  • 文件不存在、路径未配置或 ID 未命中时安静返回空 hover。

悬停展示格式:

Description

[125153] = 已激活

[id] 使用普通文本,等号后的描述文本高亮显示。

效果示例:

Description 悬停提示

服务器枚举补齐

在 TypeScript 文件中把光标放到服务端枚举值上执行命令 Yimi H01: Fix Server Enum,扩展会读取 H01 的 game1/libs/msgEnum.d.ts,把裸枚举值补成短限定名,并补齐对应 import。

当前实现:

  • 默认读取 game1/libs/msgEnum.d.ts。
  • 支持 ECmdGateSpeADayCumulatePay 这类裸枚举值,执行命令后替换为 EGateCommand.ECmdGateSpeADayCumulatePay。
  • 支持同一 msg 子命名空间下的多个 const enum,例如 ELDTaskPetCollect 会补成 ELianDonDailyTask.ELDTaskPetCollect。
  • 支持把 msg.GateCommand.EGateCommand.ECmdGateSpecialActiveUpdate 精简为 EGateCommand.ECmdGateSpecialActiveUpdate。
  • 如果当前文件没有 import EGateCommand = msg.GateCommand.EGateCommand;,会插入到现有 import 区域末尾。
  • 如果已经有相同 import,不会重复插入。
  • 如果同名枚举值对应多个 msg.* 命名空间,会提示并停止处理,不修改文件。

效果示例:

自动填补服务器枚举

EColor 颜色块展示与补全

在 TypeScript 文件中出现 EColor.Color102 这类颜色标签时,扩展会读取 H01 的 game1/src/common/enum/EColor.ts,解析 Color102 = "#FFFEEB" 这类枚举值,并通过编辑器装饰在标签前显示对应颜色块。

当前实现:

  • 只处理 typescript / typescriptreact 文件。
  • 默认读取 game1/src/common/enum/EColor.ts。
  • 支持 EColor.Color001、EColor.Color102、EColor.Color403 等 Color数字 枚举成员。
  • 在输入 EColor. 后提供自定义颜色补全项,补全项使用 Color 类型并显示对应十六进制值。
  • 输入或粘贴 #694d3d / "#694d3d" / rgb(220,117,53) 这类已配置色值时,会自动替换成对应的 EColor.ColorXXX;如果已经在 EColor. 后输入,则只替换成 ColorXXX。
  • 补全说明面板展示对应色块;补全列表主行受 VS Code API 限制,只能显示内置 Color 图标和文本值。
  • EColor.ts 更新后按文件修改时间自动重新读取;也可执行刷新缓存命令手动清缓存。
  • 不注册 VS Code DocumentColorProvider,因此悬停颜色标签不会打开颜色选择器面板。

代码内颜色块:

代码显示颜色方块

候选项颜色块:

候选显示颜色方块

自动识别色值并转换成枚举:

自动识别颜色转换成枚举

非目标范围

本 H01 版本暂不复刻以下上游能力:

  • Description 迁移
  • 文本转 Description ID
  • UI Binding 补全
  • 代码风格转换
  • Snippets
  • Prefab 文本初始化
  • 测试脚手架以外的上游辅助脚本

使用方式

开发宿主测试

  1. 在 VS Code 打开本扩展仓库。

  2. 执行:

    npm install
    npm run compile
    
  3. 按 F5 启动 Run Extension。

  4. 在新打开的 Extension Development Host 窗口中打开 H01 项目:

    /Users/huangzhuofu/Documents/Yimi/Project/H01/Client/project
    
  5. 打开一个 TypeScript 调用点,例如 game1/src/mod/role/ui/RoleDetailsTip.ts,悬停 m.lang.getStr(100000) 里的 100000,预期展示 基础属性。

如果需要验证条件表达式,可临时写:

m.lang.getStr(m.raidPlunder.cache.isInspire ? 125153 : 125154)

悬停 125153 应展示 已激活,悬停 125154 应展示 未激活。

服务器枚举命令测试

在任意 H01 TypeScript 文件中输入:

this.addMsg(ECmdGateSpeADayCumulatePay, this.__onSpeADayCumulatePay);

把光标放在 ECmdGateSpeADayCumulatePay 上,执行命令面板里的 Yimi H01: Fix Server Enum,预期变成:

import EGateCommand = msg.GateCommand.EGateCommand;

this.addMsg(EGateCommand.ECmdGateSpeADayCumulatePay, this.__onSpeADayCumulatePay);

如果原来是:

this.addMsg(msg.GateCommand.EGateCommand.ECmdGateSpecialActiveUpdate, this.__onActiveUpdate);

执行同一命令后会精简为:

this.addMsg(EGateCommand.ECmdGateSpecialActiveUpdate, this.__onActiveUpdate);

并确保文件顶部已有 EGateCommand import。

同一 msg 子命名空间下的后续枚举也会被解析。例如输入:

const task = ELDTaskPetCollect;

把光标放在 ELDTaskPetCollect 上,执行命令后预期变成:

import ELianDonDailyTask = msg.ActiveDef.ELianDonDailyTask;

const task = ELianDonDailyTask.ELDTaskPetCollect;

EColor 颜色块和补全测试

打开任意包含 EColor.Color102 的 H01 TypeScript 文件,例如:

HtmlUtil.setHtmlContents(this._ui.txt_jump, text, 400, 30, EColor.Color102, 24);

预期 EColor.Color102 前显示 VS Code 颜色块,颜色对应 #FFFEEB。

输入 EColor. 时,预期候选中出现 Color102 等颜色补全项,并显示对应十六进制值。

输入 #FFFEEB、"#FFFEEB" 或 rgb(255,254,235) 时,预期自动替换成 EColor.Color102;在 EColor. 后输入 #FFFEEB 或 rgb(255,254,235) 时,预期自动替换成 Color102。

配置

优先使用独立配置命名空间,避免和原扩展冲突:

{
  "yimiclienth01.curProjectPath": "/path/to/H01/Client/project",
  "yimiclienth01.descriptionFile": "game1/src/mod/language/Description.ts",
  "yimiclienth01.msgEnumFile": "game1/libs/msgEnum.d.ts",
  "yimiclienth01.colorEnumFile": "game1/src/common/enum/EColor.ts"
}

如果 Extension Development Host 直接打开的是 H01 Client/project,通常不用配置 curProjectPath。如 H01 的资源路径变化,优先调整 descriptionFile、msgEnumFile 或 colorEnumFile。

Description 表、msgEnum 文件和 EColor 文件更新后会按文件修改时间自动重新读取;也可以在命令面板执行 Yimi H01: Refresh Description Cache 手动清缓存。

发布与安装

本地 VSIX 打包

执行:

npm install
npm run vsix

预期生成:

yimi-client-vscode-extension-h01-0.1.0.vsix

本地安装验证:

code --install-extension yimi-client-vscode-extension-h01-0.1.0.vsix

如需覆盖安装,先在 VS Code 扩展面板卸载旧版本,或递增 package.json 里的 version 后重新打包。

发布到 VS Code Marketplace

当前 Marketplace publisher 为:

Newbility523

首次发布前需要使用有 Newbility523 publisher 权限的 Azure DevOps Personal Access Token 登录。PAT 需要使用:

Organization: All accessible organizations
Scopes: Custom defined -> Marketplace -> Manage

登录:

npx @vscode/vsce login Newbility523

如果提示 Publisher 'Newbility523' is already known,选择覆盖旧 PAT:

Do you want to overwrite its PAT? [y/N] y

首次发布当前 package.json 中的版本:

npx @vscode/vsce publish

如果提示当前版本已经存在,发布 patch 版本:

npm run publish:patch

publish:patch 会递增 package.json 里的版本号。发布成功后提交版本变化:

git add package.json package-lock.json
git commit -m "chore: release 0.1.1"
git push

如果要发布指定版本,先手动修改 package.json 的 version,再执行:

npx @vscode/vsce publish

发布后可在 publisher 后台查看:

https://marketplace.visualstudio.com/manage/publishers/Newbility523

VS Code 扩展面板中搜索完整 ID 最稳定:

@id:Newbility523.yimi-client-vscode-extension-h01

命令行安装:

code --install-extension Newbility523.yimi-client-vscode-extension-h01

Marketplace 页面:

https://marketplace.visualstudio.com/items?itemName=Newbility523.yimi-client-vscode-extension-h01

如果 vsce login 偶发报 Request timeout: /_apis/securityroles,通常是 Marketplace / Azure DevOps 权限校验接口超时,等待一会儿或切换网络后重试即可。

当前包内已包含最小授权的专有 LICENSE.md。

生成文件

以下内容不进入仓库:

  • node_modules/
  • out/
  • dist/
  • .vscode-test/
  • coverage/
  • *.vsix
  • *.tgz
  • *.tsbuildinfo

当前状态

  • 已完成:文档、ignore 文件、上游功能边界梳理。
  • 已完成:TypeScript VS Code 扩展脚手架。
  • 已完成:H01 Description.ts 悬停提示。
  • 已完成:服务器枚举补齐。
  • 已完成:EColor.Color102 这类颜色标签的颜色块展示与 EColor. 颜色补全。

更多细节见:

  • 实现计划
  • 权限与提交流程
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft