mcpField
W
Warcraft III Map Tools

Warcraft III Map Tools

本地服务
github.com/GodMephisto游戏娱乐31 周前更新

关于 Warcraft III Map Tools

这是面向 Warcraft III 地图制作者的 MCP 服务,供 AI 助手读取、审计和编辑 `.w3x`、`.w3m` 地图,未触及的文件字节保持不变。它还可搜索随附文档,并在安装本地索引后提供语义搜索和图查询。

主要功能

  1. 01读取、审计和编辑地图
  2. 02保留未修改文件的字节
  3. 03检查资源、对象数据与地图行为
  4. 04离线搜索随附参考文档
  5. 05本地索引支持语义与图查询

适用场景

  1. 01检查地图资源和对象数据问题
  2. 02编辑地图并保留其他文件内容
  3. 03搜索 Warcraft III 编辑参考资料
  4. 04比较地图版本或检查兼容性

MCP 相关

这是 wc3ctl 的 MCP 服务,以标准 stdio 方式向 MCP 客户端提供地图操作、审计和文档搜索等工具,并将整份参考文档作为 MCP 资源提供。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbwc3-mcp-v0.5.19-win-x64.mcpb
npmwc3-mcp0.5.19

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

wc3-mcp

由 GodMephisto 制作

CI

一个 MCP 服务,可让 Claude 等 AI 助手以逐字节保真的方式读取、审计和编辑《Warcraft III》.w3x 和 .w3m 地图(未触碰的文件会保留原有字节)。

这是 wc3ctl 的 MCP 服务。wc3ctl 还提供命令行工具和桌面编辑器。若也需要这些功能,请安装 wc3ctl。它包含与 wc3ctl mcp serve 相同的服务。

所需条件

  • 64 位 Windows。游戏数据读取器(CascLib)是 Windows 库。
  • Warcraft III Reforged,仅供读取基础游戏数据的工具使用。地图工具无需安装它也能运行。
  • 任意支持 MCP 的 AI 应用。除此之外无需其他组件,发行包自带 .NET。

安装

打开 PowerShell 并运行

irm https://raw.githubusercontent.com/GodMephisto/wc3-mcp/main/install.ps1 | iex

该命令会下载最新发行版、校验其 SHA-256、将其解压到 %LOCALAPPDATA%\Programs\wc3-mcp、将该文件夹添加到 PATH,并为检测到的所有受支持 AI 应用完成设置。无需管理员权限。再次运行同一命令即可更新。之后请重启 AI 应用。

想手动安装?从 Releases 页面下载 zip,解压到任意文件夹,然后在该文件夹中运行

.\wc3-mcp.exe install --all

设置程序会记录 exe 的实际位置,因此可以使用任意文件夹。它还会将该文件夹添加到用户 PATH(仅添加一次),之后便可在任何新终端中直接使用 wc3-mcp。传入 --no-path 可跳过此操作,并改为在其文件夹中运行 .\wc3-mcp.exe。

只使用 Claude Desktop?从 Releases 页面下载 wc3-mcp-<version>-win-x64.mcpb 并双击。Claude Desktop 会将其安装为扩展。它唯一的设置项是 Warcraft III 文件夹,留空即可自动检测安装位置。该服务也已列入 MCP Registry,名称为 io.github.GodMephisto/wc3-mcp,供支持从该注册表安装的应用使用。

上下文与 RAG

开箱即用时,该服务会基于随附的 Warcraft III 参考资料、Big UI-Frame Tutorial 和 Editor Ability Insight 文档,以词法方式离线响应 docs_search,并将每份完整文档作为 MCP 资源提供。

如需完整语料和语义搜索,请安装本地索引。在 AI 应用中调用 rag_install 工具,或在 shell 中运行

wc3ctl rag install

该命令会一次性获取两个文件,并分别校验其是否与固定摘要匹配。嵌入模型 BAAI/bge-small-en-v1.5 大约为 130 MB;语料来自本仓库的 dataset-v1 发布版,约为 61 MB。随后会构建本地向量索引和图。无需数据库、服务或密钥,且默认采用低 CPU 占用设置。完成后,docs_search 将使用语义搜索,图工具 graph_neighbors、graph_hubs 和 graph_path 也会启用。wc3ctl rag status 可报告已安装的内容。

设置 AI 应用

这些应用需要将 wc3-mcp 添加到 PATH 中,单行安装命令和首次运行 wc3-mcp.exe install 时都会完成此操作。在此之前,请在 exe 所在文件夹中运行 .\wc3-mcp.exe ...。

wc3-mcp install --all            set up every supported app found on this PC
wc3-mcp install cursor vscode    set up only the apps named
wc3-mcp uninstall --all          remove it again
wc3-mcp config <app>             print the settings to paste by hand
wc3-mcp clients                  list supported apps and whether each is set up
wc3-mcp doctor                   check the install, the game folder and the apps
应用使用的名称写入位置
Claude Codeclaude-code通过 claude mcp add --scope user
Claude Desktopclaude-desktop%APPDATA%\Claude\claude_desktop_config.json(Store 版本也适用)
Cursorcursor%USERPROFILE%\.cursor\mcp.json
VS Code(GitHub Copilot)vscode%APPDATA%\Code\User\mcp.json
Windsurfwindsurf%USERPROFILE%\.codeium\windsurf\mcp_config.json 或 %APPDATA%\devin\mcp_config.json
Gemini CLIgemini%USERPROFILE%\.gemini\settings.json
Codex CLIcodex%CODEX_HOME% 或 %USERPROFILE%\.codex\config.toml
ClineclineVS Code 中 Cline 存储目录里的 cline_mcp_settings.json
LM Studiolmstudio%USERPROFILE%\.lmstudio\mcp.json
Zedzed%APPDATA%\Zed\settings.json

设置只会更改其中的 wc3 条目。文件中的其他服务和设置都会保持原样,并且会先将文件复制为 NAME.wc3-mcp.bak。如果文件中包含注释(Zed 和 VS Code 中很常见),则绝不会重写文件,因为这会删除注释。此时会打印出需要粘贴的设置。

其他 MCP 应用

这是一个标准的 stdio MCP 服务。将应用指向不带任何参数的 wc3-mcp.exe 即可。运行 wc3-mcp config cursor 会打印出一个已填入实际路径的现成 JSON 条目,大多数应用都可以直接使用。

配置

系统会先从 Windows 注册表自动查找 Warcraft III 文件夹,然后依次检查 C:\Warcraft III、C:\Program Files (x86)\Warcraft III 和 C:\Program Files\Warcraft III。如果你的文件夹位于其他位置,可以:

  • 使用 wc3-mcp install --all --game-dir "D:\Games\Warcraft III" 安装,这会在每个应用的条目中设置 WC3_GAME_DIR,或
  • 在单次工具调用中传入 game_dir。

game_dir 参数的优先级高于 WC3_GAME_DIR,而 WC3_GAME_DIR 的优先级高于自动搜索结果。运行 wc3-mcp doctor 可查看正在使用的文件夹。

从源代码构建

在已安装 .NET 8 SDK 的 PowerShell 中运行:

git clone https://github.com/GodMephisto/wc3-mcp
cd wc3-mcp
dotnet test --filter "Category!=Corpus&Category!=GameData&Category!=Doctor"
dotnet publish src/Wc3.Mcp/Wc3.Mcp.csproj -c Release --self-contained -r win-x64 -o dist-mcp
.\dist-mcp\wc3-mcp.exe install --all

之后,应用会启动克隆目录中 dist-mcp 文件夹里的 exe,并将该文件夹添加到 PATH 中,因此请保持克隆目录位置不变,或者移动后重新运行最后一行。

SDK 和软件包的确切版本见 REQUIREMENTS.md。 CascLib.dll 必须与 wc3-mcp.exe 放在同一目录中。

工具

251 个工具。

名称读/写描述
asset_audit只读标记可疑的导入资源。报告大于 max_bytes 的条目、宽度或高度不是 2 的幂的 BLP 纹理、没有 .m... 的二进制 .mdx,以及其他问题。
asset_convert_batch写入使用共享转换器,将文件夹中的每个纹理转换为一种目标格式,并将副本写入 out_dir,同时保留相对路径。...
asset_duplicates只读按 sha256 将地图中字节完全相同的导入文件分组,并报告每组重复文件浪费的空间。排除零字节条目。只读...
asset_import_wire写入将磁盘文件作为导入资源添加到地图;如果文件是模型或图标,且 object 指定了一个对象,则将其对应的模型或图标字段指向新导入资源...
asset_list只读列出图标或模型对象字段实际可设置的资源路径,包括地图自身的导入文件和游戏原始资源。设置...前请先调用此工具。
asset_model_lint只读扫描地图中的所有导入模型(.mdx/.mdl),报告静态检查可发现的结构问题,例如没有材质的几何组、材质引用了某个 t...
asset_replace写入替换资源路径在所有引用位置中的值(对象数据字段值、脚本字符串字面量和 war3map.imp 导入表),并保存修改后的副...
asset_size_report只读按父文件夹汇总地图导入文件的字节数,按总量从大到小排列,清楚显示哪些文件夹占用地图的大部分空间。只读。
asset_thumbnails写入为文件夹中的每个模型,或文件夹中每张地图内的每个导入模型,渲染 PNG 缩略图并写入 out_dir。复用模...
asset_unused只读列出地图中没有被任何对象数据字段值或脚本字符串字面量引用的导入文件,并显示各自占用的空间。供审核...前参考。
audit_ability只读对每个技能,检查已放置英雄的完整运行时链路,并告知 PASS 或具体的断链位置;检查深入程度远超 audit_hero,后者只验证施法能否到达...
audit_fidelity只读通过比较移植对象及其整个自定义对象依赖闭包在 SOURCE 地图中的数据,检查对象数据是否被忠实移植...
audit_hero只读检查已放置英雄的技能是否确实在地图脚本中接线,而不只是存在于对象数据中。针对每项技能,验证...
audit_map只读对地图对象数据进行行为审计,只读。‘validate’检查地图能否加载;此工具检查技能是否如其声称那样发挥作用...
audit_readiness只读检查已放置英雄的脚本能否正确运行,而不只是触发;这是 audit_hero 无法发现的问题,因为它只验证施法能否到达处理...
audit_trend只读对两张地图运行行为审计,按检查项分组报告第二张地图新增和移除的发现。audit_map 检查当前有哪些问题;此工具...
bench_compat只读检查每张地图与每个目标版本的兼容性,返回每个单元格包含发现数量的通过或失败矩阵,并汇总整个矩阵。通过...
bench_leaks只读对文件夹中的每张地图运行静态泄漏检测,按地图和泄漏类型报告数量,以及高频和重复总数。文件夹扫描...
bench_open只读通过加载器打开文件夹中的每张地图,记录每张地图的打开时间(毫秒)、条目数和解压后总字节数,并报告耗时最...
bench_perf_gate只读比较两个已记录的基准测试结果 JSON 文件,报告是否有任何指标的退化幅度超过阈值,可用作 CI 门禁。每个文件都是一个对象...
bench_schema_coverage只读衡量模式语料库包含的对象数据。每个模式文件夹占一行,列出版本、所属时期,以及对象数据是否真实(文件夹中包含...
bundle_diff只读按对象和资源成员比较两个依赖包(由 'bundle unit -o' 写入的 JSON),列出各自新增、移除或重命名的内容。
bundle_merge写入将两个依赖包合并为一个,并以 JSON 格式写入 out_path。如果两个包中同一 rawcode 的定义不同(类型不同...),则拒绝合并。
bundle_unit只读解析一个单位的全部依赖项——移植预览:引用的对象(附带自定义对象到地图的标记)、资源文件、触发器字符串、依赖边和...
camera_add写入在目标位置添加摄像机,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。空名称或重复名称会被拒绝。
camera_list只读列出地图的摄像机(war3map.w3c):每个摄像机的名称、目标位置、旋转、攻击角度、距离和视野。
camera_remove写入移除摄像机,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
camera_set写入设置摄像机的字段,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。可编辑字段:Name|TargetX|TargetY|ZOffset|Rotation...
camera_tour写入在两个现有摄像机之间插入 N 个摄像机,形成平滑的巡游路径,并将编辑后的地图保存到 out_path。所有浮点字段均线性插值,且...
changelog只读根据两个引用之间的 git log 生成发行说明,按 Conventional Commit 类型(feat、fix、perf、docs、chore 等)分组,每组一个标题,...
ci_all只读一次性运行 lint、validate,并在指定 target 时运行 compat。每个门禁返回一行摘要,并给出整体通过或失败状态及退出代码(0 表示通过,1...
ci_compat只读将 compat 检查作为 CI 门禁运行。返回通过或失败状态、检查内容和退出代码(0 表示通过,1 表示失败)。发现错误级别问题、原生...
ci_lint只读将 lint 作为 CI 门禁运行。每项检查均返回通过或失败状态、检查内容和退出代码(0 表示通过,1 表示失败)。发现错误级别问题或...
ci_schema只读将模式数据集回归检查作为 CI 门禁运行。每项检查均返回通过或失败状态、检查内容和退出代码(0 表示通过,1 表示失败)。如果...
ci_validate只读将验证作为 CI 门禁运行。返回通过或失败状态、检查内容和退出代码(0 表示通过,1 表示失败)。地图无法加载或报告...时失败。
compat_explain只读针对目标版本解释一个标识符。报告目标版本是否将其声明为原生函数、全局变量、类型或函数;如果没有,则报告最早包含它的版本...
compat_matrix只读检查多张地图与多个目标版本的兼容性,返回每个单元格显示通过或失败状态及发现数量的网格。通过表示目标版本...
deprotect_map写入恢复受保护地图剥除的文件名。受保护地图不包含 (listfile),因此大多数条目没有名称,无法按名称查找。请...
diff只读比较两张地图,并报告新增、移除或更改的内部文件。直观查看编辑实际对地图做了什么,也可检查...
doctor_check只读检查地图能否在 Reforged 3.0 上运行;如果不能,说明原因。返回结论和发现,每项包含代码、严重程度(阻断、警告、提示)、受影响文件或模...
doctor_compare只读逐文件比较地图的两个版本有哪些差异(新增、移除、更改),并恢复受保护归档中的文件名,还包括对象、脚本和字符串...
doctor_fix写入使用 doctor 的 Fix map 修复地图副本,使其适用于 Reforged 3.0:处理保护、伪造文件表、混乱的 ID、3.0 引擎拒绝的数据、损坏的 SLK 表...
doctor_inspect只读只读检查一张地图。diag 报告地图的保护方式及 World Editor 所需内容,包括是否在 SLK 模式下运行以及修复步骤...
editor_catalog_get只读显示一个 World Editor 目录中的条目,每项包含存储的键(地图文件实际使用的令牌)、解析后的显示名称和所有负载字段...
editor_catalog_list只读列出 World Editor 的目录名称及条目数,数据来自 UI\WorldEditData.txt(TileSets、SkyModels、LoadingScreens、SoundChannels、MapSizes、画笔...
file_get_text只读将一个内部文件解码为 UTF-8 并读取,去除开头的 BOM。用于读取地图的覆盖文本文件、war3mapSkin.txt 等承载地图...
file_list只读列出归档的内部条目及其当前大小;该大小反映待处理的替换内容,而非过时的原始内容。未命名条目的名称为 null...
file_set写入将磁盘文件的字节原样替换到一个内部文件,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。字节会暂存...
force_list只读列出地图的队伍/团队(war3map.w3i):每个队伍的索引、名称、成员玩家 ID,以及联盟/共享标记。
force_rename写入重命名 war3map.w3i 中的队伍(团队),并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
force_set_flags写入设置队伍的联盟/共享标记,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
force_set_players写入在 war3map.w3i 中将玩家添加到队伍(团队)或从中移除,并将编辑后的地图保存到 out_path。必须且只能传入 add 或 remove 之一。添加玩家会清除该玩家原...
gamedata_bounds只读报告某个字段代码的类型、最小值和最大值、是否允许为空,以及定义它的对象元数据文件;可查询一个版本或所有版本...
gamedata_changelog只读逐字段比较两个版本的对象数据。按对象元数据文件分组,报告新增、移除、类型更改或最小值/最大值发生变化的字段...
gamedata_coverage只读按每个模式文件夹列出一行,显示版本、所属时期和所含部分(对象、触发器、脚本、枚举),以及字段和原生函数数量,方便...
gamedata_enum只读根据版本的 UnitEditorData.txt,报告某个枚举型对象字段允许的所有值;可查询一个版本或该字段存在的所有版本...
gamedata_export_schemas写入导出模式数据集。将每个模式文件夹复制到目标目录;如果 out_path 以 .zip 结尾,则将整个数据集打包为一个 zip,便于...
gamedata_field_lookup只读在一个版本或所有版本中,查找显示名称包含查询词的对象字段代码。每个匹配项均报告代码、显示名称、类型和版本。
gamedata_history只读报告某个名称在所有已记录版本中是否为对象字段代码、原生函数、类型、全局变量或函数。列出每种类型出现的所有版本...
gamedata_schema_diff只读比较两个模式文件夹(由 gamedata schema 生成),报告新增、移除和更改的对象字段、触发器函数、脚本类型和原生函数...
gamedata_sources只读返回数据集的来源索引。对每个模式文件夹,报告版本、所属时期、包含的部分、每个部分文件的 SHA-256,以及...
hero_install写入将英雄定义安装到地图并将结果保存到 out_path。重新映射可能发生冲突的 rawcode,写入英雄资源,并报告目标...
hero_lint只读安装前验证英雄定义文件夹:资源是否存在且哈希匹配、对象能否安装、声明的脚本函数是否存在,以及是否存在悬空...
hero_roster只读列出地图登记的可玩英雄,包含每个英雄的 rawcode、显示名称、登记调用中的字符串标签(通常是职责和头像...)
imports_list只读将地图的导入表(war3map.imp)与归档实际包含的内容对照,以便找出表中有记录但没有对应文件的条目,以及未列入表中的文件...
leak_ab只读比较两个 wc3watch 会话,报告句柄和内存增长趋势是否下降;两者均基于各自强制垃圾回收的数据测量。通常的模式是...
leak_benchmark只读对一组综合地图运行泄漏检测;每张地图都注入一种已知创建器类型的泄漏,并提供一个干净对照,报告真正例和假...
leak_harness写入使用地图自身的语言(jass 或 lua)生成一个简短的地图内测试脚手架,在短计时器上驱动指定的高频泄漏候选项,以便运行时句柄和内存...
leak_join只读将地图的静态泄漏列表与 wc3watch 会话文件夹关联。读取 samples.csv 和 events.csv,并根据会话的强制垃圾回收数据拟合句柄和内存增长趋势...
leak_list只读按排名列出地图脚本中的静态句柄泄漏,以及产生泄漏的定时器和触发器;还会列出每个函数中的所有高频泄漏目标。只读,...
leak_model只读报告地图导入模型和纹理的模型级泄漏及浪费,并关联模型审计与导入表。查找导入的...
library_audit只读对文件夹中的每张地图运行行为审计,并按地图报告发现、按检查项汇总总数,从而按问题严重程度对整个资源库进行排序...
library_compare只读按文件名和内容哈希比较两个地图文件夹,列出仅存在于第一个文件夹、仅存在于第二个文件夹以及两者之间已更改的地图,还包括...
library_report写入为文件夹中的地图生成一份 Markdown 报告,包含摘要行、逐地图表格和汇总发现,并写入 out_path。报告基于相同...
library_scan只读通过加载器打开文件夹中的每张地图,并逐张报告其字节大小、已知时的目标版本、能否加载、归档条目数...
library_validate只读对文件夹中的每张地图运行加载验证,并列出验证失败的地图及原因。无法打开的地图视为无效。打开一张地图...
lint只读对地图进行预检:脚本能否编译、war3map.imp 是否与归档内容一致、引用的资源路径是否有效,以及每个条目是否可加载...
lint_baseline写入将地图当前的 lint 发现写入基准 JSON 文件。之后运行门禁 CLI 'lint --baseline ' 时,仅当发现内容与此文件...时才失败。
list_files只读列出地图归档的内部文件,每项包含名称(null 表示未命名/受保护条目)、字节大小、wc3ctl 是否能识别/解析其格式,以及...
map_compat只读检查 Warcraft III 地图与目标版本(模式文件夹路径或版本名称)的兼容性。报告编译时不兼容问题(缺失的原生函数、全局变量、类型...
map_info只读显示 Warcraft III 地图的元数据:名称、作者、玩家数量、可玩区域尺寸和加载诊断信息。
map_info_get只读读取地图中可编辑的场景字段(war3map.w3i):名称、作者、描述、推荐玩家数、地形、环境、雾效和地图选项标记...
map_info_set写入设置场景字段,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。可编辑字段:MapName|Author|Description|RecommendedPl...
map_optimize写入一次性缩小地图中的所有导入模型和纹理,并将新地图写入 out_path;只替换这些文件,其他所有内容均逐字节保留...
map_overview只读一次调用概览一张地图:元数据(名称、作者、玩家数量、尺寸)、所有归档文件、按 Object Editor 类型划分的自定义或已修改对象数量,以及...
mcp_audit_annotations只读审计 MCP 工具自身的接口。报告所有注释与名称不一致的工具(例如修改类名称却标记为只读),以及所有声明...
mcp_export_verify只读验证 wc3-mcp 检出内容是否与此代码库中 server 源脚本相同,即运行 export-wc3-mcp.py 会导出的内容,并报告每个不一致的文件及...
model_audit只读审计 .mdx 或 .mdl 模型,找出优化器可移除的资源浪费和无绘制内容问题,并报告模型包含的内容。查找重复纹理、几何...
model_export_obj写入将地图导入的模型导出为 Wavefront OBJ 并写入 out_path,同时在旁边写入 MTL 和可从地图解析并转换为 PNG 的纹理。绝不修改地图本身...
model_import写入将外部模型文件导入为 Warcraft III MDX,并写入 out_path。支持 Wavefront OBJ(.obj)、glTF 2.0(.gltf 和 .glb)、STL(.stl,二进制和 ASCII)、PLY(...
model_lod写入为 .mdx 或 .mdl 模型生成细节层级链,对每个 ratio 运行一次优化器,在 out_dir 中为每个比率写入一个简化后的 MDX。ratios i...
model_optimize写入使用二次误差度量简化 .mdx 或 .mdl 模型的几何体,移除零面积面和重复纹理,并在 out_path 写入更小的 MDX,...
mpq_add写入将磁盘文件添加或替换为一个内部归档文件,逐字节保持内容不变。报告名称是新增还是替换,以及负载是否完整...
mpq_bytes_diff只读按名称逐条比较两个归档。对于两者均存在的每个名称,报告负载的 SHA256 是否匹配,并列出仅一侧包含的名称...
mpq_extract_all写入将地图归档中的每个条目提取到目录,包括未命名的受保护数据块,并使用与 'extract' 相同的路径安全规则。对归档只读...
mpq_listfile只读分三部分报告归档的 listfile 覆盖情况:归档自带 listfile 中列出的条目、通过标准名称探测恢复的条目,以及...
mpq_merge写入将两个地图归档合并为一个,收集双方所有可读取且有名称的条目。同名条目由优先侧决定,并作为冲突报告。写入...
mpq_name_recover只读使用候选名称字典查询归档哈希表,并报告命中未命名数据块的名称。范围小于 deprotect_map,后者会...
mpq_rebuild写入从头重建地图归档,生成一个健康的归档,重新放入每个可读取条目,并丢弃保护机制导致无法读取或没有名称的数据块。R...
mpq_remove写入通过重建归档并移除指定内部文件来删除它,并报告重建是否确实移除了该名称。写入副本,绝不修改输入地图...
mpq_strip_bookkeeping写入保存地图副本,移除 (listfile) 和 (attributes) 管理条目,然后确认副本仍可打开。绝不覆盖输入地图...
mpq_verify只读打开地图归档中的每个条目并读取至末尾,报告读取失败的条目及错误信息,并汇总数量。用于确认归档...
new_map写入在 out_path 创建一张空白且可由 World Editor 打开的地图(.w3x)。无需输入地图。返回写入位置。
object_bulk_set写入为符合所有 where 条件的指定类型对象批量设置一个字段,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。where...
object_clone写入在新 rawcode 下深度克隆地图对象,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。克隆会复制源对象的字段...
object_deprecated只读列出目标版本的模式未定义、但地图仍在设置的对象字段;这意味着该版本会忽略这些编辑。只读。目标是一个模式...
object_export只读将一种类型的对象(游戏原始数据叠加地图差异)导出到 out_path 中的 CSV 文件,每个对象一行,每个字段代码一列,...
object_field_options只读一个对象数据字段的合法值,取自游戏原始数据对此字段实际使用的值。对枚举字段调用 object_set...前请先调用此工具,以便...
object_form只读以可编辑的 FORM 形式获取对象,而非平铺的字段转储:字段按照 World Editor 的分组方式分组并排序(Art、Combat、Stats 等),...
object_get只读获取对象合并后的字段(游戏原始数据叠加地图差异),并为每项标记 'base' 或 'map',且解析字段名称。省略 kind 可自动检测...
object_import写入将一种类型的 CSV 导入回地图,为地图尚未定义的对象添加数据,并更新已定义的对象,然后将编辑后的副本保存到 out_path。绝不...
object_list只读列出地图中指定 Object Editor 类型的自定义/已修改对象:rawcode、基础 rawcode(null 表示从头创建)和解析后的名称。传入 brief true 可...
object_migrate写入将地图对象数据改写为目标版本的字段集合,移除目标版本未定义的所有字段,并将编辑后的副本保存到 out_path。绝不...
object_new写入基于一个基础 rawcode 创建新的自定义对象(自动分配未使用的 rawcode),并将编辑后的地图保存到 out_path。绝不...
object_noop_fields只读列出地图值与游戏原始值相同的对象字段,这些编辑不会造成任何变化。只读。需要 game_dir 提供原始值;没有它...
object_rawcode_suggest只读为一种 Object Editor 类型推荐可用的四字符 rawcode,确保与地图对象及游戏原始数据都不冲突。只读。若没有游戏...
object_rename写入重命名对象 rawcode,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。设为 rewrite_refs true 时,会重写所有对象数据字段值...
object_search只读在所有自定义或已修改对象的字段值中进行全文搜索,范围包括游戏原始数据和地图自身的差异。只读。报告类型、raw...
object_set写入设置一种 Object Editor 类型对象的字段,并将编辑后的地图保存到 out_path(只重新序列化该类型对应的 war3map.* 文件)。绝不...
palette_doodad只读列出地图中可放置的装饰物类型——调用 place_doodad 前应查询的调色板。合并游戏原始装饰物目录(已安装的 GameData)与地图...
pathing_export_png写入将地图的 war3map.wpm 寻路网格渲染为颜色编码的 PNG 并写入 out_path,每个像素对应一个寻路单元格,旁边附带寻路标记图例。只读,...
pathing_import_png写入根据颜色编码的 PNG 设置寻路标记,并将编辑后的地图保存到 out_path。每个单元格的标记都会替换为其像素解码得到的值。图像...
pathing_paint写入使用圆形或方形笔刷绘制寻路位,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。标记(逗号分隔):Wa...
pathing_validate只读标记地图 war3map.wpm 中的寻路问题。报告被可通行地块完全包围的不可通行区域,以及位于不可通行...上的起始位置。
place_doodad写入在地图装饰物图层(war3map.doo)的 (x, y) 位置放置一个装饰物实例,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图——out...
place_grid写入以 rows x cols 网格的形式放置一种单位或装饰物类型的多个副本,并将编辑后的副本保存到 out_path。网格以地图原点为中心。绝不...
place_item写入在世界坐标 (x, y) 放置指定类型的预置物品,并将编辑后的地图保存到 out_path。物品与单位共用 war3mapUnits.doo(WC3 会生成地面物品...)
place_region写入在地图区域图层(war3map.w3r)上定义矩形区域,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图——out_path...
place_scatter写入在确定性的随机位置放置 N 个指定类型的单位副本,并将编辑后的副本保存到 out_path。位置均匀分布在指定区域内或整张...
place_start_location写入在世界坐标 (x, y) 放置或移动玩家的起始位置,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。起始位置...
place_unit写入在世界坐标 (x, y) 放置一个由指定玩家拥有的指定类型单位,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。返回...
placed_doodad_get只读按创建编号显示一个已放置装饰物的完整状态:类型、位置、旋转、缩放、变体和生命值百分比。
placed_doodad_remove写入移除地图上已放置的装饰物,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。
placed_doodad_set写入设置地图上已放置装饰物的一个字段,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。位置字段使用 'x...
placed_doodads_list只读列出地图上已放置的所有装饰物和可破坏物(war3map.doo),每项包含编辑或移除所需的创建编号,以及类型 rawcode...
placed_fix_refs写入删除(或使用 to_rawcode 重写)引用缺失 rawcode 的放置对象,并将编辑后的副本保存到 out_path,同时报告每项更改。若...则拒绝。
placed_missing_refs只读列出 rawcode 未在地图对象数据或游戏原始数据中定义的放置对象。若未指定 game_dir,则只能检查地图对象数据...
placed_stats只读按 rawcode 和类型统计地图上已放置的单位和装饰物,并在可用时显示每种类型解析后的名称。只读。
placed_unit_get只读按创建编号显示一个已放置单位的完整状态:类型、所有者、位置、朝向、缩放、英雄等级和属性、生命值和魔法值百分比、黄金...
placed_unit_remove写入移除地图上已放置的单位,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。
placed_unit_set写入设置地图上已放置单位的一个字段,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。位置字段使用 'x,y...
placed_units_list只读列出地图上已放置的所有单位(war3mapUnits.doo),每项包含编辑或移除所需的创建编号,以及类型 rawcode、所有者、位置...
player_list只读列出地图的玩家槽位(war3map.w3i):每位玩家的 ID、名称、颜色、种族、控制者,以及起始位置是否固定。
player_set_color写入设置玩家队伍颜色,并将编辑后的地图保存到 out_path。war3map.w3i 不包含单个玩家的颜色字段,因此会重写地图脚本中的 SetPlayerColor 调用...
player_set_force写入将玩家移入一个队伍(团队),并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
player_set_name写入设置玩家的显示名称(war3map.w3i),并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
player_set_race写入设置玩家的种族(war3map.w3i),并将编辑后的地图保存到 out_path。接受的值:human、orc、undead、nightelf 和 random。绝不...
port_deps只读报告 rawcode 的完整依赖闭包,包括按类型分组的对象、带字节大小的资源、显示字符串和脚本函数...
port_into_version写入移植一个单位,然后将结果降级到目标版本的模式。移除该版本未声明的对象字段,并移除该版本不支持的脚本标识符...
port_preview只读试运行并精确列出将 rawcode 移植到目标地图会新增或更改的内容,不写入任何内容。使用与 port_unit 相同的代码路径,因此预览与...
port_unit写入将单位(其自定义对象依赖闭包、导入资源、字符串,以及尽力解析的 JASS 触发器依赖闭包)从源地图移植到目标地图,并自动重新映射...
quickstart只读根据宽泛的请求推荐合适的工作流。返回地图任务通常涉及的十种核心工作流(检查、port-hero、reforged-3-fix、black-portrait...
region_create写入根据西南角 (x, y) 及宽度 w 和高度 h 创建矩形区域,并将编辑后的地图保存到 out_path。绝不...
region_list只读列出地图的矩形区域(war3map.w3r),每项包含创建编号、名称和边界。使用 place_region 添加区域。
region_remove写入按名称移除区域,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
region_to_rect只读将一个命名区域解析为 JASS 触发器 Rect 调用所需的四个角点值(left、bottom、right、top),并提供可直接复制的 Rect(...) 行。只读。
region_validate只读标记地图 war3map.w3r 中重叠、面积为零和超出可玩区域边界的区域。仅共享边缘的区域不会被视为重...
render_model写入将对象模型(地图导入的 .mdx/.mdl)渲染为 PNG 并写入 out_path。返回保存路径和字节大小;较小的图像还会以内嵌形式返回为 M...
repair_generated写入修复由 wc3ctl 自身生成的地图:如果其中的预置英雄辅助代码块不足以容纳已安装英雄,则修复并将地图保存到 out...
replay_diff只读比较两场已记录的游戏(.w3g)。报告地图是否相同、时长差异,以及按玩家槽位统计的每位玩家离开时间差异。只...
replay_find_map只读报告录像(.w3g)中记录的地图路径,以及该地图文件是否存在于 Maps 文件夹中,并解析 .w3x 或 .w3m。默认文件夹为用户的 Documents...
replay_players只读一场已记录游戏(.w3g)的逐玩家表格。报告名称、槽位、结果、离开时间和离开原因。此录像解析器不包含队伍和种族...
replay_stats只读一场已记录游戏(.w3g)的汇总统计。报告时长、玩家人数、记录中包含的每位玩家每分钟操作数,以及断线...
replay_summary只读读取已记录的游戏(.w3g),并报告每场游戏的地图、时长、玩家,以及每位玩家离开的方式和时间。任何玩家以结果 0x01 离开的游戏即...
replay_timeline只读一场已记录游戏(.w3g)的有序事件列表。报告游戏开始、每条聊天记录、玩家离开及原因,以及游戏结束时间。只读。
roundtrip只读验证地图经过加载和保存后是否逐字节保持不变。任何发生变化的文件都表示此工具集无法忠实重现它,提前了解这一点很有...
script_api_usage只读列出地图脚本使用但目标游戏版本未声明的原生函数和函数,即移植时的编译阶段检查。使用与兼容性...相同的模式成员关系。
script_callgraph只读列出地图 war3map.j 中声明的函数之间的调用边,方向为调用者到被调用者。只包含此脚本声明的函数之间的调用,因此原生...
script_check只读检查地图脚本中的错误,找出导致地图无法加载的问题,支持 war3map.j 或 war3map.lua。Lua 按照 Lua 5.3 进行精确检查,与 luac 5.3.6 的行为一致,并提供行号和...
script_complexity只读统计每个函数的圈复杂度,计算其函数体中的 if、loop、and 和 or 分支关键字数量;按复杂度从高到低排序并标注行号。用于回答...
script_conversion_notes只读列出 JASS 转 Lua 转换器使用的规则及其差异;每种语法结构一行,包含 JASS 形式、生成的 Lua 代码,以及运行结果是否相同...
script_decompile写入将地图中所有以预编译 Lua 5.3 字节码形式提供的 Lua 条目(war3map.lua 或其依赖模块,YDWE 地图中常见)还原为 Lua 源代码...
script_duplicate_bodies只读查找归一化后函数体相同的函数,忽略注释、空白和局部变量名。复制的函数会增加维护风险;修改其中一处...
script_format写入重新打印 Lua 地图脚本,并将地图保存到 out_path。pretty 格式会保留注释并缩进;canonical 格式则采用固定形式,以便比较两个版本。结果...
script_functions只读列出地图编译后脚本中声明的每个函数,以及其起始和结束位置。可容忍不同缩进,因此能找到简单逐行扫描可能遗漏的声明...
script_leaks只读查找地图 war3map.j 中的句柄泄漏(创建后未销毁的位置、组、队伍、特效、计时器、文字标签、闪电和触发器),并按...排序。
script_lua_api只读列出 Lua 脚本调用但目标游戏版本未声明的原生函数和函数。使用与兼容性检查相同的模式成员关系测试,并...
script_lua_check只读解析地图中的每个 Lua 文件,并报告语法错误的行号和列号,方式与 luac 5.3 拒绝这些文件时相同。比 script_check 检查范围更广,后者只解析...
script_lua_globals只读列出 Lua 地图定义的全局变量、各变量的读写位置,以及只写不读的全局变量。这是 script_unused_globals 的 Lua 对应工具,...
script_lua_leaks只读查找 Lua 地图脚本中的句柄泄漏。Lua 会回收包装对象,但引擎仍持有句柄;因此作为语句丢弃的创建器、在每次...上创建的创建器
script_lua_to_jass写入尽力将 Lua 地图转换回 JASS,并保存到 out_path。JASS 转 Lua 通常无法逆转,因此只转换地图...支持的语法结构。
script_modernize写入在存在已知映射时,将地图脚本中过时或重命名的原生函数改写为目标版本使用的名称,并将地图保存到 out_path。重写...
script_null_locals只读查找经典 JASS 句柄泄漏:句柄类型(location、group、force、effect、timer、trigger、text tag、lightning)的局部变量,而函数会将其销毁...
script_reachable只读列出从地图脚本入口点 main 和 InitTrig 函数可到达的函数,以及没有任何路径到达的死函数,并为每个函数提供其声明...
script_references只读查找地图编译后脚本中对某个名称的所有用法:直接调用,以及将其作为代码值传递的位置(Condition、Filter、TriggerAddAction)。脚...
script_semantic_diff只读逐行比较两个地图脚本,先规范化空白、删除注释并忽略局部变量的纯重命名,再报告实际变化...
script_to_lua写入将 JASS 地图转换为 Lua 地图并保存到 out_path。脚本会变为 war3map.lua,并保留 Lua 不具备的 JASS 规则(32 位整数回绕、整数...)
script_unused_functions只读查找地图 war3map.j 中声明但没有其他函数调用、也没有其他路径到达的函数;排除引擎入口点(main、config、InitC...)
script_unused_globals只读查找地图 war3map.j 中声明但从未读取的全局变量,这是死代码中的变量部分。只被赋值、从不出现在正确...的全局变量
search只读在地图内容中不区分大小写地搜索字符串:归档文件名、脚本行(包含行号)、字符串表条目和对象数据(自定义...
sound_add写入将新的音效定义(以名称为键)添加到地图音效目录,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
sound_list只读列出地图音效目录(war3map.w3s):每个定义的名称、文件路径、声道、标记、音量、音调、优先级以及最小/最大距离。
sound_optimize写入解码音频文件、重采样到目标采样率(默认 22050 Hz)、可选设置声道数并重新编码,以缩小音频文件。格式来源...
sound_remove写入从地图音效目录中移除音效定义,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
sound_set写入设置音效定义的一个字段,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。可编辑字段:Name|File|Eax|Volume|Pitch|...
strings_diff只读比较两张地图的字符串表(war3map.wts),报告新增、移除和更改的条目。按 ID 匹配条目,因此同一键上的文本更改...
strings_find只读查找 war3map.wts 中包含指定文本的条目,不区分大小写,并返回每项的 ID。只读。空查询会匹配所有条目。
strings_list只读列出地图字符串表(war3map.wts)。对象数据和脚本中的每个 TRIGSTR_ 引用都会在此解析,因此可用它读取工具提示...
strings_missing只读列出地图脚本和 GUI 触发器树引用但 war3map.wts 中没有对应条目的 TRIGSTR_ 键。缺失的键会显示为原始令牌 TR...
strings_set写入设置一个 war3map.wts 条目的文本,或在该 ID 不存在时添加条目,然后将编辑后的地图保存到 out_path。保留文件本身的编码和换行符...
strings_unused只读列出没有被对象数据字段、地图信息字段、GUI 触发器或脚本行引用的 war3map.wts 条目,并显示各自的文本。只读。未引用的条目...
target_get只读查看当前目标版本设置:compat 或 lint 未提供 --target 时使用哪个版本,以及该设置来自哪里(选项、环境、设置...)
target_list只读列出 schemas 目录中的所有可用版本及其部分内容。使用 --full_only 跳过仅包含脚本的版本。
target_set写入设置 compat 和 lint 在未指定 --target 时使用的目标版本。会验证该版本是否存在于 schemas 文件夹中。
terrain_audit只读审计地图地形(war3map.w3e)的大小和可测量的浪费:网格和地块数量、使用中的不同地面和悬崖纹理、悬崖/斜坡/水域/...
terrain_blight写入在笔刷范围内设置或清除腐化(受污染地面)标记,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
terrain_cliff写入在笔刷范围内升高、降低或设置悬崖(阶梯地形)高度,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
terrain_corner_get只读显示一个地形角点的完整状态:地面高度、悬崖等级、水域、地面和悬崖纹理索引及其变体,以及斜坡、腐化、边界和...
terrain_corner_set写入设置一个地形角点的一个字段,并将编辑后的副本保存到 out_path。绝不会就地修改输入地图。对于区域操作,建议使用 terrain_deform、terr...
terrain_deform写入使用圆形或方形笔刷升高、降低、设置、平整或平滑地面高度,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
terrain_export_heightmap写入将地图地形高度导出为 16 位灰度 PNG,尺寸为 (Width+1)×(Height+1) 个角点,每个像素对应一个角点,写入 out_path。只读,地图...
terrain_fill写入在包含边界的矩形角点区域上应用地形工具,并将编辑后的地图保存到 out_path,而非一次只点按一个笔刷。角点可用...指定。
terrain_import_heightmap写入根据灰度 PNG 设置地形地块高度,并将编辑后的地图保存到 out_path。PNG 尺寸必须与地图角点网格完全一致,否则...
terrain_info只读地形网格角点范围,以及地图的地面和悬崖地块列表。角点的纹理字段是这些列表中的索引,因此请先读取...
terrain_optimize写入缩小地图的 war3map.w3e:移除地形从未引用的已声明地面和悬崖地块类型,并重新映射每个角点的地面和悬崖纹...
terrain_paint写入使用笔刷绘制地面纹理,并将编辑后的地图保存到 out_path。texture_index 选择地图地形表中的一个槽位。绝不会...
terrain_ramp写入在笔刷范围内切换斜坡(倾斜的悬崖过渡)标记,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
terrain_smooth写入平滑整张地图:每轮将每个角点的高度替换为其自身与网格内四个邻居高度的平均值,并将编辑后的地图保存到 out_path。绝不...
terrain_stats只读汇总地图地形(war3map.w3e):地块数量、地面高度的最小值/平均值/最大值,以及悬崖等级的最小值/最大值。只读。
terrain_water写入在笔刷范围内设置、升高、降低或移除水域,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
texture_atlas写入将两个或更多 .blp、.dds 或标准图像纹理打包到一张 2 的幂次方图集中,并以第一个输入文件的格式写入 out_path。每个输入都会被解码...
texture_optimize写入缩小 .blp、.dds 或标准图像纹理,使其最长边不超过指定值,同时保持宽高比,并以相同格式写入 out_path。绝不...
trigger_add写入在地图 GUI 触发器树中的某个类别内添加触发器,并将编辑后的地图保存到 out_path。新触发器创建时已启用且初始开启,符合...
trigger_add_category写入在地图 GUI 触发器树中添加类别,并将编辑后的地图保存到 out_path。类别是触发器树中的文件夹,因此始终安全:类别...
trigger_add_eca写入在 GUI 触发器中添加事件、条件或动作,并将编辑后的地图保存到 out_path。参数按函数声明顺序提供;任何剩...
trigger_catalog_describe只读显示一个 GUI 触发器函数的完整详情,可按名称查询(例如 'DoNothing'):类型、游戏版本、返回类型、参数类型、显示名称、参数布局和...
trigger_catalog_list只读从 World Editor 目录(UI\TriggerData.txt)列出 GUI 触发器函数,可按类型和/或名称、显示名称筛选。目录...
trigger_dead只读查找无法执行任何操作的触发器,并列出原因。包括没有动作的触发器,以及永远不会触发事件的触发器,例如依赖某个变量的事件...
trigger_diff只读比较两张地图的 GUI 触发器树,报告新增、移除和重命名的触发器,以及两张地图共有触发器中的事件、条件或动作更改...
trigger_export只读将地图的完整 GUI 触发器树导出为结构化输出。每个触发器都包含其名称、是否启用、是否初始开启、是否在地图初始化时运行的标记,以及其事件...
trigger_lint只读检查地图 GUI 触发器树中的三种结构错误:永远不会触发的触发器(没有事件且不在地图初始化时运行)、注册...的触发器
trigger_recover_from_script写入通过反编译游戏运行的编译后脚本,为没有任何 GUI 触发器树(war3map.wtg)的地图重建可浏览的触发器树,并将结果保存到 out_path...
trigger_remove写入从 GUI 触发器树中移除触发器项(类别、触发器或注释),并将编辑后的地图保存到 out_path。如果可能导致两个静默...,则拒绝操作
trigger_remove_eca写入按从零开始的位置从 GUI 触发器中移除一个事件、条件或动作,并将编辑后的地图保存到 out_path。位置可从 triggers_read...获取。
trigger_rename写入重命名 GUI 触发器树中的触发器项(类别、触发器或已删除的存根),并将编辑后的地图保存到 out_path。绝不...
trigger_set_code写入设置自定义文本触发器的自定义文本 JASS 函数体,并将编辑后的地图保存到 out_path。函数体会按字节级别写入 war3map.wct,替换...
trigger_set_eca_enabled写入启用或禁用触发器中的一个事件、条件或动作。这是 World Editor 按行切换的开关,不是整个触发器的开关;并将编辑后的...
trigger_set_enabled写入启用或禁用 GUI 触发器,并将编辑后的地图保存到 out_path。已禁用的触发器完全不会编译进地图脚本,因此可用此工具...
trigger_set_initially_on写入设置 GUI 触发器在启动时是否开启,并将编辑后的地图保存到 out_path。地图启动时关闭的触发器不会触发,除非之后有人将其打开...
trigger_set_run_on_map_init写入设置 GUI 触发器是否在地图初始化时运行,并将编辑后的地图保存到 out_path。绝不会就地修改输入地图。
trigger_to_script只读将地图的 GUI 触发器树(war3map.wtg)渲染为 JASS 风格文本,呈现方式类似 World Editor 的“转换为自定义文本”。只读,...
trigger_var_add写入在地图的 wtg 中添加全局变量,并将编辑后的地图保存到 out_path。需提供名称和类型(例如 integer、real、string、boolean、unit、group...)
trigger_var_list只读列出地图的全局变量(.wtg Variables 列表),每项包含名称、类型、数组标记、声明大小和初始值。只读。
trigger_var_remove写入按名称从地图的 wtg 中移除全局变量,并将编辑后的地图保存到 out_path。引用该变量的所有触发器都会失去目标...
trigger_var_set写入按名称更新地图 wtg 中已有的全局变量,并将编辑后的地图保存到 out_path。省略的参数保留当前值,因此只需设置一个字段...
triggers_read只读读取地图的 GUI 触发器树(war3map.wtg)、自定义文本函数体(war3map.wct)和脚本语言:每个类别、每个触发器及其事件...
uabi_profile只读一次性衡量多张地图的单位技能列表(uabi),每张地图一行:单位类型、引用、不同 ID、普通技能列表中的英雄技能和物品技能...
unit_abilities只读列出单位拥有的所有技能,并标注每项技能的来源。ObjectNormal 和 ObjectHero 是单位类型自身的列表(uabi、uhab)。Spellbook 位于...
validate只读检查地图的结构问题:文件缺失或为空、无法加载的条目,以及无法编译的脚本。检查范围小于 lint,是很好的第一步...
validate_strict只读执行更严格的 validate。在默认检查之外,增加三项过于严格、不适合作为默认检查的内容:地图没有 (listfile)、脚本未声明入口点...
version_info只读报告此构建中记录的产品版本、git 短哈希和 UTC 构建时间,以及所携带 MCP 服务的名称和版本。只读。

安全

写入工具要求 out_path 与输入地图不同。原文件 永远不会被覆盖。

限制

仅支持 Windows x64(原生 CascLib)。查询游戏基础数据的工具需要安装 Warcraft III Reforged。

故障排除

  • 先运行 wc3-mcp doctor。 它会显示 exe 的位置、旁边是否有 CascLib.dll、使用的 Warcraft III 文件夹,以及已配置的应用。
  • 未找到游戏。 运行 wc3-mcp install --all --game-dir "<your Warcraft III folder>", 或将 game_dir 传给工具。
  • 应用未列出这些工具。 完全重启应用。Claude Desktop 需要从系统托盘退出,而不只是关闭窗口。
  • 设置文件未更改。 文件包含注释或不是有效 JSON,因此程序改为打印需要粘贴的设置。再次运行 wc3-mcp config <app> 可重新打印。
  • 受保护的地图。 将 listfiles 传给 deprotect_map,以提供社区名称列表。

致谢

基于以下项目构建

库作者
War3Net (War3Net.Build, War3Net.IO.Mpq, War3Net.Drawing.Blp, War3Net.CodeAnalysis.Decompilers)Drake53 和贡献者
CascLibLadislav Zezula
CascLib.NETKizari
ImageSharpSix Labors 和贡献者
MCP C# SDK (ModelContextProtocol)Model Context Protocol 项目
Microsoft.Extensions.HostingMicrosoft、.NET Foundation

直接使用了:Luashine/jass-history(物品变化研究)、pjass(JASS 语法检查)、devoltz 和 Arakunido(SLK 修复指南),以及 Hive Workshop 社区(命令行参数)。

此外还参考了 HiveWE (stijnherfst)、Warsmash 和 Retera's Model Studio (Retera)、WC3MapTranslator (ChiefOfGxBxL)、Wurst、TheHelper 和 Hive Workshop 等许多项目。完整的研究项目和社区名单共计 197 项,见 CREDITS.md。

Warcraft III 由 Blizzard Entertainment 制作。本项目为非官方项目,与 Blizzard 无关联,也未获其认可;本项目会读取你自己的安装文件,不附带任何游戏文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。