War3 Rect Edit
War3 Rect Edit 是一个面向 Warcraft III LNI 地图的 VS Code 工具,用于在编辑器内查看地形、管理矩形区域和逻辑点。
功能
- 读取并渲染
map/war3map.w3e 三维地形。
- 优先使用地图项目中的地形资源,找不到时再从配置的魔兽目录读取原生资源。
- 只读预览地图中的装饰物和可破坏物。
- 读取和写入
map/war3map.w3r 矩形区域。
- 在区域页签中创建、移动、缩放和删除矩形区域。
- 在点页签中创建、移动和删除逻辑点。
- 拖动点位时,自动识别 500 码内的其他点和矩形四角;X/Y 方向进入 50 码范围后吸附,并在蓝色/橙色对齐虚线中显示对象间距标尺。
- 使用
Ctrl+Z 撤销、Ctrl+Y 前进,最多保留 10 步历史。
- 使用
Ctrl+C 复制选中的点或区域,Ctrl+V 后移动鼠标预览、单击放置,按 Esc 取消放置。
- 粘贴多个对象时可选择 实例 或 普通:实例粘贴会把副本与源对象绑定,之后移动任意一侧,另一侧都会跟着移动,两组的相对位置保持不变。
- 粘贴时可以勾选 镜像,并选择
左右 或 上下;副本会按该方向翻转,实例联动时的移动方向也随之镜像。选中的对象如果有联动副本,副本会用青色虚线圈标出。
- 对带实例关联的对象单击右键(不拖动)会弹出菜单,可 解除实例关联;链接断开后对象留在原位,操作可用
Ctrl+Z 撤销。
- 实例关联会随保存写入工作区
.war3tool/instances.json,下次打开地图自动恢复联动。
- 在画布或列表里选中对象时,右侧列表会自动用 0.5 秒过渡把该行滚进可视区;已经在可视区内的行不会引起任何滚动,手动滚动会立刻接管。
- 将逻辑点导出为 Lua 文件,导出路径可在设置中配置。
- 魔兽争霸 III 路径留空时,自动读取 Windows 注册表中的安装路径。
文件结构
插件按 LNI 地图的标准目录读取文件,不会要求移动或重命名原始文件:
地图根目录/
├─ map/
│ ├─ war3map.w3e
│ ├─ war3map.w3r
│ └─ 其他地图文件
├─ resource/
├─ table/
└─ *.w3x
点位数据默认保存到 VS Code 工作区根目录的 .war3tool/points.json,用于下次打开地图时恢复点位;首次写入区域时还会在工作区 .war3tool/ 保存 war3map.w3r.before-war3-map-tools.bak 原始备份。Lua 默认导出到工作区 .war3tool/points.lua,也可以在设置中改为其他相对或绝对路径。地图目录中已有的旧 .war3tool/points.json 仍会兼容读取。
实例关联的存储
实例粘贴建立的联系记录在工作区的 .war3tool/instances.json,与地图和脚本读取的文件完全分开:
{
"version": 1,
"links": [
{ "source": "point:8f1c…", "target": "point:2d47…", "axis": "none" },
{ "source": "region:12", "target": "region:15", "axis": "horizontal" }
]
}
- 只记录拓扑关系(谁是谁的副本、是否镜像),不记录坐标。坐标仍然只在
points.json 和 war3map.w3r 里,所以文件不会因为拖动而反复重写,也不存在两份坐标不同步的问题。
axis 为 none / horizontal(左右)/ vertical(上下)。两个端点用与编辑器内部一致的 point:<id>、region:<index> 键标识。
- 关联的两端只要有一端不存在,该条记录会被自动丢弃;同一个副本也只会归属一个源对象。
- 没有任何关联时不会生成这个文件;删光所有关联后文件会被删除。写入过程不会改动
points.json、points.lua 和 war3map.w3r 的格式。
- 手改这个文件后重新打开地形视图即可生效;由于坐标不在其中,把某个对象在外部挪动后再打开,这组实例会以新位置为基准继续联动。
设置
在 VS Code 设置中搜索 War3 Rect Edit:
war3MapTools.warcraftPath:魔兽争霸 III 安装目录。留空时自动读取注册表。
war3MapTools.luaExportPath:点位 Lua 导出路径。相对路径基于当前地图根目录,也支持绝对路径;修改后无需重新打开地图,下一次导出立即使用新路径。
war3MapTools.textEncoding:区域名称和环境音字符串编码,中文地图通常使用 gbk。
使用方式
- 在 VS Code 中打开包含 LNI 地图的工作区。
- 单击地图根目录中的
.w3x 文件,使用 War3 LNI 地形与区域 编辑器打开。
- 在右侧的“区域”或“点”页签中选择对应模块。
- 使用页签内的按钮进入新建模式;再次点击按钮可返回编辑模式。
- 编辑后插件会自动保存,也可以点击“保存”立即写入。
更新日志
各版本的详细变更记录在 CHANGELOG.md,也可以在扩展详情页的 Changelog 标签中查看。
开源许可证
本项目使用 MIT License 开源。