补丁的主要内容围绕人质模式展开。人质现在是独立的 CSHostage 对象,地图能追踪它的每一步:从玩家开始扶起人质,到人质获救或死亡。
如果你只玩匹配模式,这次更新不会影响你的游戏体验:10 月 22 日的更新日志只有一个部分,MAP SCRIPTING。等创意工坊地图和自定义模式的作者更新脚本后,这些新功能才会用上。
人质不再只是个不会动的模型
CSHostage 新增了 IsBeingPickedUp、IsBeingCarried 和 IsRescued 方法。脚本可以据此判断人质是否正在被扶起、是否正被带走,以及是否已被带到救援点。GetRescuer 会返回救出人质的玩家,GetPickUpStartTime 和 GetPickUpFinishTime 则分别给出开始和完成扶起的时间。玩家对象也新增了 CSPlayerPawn.GetHostage,因此也可以从玩家一侧查询人质。
除了方法之外,更新还加入了事件,地图可以在事件发生时立即作出响应。
- 玩家开始扶起人质时,会触发 OnHostagePickUpStart。
- 扶起人质的动作被打断时,会触发 OnHostagePickUpAbort。
- 人质被扶起后,会触发 OnHostagePickUp。
- 人质被放下时,会触发 OnHostageDrop。
- 人质获救时,会触发 OnHostageRescue。
- 人质死亡时,会触发 OnHostageKill。
比如,地图作者可以在救出人质时奖励分数,或在特警抓住人质的瞬间触发恐怖分子基地的警报。
Console 和 GameRules 接手了 Instance 的部分功能
Valve 新增了两个顶层模块。Console 集中处理控制台变量。脚本可以按需读取不同类型的值(GetConvarBoolean、GetConvarNumber、GetConvarString、GetConvarVector、GetConvarQAngle、GetConvarColor),也可以通过 SetConvar 写入。SetConvar 不受 sv_cheats 限制,并且会同步执行,也就是说,新值从脚本的下一行开始就会生效。
| 之前 | 现在 |
|---|---|
| Instance.Msg | Console.Log |
| Instance.ClientCommand、ServerCommand、RegisterCheatCommand | Console 中的同名方法 |
| Instance.IsWarmupPeriod、IsFreezePeriod、IsTeamIntroPeriod | GameRules 中的同名方法 |
| Instance.GetRoundsPlayed、GetRoundRemainingTime、SetRoundRemainingTime | GameRules 中的同名方法 |
| Instance.AddTeamMoney | GameRules.AddTeamMoney |
GameRules 还新增了专属方法。StartWarmup 和 EndWarmup 用于开始和结束热身,GetTeamScore 和 AddTeamScore 用于读取和修改队伍分数,TerminateRound 则会结束回合。地图脚本现在可以自行决定何时结束回合。
旧名称暂时仍可用,但已标记为弃用。改名只是机械替换,趁项目里调用还不多,最好提前迁移。
脚本可以检查所有玩家是否都已加载资源
Instance.Precache 会返回一个 CSPrecache 对象。IsServerLoading 和 IsServerLoaded 用于检查服务器端资源是否正在加载或已经加载完成,IsClientLoading 和 IsClientLoaded 则检查客户端的状态。IsLoadedForAll 用来确认所有玩家是否都已加载完成。不再需要资源时,可以调用 Release 释放它。
界面、雷达与修复
补丁的其他内容是一些小幅调整和修复。自定义界面布局(custom_hud_layout)新增了两个顶层类:HUD_TEAMMENU_VISIBLE 和 HUD_CHAT_VISIBLE。布局可以据此在队伍选择菜单或聊天框打开时切换。现在,radar_element 在所有模式下都会显示在雷达上,不再只限于 Rush。
- 即使传入 CSTeamMoneyReason.NONE,GameRules.AddTeamMoney 也不会再导致游戏崩溃。
- CSTeamMoneyReason 和 CSWeaponAttackType 的枚举值现已与 point_script.d.ts 中的类型说明一致。
- CSRadarPoint.IsVisibleToTeam 和 CSObservablePoint.IsObservableForTeam 现在返回布尔值,而不是数字。
- 日志警告现在会显示 JavaScript 调用栈,以及无效参数的详细信息;参数编号从 0 开始,而不是从 1 开始。
- Convar
- 游戏控制台变量,例如服务器或客户端设置,可以读取和修改。
- sv_cheats
- 服务器设置;缺少它时,部分控制台指令会被禁用。
- Precache
- 在模型、音效等资源投入使用前,提前将它们加载好。
指南















