地图管理
“地图管理”负责第三方地图文件的上传、下载、解析、切换和清理。地图文件最终会落到 left4dead2/addons/ 或游戏目录下对应位置。

地图列表
本地地图列表支持:
- 按文件名或战役名搜索。
- 读取 VPK 中的
missions/*.txt,显示战役名、章节数、章节代码和支持模式。 - 查看地图详情。
- 重命名地图文件。
- 删除单个地图或批量删除。
- 一键清空第三方地图。
- 对单个 VPK 执行资源精简。
上传地图
上传页支持拖拽或选择文件,常用格式包括:
.vpk.zip.rar.7z
大文件会走分片上传:每片 5MB,默认并发 3,单片超时 30 秒。进度达到 100% 表示文件分片已经传输完成,面板随后会显示“服务端处理中”,等待服务器完成分片合并、解压、资源精简和 VPK 检查;只有处理成功后,任务才会标记为完成。
分片传输中断时,文件项会显示具体原因并保留“继续上传”入口,前端会尽量复用已经上传的分片。初始化或服务端处理失败时同样会显示具体原因,但这类失败不能通过分片续传恢复。
管理员可以在“系统管理”中生成“仅地图上传”授权码。使用该授权码登录后会进入独立页面,只能使用同一套分片上传流程和地图热重载;上传成功的 VPK 仍会直接安装到服务器地图目录。
地图下载
下载任务支持后台运行,可在“地图下载”区域查看进度、取消、重试和清空任务。
支持的输入包括:
- 直接地图文件链接。
- Steam 创意工坊链接。
- Steam 创意工坊合集链接。
- 工坊 ID。
- QQ 闪传链接。
解析链接后,面板会展示可加入下载队列的文件项。下载完成后,如果开启了地图自动精简,会先尝试精简再安装。
QQ 闪传链接形如:
https://qfile.qq.com/q/xxxx在“地图管理”中点击“解析链接”,粘贴链接后解析,面板会展示分享中的文件列表,可勾选需要的文件批量加入下载队列。只有 .vpk、.zip、.rar、.7z 文件可以加入下载,其他类型会标记为不支持。
切换地图
地图切换依赖 RCON。可在首页快捷操作或地图相关选择器中选择地图章节,面板会发送切图指令,并可同时调整游戏模式和难度。
地图热重载
上传、删除、精简或重新打包地图后,正在运行的服务器不会自动感知磁盘变化。“热重载地图”通过 RCON 向服务器发送指令,在不重启的情况下重新扫描 addon 路径并重载任务定义。大部分地图文件变化会在此后被服务器读取;仅在地图生成或模式初始化阶段运行的脚本,仍可能要重新载入或切换地图才会执行。
在“地图管理”顶部点击“热重载地图”,确认后即可执行。默认指令为:
update_addon_paths; mission_reload管理员可点击按钮旁的齿轮图标打开“热重载地图设置”,自定义要执行的指令,留空则恢复默认。使用默认指令时只会更新游戏服务器的地图,投票插件的地图缓存不会被刷新,如需同时刷新,请自定义地图插件的更新指令。
“仅地图上传”授权用户也可以在独立上传页面执行热重载,但不能读取或修改热重载命令配置。
地图待办队列
地图管理页顶部的“地图待办队列”用于可视化管理 地图待办队列 插件。该功能依赖服务器已安装、加载并启用地图待办队列插件;如果服务器不识别 sm_mq 指令,弹框会提示先安装插件。管理员和普通临时授权用户可以使用全部队列功能,“仅地图上传”授权用户无权访问。
弹框会显示插件启用状态、当前游戏模式是否支持自动切图、运行状态、执行中地图和待执行列表。运行状态包括:
- “已停止”:队列尚未启动。
- “等待通关”:当前战役通关后开始执行队列。
- “执行中”:正在执行队列中的地图。
- “等待切换”:插件已进入切换前的延迟阶段。
- “已暂停”:当前队列地图仍在进行,但通关后不会自动进入下一项。
弹框底部提供紧凑的队列操作栏:
- “立即启动队列”会马上切换到队首地图;队列处于“已暂停”时则恢复当前战役的连续执行,不会再次切图。
- “立即启动队列”右侧的时钟按钮会等待当前战役通关后再开始执行,悬停时显示“通关后启动”。
- “暂停队列”会停止队列自动推进并保留未完成项。当前队列地图已经载入时会进入“已暂停”;尚未切入当前项或仅在等待时会回到“已停止”。
- “清空并停止”会清除执行中及全部待执行项,并停止队列。
执行中地图可使用“跳过当前”。没有执行中地图时不会额外显示“跳过队首”,可以直接删除待执行项。插件允许同一地图重复加入队列;删除某张地图时,会删除全部同名待执行项,确认框会同时显示同名项数量。
在“添加地图”标签中,可以从官方地图和服务器 VPK 战役章节缓存中搜索并选择地图。先选择“加入队尾”或“加入队首”,再点击某个章节的“添加”;每次只会添加一张地图。如果刚上传的地图提示不存在,请先在地图管理页执行“热重载地图”。
队列不会自动轮询刷新。每次打开弹框会读取一次最新状态,普通编辑操作成功后会使用接口返回的新状态;也可以随时点击“刷新”。“立即启动队列”或“跳过当前”触发换图后,服务器的 RCON 通常会短暂断开,因此面板只提示稍后点击刷新,不会立即再次连接。
注意事项
- 热重载会重新加载地图资源,地图较多时会占用 CPU 并影响正在游玩的游戏,建议避开游戏高峰期。
资源精简
地图精简适合服务器磁盘紧张或地图包体积过大的场景。详细规则见 地图资源精简。
VPK 风险检查
新上传或新下载的地图在最终落盘后会检查一次 VPK 内容。如果开启了自动精简,检查对象是精简完成后实际安装的 VPK;手动精简只有在成功替换地图文件后才会重新检查。
地图列表只显示需要注意的检查结果:
| Tag | 含义 | 点击后显示 |
|---|---|---|
| 红色“字典缺失 N” | 有 N 个 BSP 的 Pakfile 中没有 stringtable_dictionary.dct | 缺失字典的战役名、章节名和章节代码;无法关联战役信息时显示 BSP 路径 |
| 橙色“字典检测异常” | 有 BSP 无法读取,或其中的 Pakfile 无法解析 | 无法解析的 BSP 路径和错误摘要 |
| 橙色“存在全局脚本 N” | VPK 的 scripts/vscripts/ 根目录中存在 N 个会被游戏全局加载的 addon 脚本 | 脚本路径、大小和正文;每个脚本使用独立的折叠面板 |
| 红色“脚本覆盖 N” | VPK 中存在 N 个会覆盖全局武器或游戏模式配置的静态脚本 | 脚本路径、大小和正文;内容只读,不能编辑 |
字典检查会扫描 VPK 中的 maps/*.bsp,读取 BSP 的 Pakfile 并查找 stringtable_dictionary.dct。没有 BSP、所有 BSP 字典完整或尚未检查时,不显示字典 Tag。“字典缺失 N”只统计已经确认缺失的 BSP,不会把解析异常计入数量。
全局脚本检查只匹配 scripts/vscripts/ 根目录下的以下三个文件,路径匹配不区分大小写:
mapspawn_addon.nutscriptedmode_addon.nutdirector_base_addon.nut
普通 .nut、其他 *_addon.nut、子目录中的同名文件以及 BSP Pakfile 内的脚本不会触发该 Tag。这个提示表示地图包含全局自动执行脚本,不等同于已经确认脚本恶意;管理员可以点击 Tag 查看内容后自行判断。
没有匹配到上述脚本或尚未检查时,不显示全局脚本 Tag。
“脚本覆盖”检查匹配以下静态配置,路径匹配不区分大小写:
scripts/gamemodes.txtscripts/根目录下名称为weapon_*.txt的文件
这些文件不是可执行的 VScript,但 addon VPK 挂载后会按同名路径覆盖游戏配置,因此可能在其他地图继续改变武器属性、模型引用、备弹上限或游戏模式参数。子目录中的 weapon_*.txt、后缀不是 .txt 的文件和其他普通脚本不会触发该 Tag。
点击“脚本覆盖 N”会按需读取正文。弹窗支持 UTF-8 和 GBK,单个脚本最多显示 512 KiB,超出部分会提示已截断;弹窗始终只读,不提供保存或“限制战役”功能。静态 KeyValues 配置不能使用 Director.GetMapName() 的 if 条件安全隔离。
全局脚本正文也只在点击 Tag 后按需读取,不会保存在检查记录中。面板支持 UTF-8 和 GBK;单个脚本最多显示 512 KiB,超出部分会提示已截断,单个脚本读取失败也不会影响其他脚本。
管理员可以在脚本折叠面板中点击“编辑”。保存时会保留原来的 UTF-8/GBK 编码,把 VPK 重建到临时目录,校验脚本内容后再替换原文件,并自动重新生成风险检查记录。编辑接口使用地图版本校验;如果地图在打开编辑器后又被上传、精简、重命名或编辑,旧页面会拒绝覆盖并重新读取最新内容。
编辑单个脚本时可以点击“限制战役”,从服务器已安装的第三方战役中选择一个战役。面板会把该战役的全部章节 Code 生成到脚本最外层的 if 条件中,使脚本只在这些章节执行;生成的包装会直接显示在编辑框中。再次选择同一战役不会重复嵌套,更换战役会替换原限定,也可以点击“移除限定”恢复包装前的脚本正文。自动生成的限定标记如果被手动破坏,面板会停止自动修改并要求先检查脚本,避免误删正文。
当前在线编辑只支持 VPK v1 单文件地图。内容已截断、编码无法识别、VPK 使用多分卷布局或单个脚本保存后超过 512 KiB 时,面板不会写回。重打包失败会保留或恢复原文件。
“保存”只修改磁盘文件,不会自动让游戏服务器重新挂载 VPK;保存后请使用页面顶部的“热重载地图”。热重载不能撤销旧脚本已经产生的状态,也不能保证所有只在地图生成时执行的代码立刻重跑。需要确定脚本完整生效时,在热重载后重新载入当前地图或切换地图;仍有异常时再重启服务器。
风险检查仅用于告警,不会阻止上传、下载或精简。升级前已经存在的地图不会自动补扫,因此没有 Tag 也可能表示尚未检查;地图重命名、删除或清空时,对应检查记录会同步更新。
