自定义 HUD、cs_script 示例与插件信任调试更新(2026年8月27日)
小型 CS2 补丁,重点改进自定义 HUD 布局、cs_script 示例文档、插件信任调试,以及与每玩家 HUD 状态相关的少量客户端/服务器内部调整。
快速摘要
- 已扩展 `cs_script_demo` 的自定义 HUD 布局文档与示例,并提供更清晰的 Panorama 自定义游戏 HUD 搭建步骤。
- Hammer 中的 `custom_hud_layout` 实体现在有更清晰的 `Layout` 字段名称与描述,便于地图作者接线 Panorama HUD。
- 新增内部调试控制台变量 `panorama_debug_treat_all_addons_as_untrusted`,用于测试插件处理与 UI 安全行为。
- 客户端与服务器关于每玩家 HUD 布局状态与消息目标的内部实现进行了轻微调整,暗示对自定义 HUD 支持的加强。
- `cs_script_demo` 插件文档经过润色,更新了示例地图引用并详述了 welcome HUD 示例的使用流程。
- Patch 和构建号已更新至 `1.41.7.8`,标记为一个新的 CS2 构建版本。
本次小幅 CS2 更新主要针对脚本化地图的自定义 HUD 支持、cs_script_demo 示例文档和创作者调试流程做了若干澄清与改进,同时对部分客户端/服务器内部实现做了轻微调整。
脚本化地图的自定义 HUD 布局
这一节集中说明如何在脚本化的插件与地图中使用自定义 HUD 布局,并提供更清晰的示例与步骤。
- 更清晰的 CustomHudLayouts 文档:
cs_script_demo示例及其point_scriptTypeScript 定义现在更详细地说明了为插件构建自定义 HUD 布局的方式:- 支持的 Panorama 面板类型有限,包含
Panel、Label、Image和Button,并明确列出可用属性,如id、class、hittest、text和src。 - 布局本身支持 CSS 样式(
.vcss资源),但明确不支持事件或布局内的客户端脚本。 - 文档通过
cs_script_demo插件中的一个具体示例说明:一个名为welcome_layout的custom_hud_layout实体会显示welcome.vxml布局并使用对应的 CSS 文件。
- 支持的 Panorama 面板类型有限,包含
- 实用的搭建指引: 给出了按步骤的连接说明,便于创作者将各部分串联起来:
- 将 Panorama 布局文件(实为
.vxml资源)放在插件的panorama/layout/custom_game下。 - 在地图中添加一个
custom_hud_layout点实体,并将其layout属性指向该.vxml。 - 使用放在
panorama/styles/custom_game下的 CSS 文件控制外观;示例中展示了一个dialog面板,其Dismissed类由cs_script文件(maps/scripts/setup.js)移除来控制显示逻辑。
- 将 Panorama 布局文件(实为
这些更改主要是文档和工具层面的改善,而非新增游戏功能,但能显著降低创作者在制作自定义 HUD 时的试错成本。
编辑器与实体标签改进
Hammer 编辑器用户和地图作者会发现针对自定义 HUD 实体的小幅但有用的调整,使在编辑器中操作更直观。
- 更友好的
custom_hud_layout字段显示: 在游戏的 FGD 定义中,custom_hud_layout实体的layout键现在有了更清晰的显示名("Layout")和描述:- 该字段被明确描述为 Panorama 布局资源,并说明了受支持的面板类型与属性限制。
- 这有助于关卡设计师在 Hammer 中快速理解所选项的含义,以及它如何与
cs_script的自定义 HUD 文档对应。
实际使用中,这应当能减少在地图中接线 HUD 布局时的混淆,尤其对遵循新的 cs_script_demo 示例的创作者更友好。
脚本化摄像机行为说明
对于尝试控制玩家视角的脚本作者,有额外说明澄清了摄像机对象的管理方式。
- 每玩家摄像机的说明:
point_script定义现在解释了用于控制玩家视角(且不移动其 pawn)的摄像机对象:- 每个
CSPlayerPawn最多存在一个此类摄像机对象。 - 当调用
CSPlayerPawn.GetCamera时,按需创建该对象。
- 每个
这并不引入新功能,但为脚本作者提供了更清晰的心智模型,避免误以为可以为同一玩家创建多个并行摄像机实例。
插件信任调试与 Panorama 行为
对 Panorama 与插件处理方式的一些细微底层调整,主要影响开发者、模组作者与调试流程。
- 新增插件信任调试控制台变量: 添加了一个隐藏的开发用控制台变量
panorama_debug_treat_all_addons_as_untrusted。- 明确标注为防御性调试选项,而非面向玩家的设置。
- 该变量可能用于让开发者模拟所有插件被 UI 系统视为“untrusted”,以测试在更严格的插件安全或沙箱下 CS2 的行为。
- Panorama 文件创建相关提示调整: 与禁止创建布局/脚本/样式文件相关的内部 Panorama 字符串已被精简。
- 内部日志中关于客户端“禁止”创建 Panorama 布局/脚本/样式文件的引用已移除。
- 这表明引擎在处理或报告这些情形时的信息更简洁,可能会影响开发工具或日志中错误与限制的呈现方式。
对普通玩家来说这些变化通常不可见,但对 UI 与插件开发者而言,可能会改变某些边缘情况的日志与调试表现。
客户端、服务器与 HUD 状态内部实现
一些小幅的内部变动触及客户端和服务器代码,尤其是关于 HUD 布局状态的跟踪逻辑。
- Custom HUD 布局状态的 schema 微调: 客户端和服务器的
CCSCustomHudLayoutStateschema 进行了调整,包含对CPlayerSlot m_playerSlot字段的更新。- 虽然在头文件列表中看起来像是无显著行为变化,但表明每玩家 HUD 布局状态的底层管线被重新审视过。
- 这有助于确保自定义 HUD 能在客户端与服务器之间正确同步到对应的玩家槽位。
- 新增内部过滤器: 在客户端和服务器端都出现了一个新的内部
OwningSlotOnlyRecipientsFilter。- 这可能影响某些消息或效果仅针对拥有者玩家槽位发送。
- 对自定义 HUD 或物品相关 UI 来说,有助于收紧消息的接收目标范围。
- 购买区提示字符串清理:
#SFUI_BuyMenu_NotInBuyZone字符串略作调整(移除了多余的控制字符),使该购买菜单提示在 UI 代码中更一致。
这些都是低层次的改动,但指向了团队在每玩家 HUD 正确性与消息路由方面的持续工作。
脚本示例与文档细节修整
cs_script_demo 插件及其 TypeScript 类型定义获得了多处用于学习参考的文档优化。
- 示例引用更新:
- 注释不再泛指
script_zoo.vmap,而是直接指向cs_script_demo示例插件及其cs_script_demo.vmap。 hello_cs_script示例被明确标注位于该演示地图中,便于新手创作者定位可运行的参考。
- 注释不再泛指
- CustomHUD 文档扩展:
- 将支持的面板类型和属性说明整理为更清晰的要点结构。
- 对
welcome示例布局与 CSS 如何交互提供了额外解释,包括setup.js中切换Dismissed类的说明。
这些更改不影响游戏行为,但能让官方示例成为社区创作者更靠谱的起点。
版本与构建号更新
最后,本次为例行的版本与构建刷新,标记为一个新的 CS2 补丁。
- 版本号更新:
ClientVersion与ServerVersion都已递增。PatchVersion从1.41.7.7提升到1.41.7.8。
- 源码修订与构建 ID 提升:
- 内部
SourceRevision与构建标识符被更新,表示游戏已生成新的编译构建。
- 内部
这些改动本身不表示具体的平衡或功能新增,但将脚本、UI 与文档改进打包为一个可发布版本。
总体影响
综上所述,此次更新对使用 CS2 脚本与自定义 HUD 系统的创作者而言是一小步但有意义的改进。普通玩家不会直接感知到重大前台变化,但创作者与创意工坊作者将受益于更清晰的示例、更友好的 Hammer 标签,以及针对每玩家 HUD 状态与插件处理的更稳健内部逻辑。未来的自定义模式与脚本化体验因此更容易且更安全地构建。
